Bonjour a toutes et tous.
Je viens vous voir car je suis entrain de faire une liste déroulante.
Pour le moment, j'ai développer mon code source comme ceci :

<?php 
    include "./inclu/hgroupInclude.inc.php"; 

    $sql = 'SELECT * FROM bibliotheque WHERE id';
    $req = $db->query($sql);
    include "./inclu/menu.inc.php";

    $sqm = "SELECT * FROM bibliotheque WHERE id LIMIT 1";
    $raq = $db->query($sqm);
?>
<div class="corps">
<div class="choixBiblio">
    <hgroup class="hg_1_article">
        <h4>Vous pouvez visualiser notre bibliothéque virtuel</h4>
        <h6>Voici notre bibliothéque d'orchidée par ordre alphabétique</h6>
    </hgroup>

    <form action="" method="get" class="choixListeOrchidees">
        <select name="biblio" size="1">
        <?php while($d = $req->fetch(PDO::FETCH_OBJ)){ ?>
            <?php echo '<option value="' . $b->id . '">' . $d->nom . '</option>'; ?>
        <?php } ?>
        </select>
    </form>
</div>
<div id="affichageOrchi">
    <hgroup class="hg_1_article"><h4>Les familles d'orchidées</h4></hgroup>
    <?php
    while($b = $raq->fetch(PDO::FETCH_OBJ)){

        echo '<hgroup class="hg_biblio"><h3>Numéro : ' . $b->id . '</h3><h3>Familles des : ' . $b->nom . '</h3></hgroup>';
        echo '<h4 class="origine">Les orogine de l\'orchidée : </h4><p class="showOrigine">' . $b->origine . '</p>';
        echo '<hgroup class="hg_biblio"><h3>La température Minimum : ' . $b->temperatureMini . '</h3><h3>La température Maximale : ' . $b->temperatureMaxi . '</h3></hgroup>';
        echo '<div class="presentationOrchi"><img src="img/galerie/petitformat/' . $b->nomenclature . '.jpg" alt="Image' . $b->nomenclature . '" class="showPictureBilio" />';
        echo '<div class="miseEnPlaceLeft">';
        echo '<hgroup class="hg_biblio2"><h3>Présentation d\'un ' . $b->nom . ' </h3></hgroup><p class="descriptionBilio">' . $b->description . '</p>';
        echo '</div></div>';
        echo '<hgroup class="hg_biblio"><h3>Le prix : ' . $b->prix . '</h3></hgroup><br>';

    }
?>
</div>
</div>
<?php include("./inclu/footer.inc.php"); ?>

auriez-vous une idée comment je devrais faire correspondre ma liste a l'affichage des données dans la db.
Question que je me pose dois-je mettre un bouton submit pour appeler les données???.
C'est toujours au liste déroulante que j'oublie le code et que je me perd souvent dans mon codage.
Enfin bon on arrivera a les entrer une fois pour toute dans le ciboulot.
Je vous remercie d'avance pour vos réponse ou vos idées je prend tous.

Paphio-King

8 réponses


Glaived
Réponse acceptée

ATTENTION ce n'es pas:

<?php $_SERVER'PHP_SELF']; ?>

mais:

<?= $_SERVER'PHP_SELF'] ?>

(Tu peu mettre le ; mais le point-virgule n'es demande que si dans un bloc php, ta deux instructions, c'est comme le javascript(je crois) )

Mais normalement, tu peu laisser action="" vide, ça seras l'adresse web courant qui seras pris

Sauf erreur, ça doit marcher:

<?php
    /*
    FIXME: GLAIVED TEMPORAIRE !
    */
        try{
            $db = new PDO('mysql:host=localhost;dbname=temp_1', 'root', null);
        }catch(Exception $e){
            die('Erreur : '.$e->getMessage());
        }
        header('Content-Type: text/html; charset=utf-8');
    // --- FIXME: GLAIVED Supprime ce block
    // include './inclu/hgroupInclude.inc.php'; // FIXME: GLAIVED désactiver le temps de tests
    // include './inclu/menu.inc.php'; // FIXME: GLAIVED désactiver le temps de tests
    if(isset($_GET'biblio']) && !empty($_GET'biblio']) && is_int($_GET'biblio'])){
        $sql = 'SELECT * FROM bibliotheque WHERE id = ? ORDER BY nom';
        $db->prepare($sql);
        $raq->execute(array(
            $_GET'biblio']
        ));
    }else{
        $sql = 'SELECT * FROM bibliotheque ORDER BY nom LIMIT 1'; // FIXME: GLAIVED, WHERE id <--- useless ?
        $raq = $db->query($sql);
    }
    $sqm = 'SELECT * FROM bibliotheque ORDER BY nom'; // FIXME: GLAIVED, WHERE id <--- useless ?
    $req = $db->query($sqm);
?>
<div class="corps">
    <div class="choixBiblio">
        <hgroup class="hg_1_article">
            <h4>Vous pouvez visualiser notre bibliothéque virtuel</h4>
            <h6>Voici notre bibliothéque d'orchidée par ordre alphabétique</h6>
        </hgroup>
        <form action="" method="GET" class="choixListeOrchidees">
            <select name="biblio" size="1">
                <?php while($d = $req->fetch(PDO::FETCH_OBJ)): ?>
                    <option value="<?= $d->id ?>"><?= $d->nom ?></option><?php // FIXME: GLAIVED j'ai changer $b par $d ?>
                <?php endwhile ?>
            </select>
            <input type="submit" /><?php // FIXME: GLAIVED ajout du boutton submit ?>
        </form>
    </div>
    <div id="affichageOrchi">
        <hgroup class="hg_1_article"><h4>Les familles d'orchidées</h4></hgroup>
        <?php while($b = $raq->fetch(PDO::FETCH_OBJ)): ?>
            <hgroup class="hg_biblio"><h3>Numéro : <?= $b->id ?></h3><h3>Familles des : <?= $b->nom ?></h3></hgroup>
            <h4 class="origine">Les orogine de l'orchidée : </h4>
            <p class="showOrigine"><?= $b->origine ?></p>
            <hgroup class="hg_biblio">
                <h3>La température Minimum : <?= $b->temperatureMini ?></h3>
                <h3>La température Maximale : <?= $b->temperatureMini ?></h3>
            </hgroup>
            <div class="presentationOrchi"><img src="img/galerie/petitformat/<?= $b->nomenclature ?>.jpg" alt="Image<?= $b->nomenclature ?>" class="showPictureBilio" />
                <div class="miseEnPlaceLeft">
                    <hgroup class="hg_biblio2"><h3>Présentation d'un <?= $b->nom ?> </h3></hgroup>
                    <p class="descriptionBilio"><?= $b->description ?></p>
                </div>
            </div>
            <hgroup class="hg_biblio"><h3>Le prix : <?= $b->prix ?></h3></hgroup>
            <br>
        <?php endwhile ?>
    </div>
</div>
<?php // include('./inclu/footer.inc.php'); // FIXME: GLAIVED désactiver le temps de tests ?>

Si ton code est résolu, valide cette réponse ^^

j'ai la tête trop exploser pour y réfléchir, toujours est-il que je t'es convertie ton code en php axé template (synthax alternative)

<?php
    include './inclu/hgroupInclude.inc.php';
    $sql = 'SELECT * FROM bibliotheque WHERE id';
    $req = $db->query($sql);
    include './inclu/menu.inc.php';
    $sqm = 'SELECT * FROM bibliotheque WHERE id LIMIT 1';
    $raq = $db->query($sqm);
?>
<div class="corps">
    <div class="choixBiblio">
        <hgroup class="hg_1_article">
            <h4>Vous pouvez visualiser notre bibliothéque virtuel</h4>
            <h6>Voici notre bibliothéque d'orchidée par ordre alphabétique</h6>
        </hgroup>
        <form action="" method="get" class="choixListeOrchidees">
            <select name="biblio" size="1">
                <?php while($d = $req->fetch(PDO::FETCH_OBJ)): ?>
                    <option value="<?= $b->id ?>"><?= $d->nom ?></option>
                <?php endwhile ?>
            </select>
        </form>
    </div>
    <div id="affichageOrchi">
        <hgroup class="hg_1_article"><h4>Les familles d'orchidées</h4></hgroup>
        <?php while($b = $raq->fetch(PDO::FETCH_OBJ)): ?>
            <hgroup class="hg_biblio"><h3>Numéro : <?= $b->id ?></h3><h3>Familles des : <?= $b->nom ?></h3></hgroup>
            <h4 class="origine">Les orogine de l'orchidée : </h4>
            <p class="showOrigine"><?= $b->origine ?></p>
            <hgroup class="hg_biblio">
                <h3>La température Minimum : <?= $b->temperatureMini ?></h3>
                <h3>La température Maximale : <?= $b->temperatureMini ?></h3>
            </hgroup>
            <div class="presentationOrchi"><img src="img/galerie/petitformat/<?= $b->nomenclature ?>.jpg" alt="Image<?= $b->nomenclature ?>" class="showPictureBilio" />
                <div class="miseEnPlaceLeft">
                    <hgroup class="hg_biblio2"><h3>Présentation d'un <?= $b->nom ?> </h3></hgroup>
                    <p class="descriptionBilio"><?= $b->description ?></p>
                </div>
            </div>
            <hgroup class="hg_biblio"><h3>Le prix : <?= $b->prix ?></h3></hgroup>
            <br>
        <?php endwhile ?>
    </div>
</div>
<?php include('./inclu/footer.inc.php'); ?>

Oui en effet j'avais penser a cela merci Glaived

<?php
    /*
    FIXME: GLAIVED TEMPORAIRE !
    */
        // try{
        // $db = new PDO('mysql:host=localhost;dbname=temp_1', 'root', null);
        // }catch(Exception $e){
        // die('Erreur : '.$e->getMessage());
        // }
        // header('Content-Type: text/html; charset=utf-8');
    // --- FIXME: GLAIVED Supprime ce block
    include './inclu/hgroupInclude.inc.php'; // FIXME: GLAIVED désactiver le temps de tests
    $sql = 'SELECT * FROM bibliotheque WHERE id';
    $req = $db->query($sql);
    include './inclu/menu.inc.php'; // FIXME: GLAIVED désactiver le temps de tests
    $sqm = 'SELECT * FROM bibliotheque WHERE id LIMIT 1';
    $raq = $db->query($sqm);
?>
<div class="corps">
    <div class="choixBiblio">
        <hgroup class="hg_1_article">
            <h4>Vous pouvez visualiser notre bibliothéque virtuel</h4>
            <h6>Voici notre bibliothéque d'orchidée par ordre alphabétique</h6>
        </hgroup>
        <form action="" method="GET" class="choixListeOrchidees">
            <select name="biblio" size="1">
                <?php while($d = $req->fetch(PDO::FETCH_OBJ)): ?>
                    <option value="<?= $d->id ?>"><?= $d->nom ?></option><?php // FIXME: GLAIVED j'ai changer $b par $d ?>
                <?php endwhile ?>
            </select>
            <input type="submit" /><?php // FIXME: GLAIVED ajout du boutton submit ?>
        </form>
    </div>
    <div id="affichageOrchi">
        <hgroup class="hg_1_article"><h4>Les familles d'orchidées</h4></hgroup>
        <?php while($b = $raq->fetch(PDO::FETCH_OBJ)): ?>
            <hgroup class="hg_biblio"><h3>Numéro : <?= $b->id ?></h3><h3>Familles des : <?= $b->nom ?></h3></hgroup>
            <h4 class="origine">Les orogine de l'orchidée : </h4>
            <p class="showOrigine"><?= $b->origine ?></p>
            <hgroup class="hg_biblio">
                <h3>La température Minimum : <?= $b->temperatureMini ?></h3>
                <h3>La température Maximale : <?= $b->temperatureMini ?></h3>
            </hgroup>
            <div class="presentationOrchi"><img src="img/galerie/petitformat/<?= $b->nomenclature ?>.jpg" alt="Image<?= $b->nomenclature ?>" class="showPictureBilio" />
                <div class="miseEnPlaceLeft">
                    <hgroup class="hg_biblio2"><h3>Présentation d'un <?= $b->nom ?> </h3></hgroup>
                    <p class="descriptionBilio"><?= $b->description ?></p>
                </div>
            </div>
            <hgroup class="hg_biblio"><h3>Le prix : <?= $b->prix ?></h3></hgroup>
            <br>
        <?php endwhile ?>
    </div>
</div>
<?php include('./inclu/footer.inc.php'); // FIXME: GLAIVED désactiver le temps de tests ?>

C'est ça que tu souhaite avoir ?

En fait c'est try catch que tu a rajouter, sa j'ai déjà en fait.
Se que je n'arrive pas a trouver c'est faire fonctionner le select option pour qu'il affiche les données de la base de donnée par rapport a id de la db.

Alors, là j'imagine que t'es sur une page de type voirInfos.php?id=1 ou tu verra les infos d'une entrée, selon son ID

Donc tu veux que avec le select, c'est ce select qui choisira les infos qu'on doit voir, d'une entrée, en fonction de la quel aurais été sélectionner ?

Bonjour Glaived.
Oui en effet c'est bien cela je choisi le nom dans la liste de choix qui m'affiche les données de la base dans la page même.

j'ai trouvé une explication avec un if(isset) si dessous

if(isset($_GET'id'])){
    $sql = "SELECT * FROM bibliotheque WHERE id=" . $_GET'id'];
    }
     else{
        $sql = "SELECT * FROM bibliotheque WHERE id";
     }

avec dans la balise <form et dans action="" je place ce code si dessous

<?php $_SERVER'PHP_SELF']; ?>

et bien sur le input submit.

je vois dans le tuto que les informations affiche avec $_GET les informations dans la barre url du navigateur chez moi il n'affiche pas ceci galerie.php?biblio= et la suite normale le chiffre mais le chiffre ne s'écrit pas.
Voilà tiens moi au courant pour voir si je ne fait pas une erreur.

Tu peux la tester sur mon site ici pour voir que l'id ne donne pas de numéro.
Le site avec la page.

Ha je suis content avec ta techni il m'affiche bien l'index dans la barre d'url et dans le print_r($_get).
Maintenant cela fonctionne, mais n'affiche pas les données dans la page.
Mais je ne vais pas exagérer, je pense que je dois avoir quelque chose qui bloque sur mon pc je vais chercher pourquoi.
Je te remercie beaucoup passe une bonne journée.
A bientôt au tour d'un autre post.