Vous n'êtes pas identifié(e).
Pages :: 1
Bonjour à tous et toutes.
Je suis débutante en développement sur Bootstrap.
Je voudrais réaliser une FAQ.
Je me demande si c'est possible de faire une requête SQL et de mettre les résultats dans des div collapse.
Pour l'instant je remplissait les dic à la main mais comme je dois gérer de plus en plus de logiciels, c'est la galère de le faire manuellement.
Je vous donne le code que j'ai défait fait et tester.
Apparemment, la connexion à la base de données et Ok. Le problème est que l'écran est que les données se s'affichent pas.
Je vous mets ci-dessous le code bootstrap de la page php
Code php
<?php
$BDD_ADRESSE = "mysql:host=127.0.0.1";
$BDD_DBNAME = "faq";
$BDD_LOGIN = "root";
$BDD_PASSWORD = "";
try {
$bdd = new PDO("$BDD_ADRESSE;dbname=$BDD_DBNAME", $BDD_LOGIN, $BDD_PASSWORD);
} catch(Exception $e) {
exit('Impossible de se connecter à la base de données.');
}
$requete = "SELECT probleme, solution FROM problemes";
// exécution de la requête
$resultat = $bdd->query($requete) or die(print_r($bdd->errorInfo()));
?>
<section id="faq">
<div class="container">
<?php
$i = 1;
while($donnees = $resultat->fetch(PDO::FETCH_ASSOC)) {
?>
<div class="row">
<div class="col-lg-12">
<div class="panel-group" id="accordion">
<!-- Question -->
<?php echo htmlentities($donnees['probleme'], ENT_QUOTES, 'UTF-8'); ?>
<div class="panel panel-default">
<div class="panel-heading"><h4 class="panel-title"><a class="accordion-toggle" data-toggle="collapse" href="#collapseOne">Question <?php echo $i; ?></a></h4></div>
<!-- div de la Reponses -->
<div id="collapseOne" class="panel-collapse collapse">
<div class="panel-body">
<?php echo htmlentities($donnees['solution'], ENT_QUOTES, 'UTF-8'); ?>
</div>
</div>
</div>
</div>
</div>
</div>
<?php
$i++;
}
?>
</div><!-- <div class="container"> -->
</section>
Ici le code de ma table et quelques lignes
CREATE TABLE IF NOT EXISTS `problemes` (
`id_probleme` int(11) NOT NULL AUTO_INCREMENT,
`id_logiciel` int(11) NOT NULL,
`probleme` text NOT NULL,
`solution` text NOT NULL,
PRIMARY KEY (`id_probleme`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
--
-- Contenu de la table `problemes`
--
INSERT INTO `problemes` (`id_probleme`, `id_logiciel`, `probleme`, `solution`) VALUES
(1, 1, 'Problème impression de pdf', 'Vérifier qu''Adobe soit installé'),
(2, 2, 'Je n''arrive pas à demarrer easyphp quand skype est déjà allumé', 'Il faut démarré easyphp puis skype');
Je continue de chercher la solution.
Je vous remercie d'avance pour votre aide.
Hors ligne
Saluton Delphine,
As-tu vérifié, en affichant le source HTML, que tu passes bien à l'intérieur de ta structure while{} ?
Tu peux aussi faire un echo $i en sortie de while ça te donnerait déjà une première indication.
Le code présenté m'interpelle tout de même pourquoi ne pas utiliser les balises HTML sémantiquement adaptées (table, thead, tbody, tr, th, td ) au lieu de cette embrouillamini de <div> imbriquées ?
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Salut à tous
Je viens de voir que le code que j'utilise pour la connexion à la base de données pose problème.
Il n'y a pas de messages d'erreur, mais rien du tout de s'affiche.
try {
$bdd = new PDO("$BDD_ADRESSE;dbname=$BDD_DBNAME", $BDD_LOGIN, $BDD_PASSWORD);
} catch(Exception $e) {
exit('Impossible de se connecter à la base de données.');
}
Le problème du coup c'est qu je ne vois pas trop comment faire.
Sinon, pour répondre à votre question, si j'utilise des div collapse c'est parce je dois travailler sur Bootstrap et qu'il y a une centaine de questions.
Avec des div, ils ne verront les réponses que la réponses sur laquelle ils cliqueront.
Si je n'arrive vraiment pas à faire avec les div, j'utiliserai un tableau.
Je retourner à mon travail.
Merci et à plus tard
Dernière modification par Delphine (24-10-2014 03:44:55)
Hors ligne
Saluton Delphine,
Il faudrait que tu saches pourquoi la connexion est impossible. Pour cela, inspire-toi de cet exemple que j'ai pris dans le livre de Denis Popel (Learning PDO)
Pour ce qui concerne le motif du recours aux <div>s plutôt qu'aux balises sémantiques de tableau, permets-moi de rester sceptique. Avec les CSS et Javascript il est tout à fait possible d'obtenir ce type de rendu dynamique et interactif. Mais je ne connais pas Bootstrap et ses subtilités.
@+
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Bonjour Maljuna Kris
Je vais essayer de voir pourquoi la connexion ne sais pas et je tiens au courant.
Merci de votre aide.
Hors ligne
Bonjour
J'ai trouvé la solution.
Merci votre aide
Hors ligne
Saluton,
Nedankinde.
Mais ce serait sympa de nous en expliquer les tenants et les aboutissants, ça peut toujours servir à d'autres.
MK.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Bonjour
Après avoir fais plein de tests j'ai réussi à faire ce que je voulais.
<section id="faq" class="faq-logiciel1l">
<div class="section-header">
<div class="container">
<h2><i class="fa fa-question-circle"></i> Frequent Asked Questions CaisseXL </h2>
</div>
</div>
<div class="container">
<div class="row">
<div class="col-lg-12">
<div class="panel-group" id="accordion">
<?php
// c'est à partie d'ici que je devais faire la requête sql et remplir les div
try {
$sql = " SELECT id_probleme, id_categorie, nom, solution FROM problemes WHERE id_categorie = 401";
$results = $dbHandler->Query($sql);
//entrée dans la boucle
foreach ($results as $row) {
echo" <div class='panel panel-default'> "."\n";
echo" <div class='panel-heading'>"."\n";
echo" <h4 class='panel-title'>"."\n";
//pour chaque problème (et donc ici chaque div collapse) il doit y avoir une adresse unique, ici je récupéré au fait id du problème
echo" <a class='accordion-toggle' data-toggle='collapse' href='#collapse_" . $row['id_probleme'] . "'>"."\n";
//ici affichage du problème
// je mets utf8_encode pour pouvoir afficher les accents et apostrophe sans que çà pose des problèmes d'affichage
echo " " . utf8_encode($row['nom']) . "<br/>"."\n";
echo" </a>"."\n";
echo" </h4>"."\n";
echo" </div>"."\n";
//ici je doit récupérer l'id du problème
//si je ne le met pas, toutes les réponses auront le même id et quand on clique sur un problème c'est toujours la première réponse que s'affiche
echo" <div id='collapse_" . $row['id_probleme'] . "' class='panel-collapse collapse'>"."\n";
echo" <div class='panel-body'>"."\n";
//affichage de la réponse
// idem que pour les problèmes
echo " solution : " . utf8_encode($row['solution']) . "<br/>"."\n";
echo" </div>"."\n";
echo" </div>"."\n";
echo" </div>"."\n";
}
} catch(Exception $e) {
die("erreur");
}// fin de la boucle
?>
</div><!-- <div class="panel-group" id="accordion"> -->
</div><!-- <div class="col-lg-12"> -->
</div><!-- <div class="row">-->
</div><!-- <div class="container"> -->
</section>
Hors ligne
Pages :: 1