PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 23-10-2014 00:20:15

Delphine
Membre
Inscription : 21-10-2014
Messages : 18

Requête SQL et div sous bootstrap

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

#2 23-10-2014 07:22:02

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Requête SQL et div sous bootstrap

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

#3 24-10-2014 03:43:45

Delphine
Membre
Inscription : 21-10-2014
Messages : 18

Re : Requête SQL et div sous bootstrap

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

#4 24-10-2014 04:25:03

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Requête SQL et div sous bootstrap

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)

/<?php
/**
 * fichier d'inclusion commun de l'application
 * exemple gestion de bibliothèque avec PDO
 * @auteur Dennis Popel
 */
// Chaîne de connexion au SGBD utilisateur/motDePasse
$connStr = 'mysql:host=localhost;dbname=pdo';
$utilisateur = 'root';
$motDePasse = '';
/**
 * cette fonction affichera l'en-tête sur chaque page
 * y compris la balise d'ouverture html,
 * la section head et la balise d'ouverture body.
 * Elle pourrait être appelée avant tout affichage de
 * la page elle-même
 * @param string $titre le titre de la page
 */
function montreEntete($titre)
    {?>
<html>
    <head><title><?php echo htmlspecialchars($titre)?></title></head>
    <body>
        <h1><?php echo htmlspecialchars($titre)?></h1>
        <a href="livres.php">Livres</a>
        <a href="auteurs.php">Auteurs</a>
        <hr />
    <?php
    }
/**
 *  Cette fonction 'ferme' les balises body et html
 *  ouvertes par la fonction montreEntete()
 */
function montrePied()
    {?>
    </body>
</html>
<?php
    }
/**
* Cette fonction affichera un message d'erreur, invoquera
* la fonction montrePied() et terminera l'application
* @param string $message le message d'erreur
*/
function montreErreur($message)
    {
    echo "<h2>Erreur</h2>";
    echo nl2br(htmlspecialchars($message));
    montrePied();
    exit();
    }
// // Créee l'objet de connexion
try
    {
    $conn = new PDO($connStr, $utilisateur, $motDePasse);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }
catch(PDOException $e)
    {
    MontreEntete('Erreur');
    montreErreur("Désolé, une erreur s'est produite.
    Merci d'essayer plus tard.\n" . $e->getMessage());
    }

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

#5 25-10-2014 10:14:45

Delphine
Membre
Inscription : 21-10-2014
Messages : 18

Re : Requête SQL et div sous bootstrap

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

#6 30-10-2014 10:31:01

Delphine
Membre
Inscription : 21-10-2014
Messages : 18

Re : Requête SQL et div sous bootstrap

Bonjour

J'ai trouvé la solution.
Merci votre aide

Hors ligne

#7 30-10-2014 10:43:41

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Requête SQL et div sous bootstrap

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

#8 30-10-2014 22:14:32

Delphine
Membre
Inscription : 21-10-2014
Messages : 18

Re : Requête SQL et div sous bootstrap

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

Pied de page des forums