IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Liste qui ne s'affiche pas [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 329
    Points : 151
    Points
    151
    Par défaut Liste qui ne s'affiche pas
    Bonsoir,

    Je cherche depuis un petit moment déja, j'ai retourné le pb. dans presque tout les sens mais je n'arrive pas à adapter mon code pour ce que je veut faire...
    Alors je viens chercher un peu d'aide sur le forum.

    je récupère une liste depuis une bdd avec le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <select name="devis_data5" size="5" class="champs_tarif" />
    <?php 
    $retour_emp = "SELECT emplacement, etat FROM bdd_emplacement WHERE etat ='0' ORDER BY 'emplacement' ASC"; 
    $reponse_emp = mysql_query ($retour_emp) or die (mysql_error()); 
    while ($donnees_emp = mysql_fetch_array($reponse_emp)) 
    {
    echo "<option>".$donnees_emp['emplacement']."</option>"; 
    }
    ?>
    </select>
    Jusque la pas de soucis ça fonctionne impec.
    Par contre j'essaie d'afficher la valeur de liste sélectionnée lorsque j'enregistre la liste en sélectionnant un élément, mais je n'y arrive pas... d'habitude j'utilise la fonction suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <select name="liste">
        <option <?php  if($liste == "choix1") { echo " selected"; } ?>>choix1</option>
        <option <?php  if($liste == "choix2") { echo " selected"; } ?>>choix2</option>
        <option <?php  if($liste == "etc") { echo " selected"; } ?>>etc</option>
    </select>
    Dans ce cas la la liste est "en dur" dans le code php de la page.

    Je pense que je doit concaténer concaténer tout ça...

    Merci d'avance pour vos conseils ou aide.

    Cordialement.

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 382
    Points : 10 410
    Points
    10 410
    Par défaut
    Typiquement c'est plutôt du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <option <?php  if(isset($_POST['liste']) && $_POST['liste'] == "choix1") { echo ' selected="selected"; } ?>>choix1</option>
    <option <?php  if(isset($_POST['liste']) && $_POST['liste'] == "choix2") { echo ' selected="selected"; } ?>>choix2</option>
    en supposant que ton formulaire soit envoyé par la méthode post.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 329
    Points : 151
    Points
    151
    Par défaut
    ok merci mais ça ne résout pas mon pb, le pb est dans la génération de la liste depuis le code php de la bdd.

  4. #4
    Membre actif
    Homme Profil pro
    Développeur Full Stack
    Inscrit en
    Mai 2010
    Messages
    159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Full Stack

    Informations forums :
    Inscription : Mai 2010
    Messages : 159
    Points : 220
    Points
    220
    Par défaut
    En faisant comme cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <select name="liste">
        <option <?php  if(isset($liste) && $liste == "choix1") { echo 'selected="selected"'; } ?>>choix1</option>
        <option <?php  if(isset($liste) && $liste == "choix2") { echo 'selected="selected"'; } ?>>choix2</option>
        <option <?php  if(isset($liste) && $liste == "etc") { echo 'selected="selected"'; } ?>>etc</option>
    </select>
    ça ne change rien?

  5. #5
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 382
    Points : 10 410
    Points
    10 410
    Par défaut
    Il te faut la liste complète du select et tu la compare avec la valeur inscrite en bdd.
    Que renvoie ta requête ? Explique clairement avec des mots, on a pas assez d'éléments pour te répondre correctement.

    Par exemple quand tu dis
    j'essaie d'afficher la valeur de liste sélectionnée lorsque j'enregistre la liste en sélectionnant un élément, mais je n'y arrive pas...
    on peut supposer que c'est suite à l'envoi d'un formulaire qui enregistre la sélection ( d'où ma réponse avec le $_POST)

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 329
    Points : 151
    Points
    151
    Par défaut
    Ton code est ok franck31 c'est le mm genre de code que celui la :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <select name="liste">
        <option <?php  if($liste == "choix1") { echo " selected"; } ?>>choix1</option>
        <option <?php  if($liste == "choix2") { echo " selected"; } ?>>choix2</option>
        <option <?php  if($liste == "etc") { echo " selected"; } ?>>etc</option>
    </select>
    et pour ça y'a pas de soucis puisque la liste est écrite directement. (choix1,choix2,etc)

    Donc je vais essayer de mieux m'exprimer.

    1- J'ai une bdd ou j'ai une centaine d'enregistrements.
    2- J'ouvre la bdd et je créé une liste à partir des données qui sont dedans.

    Jusque la pas de soucis pour afficher tout ça, mon code fonctionne bien.

    Par contre dans le formulaire qui contient la liste qui vient de la bdd, je n'arrive pas à afficher la valeur que j'ai enregistrée lorsque je rouvre celui-ci. J'ai que les valeurs par défaut de ma liste.

    Je voudrais que ça m'affiche la valeur que j'ai enregistrée précédement, lorsque j'ouvre mon formulaire.

    Je sait pas si j'ai réussit à me faire comprendre .

    Merci d'avance.

  7. #7
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2013
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Services de proximité

    Informations forums :
    Inscription : Février 2013
    Messages : 27
    Points : 56
    Points
    56
    Par défaut
    Il faut que tu construises correctement tes "options" et ne pas oublier l'attribut "value". Ta boucle devrait donc ressembler à quelque chose comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    while ($donnees_emp = mysql_fetch_array($reponse_emp)) :
       echo '<option value="'.$donnees_emp['emplacement'].'" ';
       if(isset($_POST['emplacement']) AND $_POST['emplacement'] ===  $donnees_emp['emplacement']):
          echo 'selected="selected" ';
       endif;
       echo ' >'.$donnees_emp['emplacement'].'</option>';
    endwhile;

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 329
    Points : 151
    Points
    151
    Par défaut
    ça ne fonctionne pas, la liste est vide maintenant. Mais merci pour ton aide.

  9. #9
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <?php
    $sql = "SELECT emplacement, etat FROM bdd_emplacement WHERE etat = '0' ORDER BY emplacement ASC"; 
    $qry = mysql_query($sql) or die (mysql_error());
     
    $rows = array();
    while ($data = mysql_fetch_assoc($query)) 
    {
        $selected = (isset($_POST['devis_data5']) && ($_POST['devis_data5'] == $data['emplacement'])) ? ' selected="selected"' : ''; 
        $rows[]   =
    <<<HTML
    <option value="{$data['emplacement']}"{$selected}>{$data['emplacement']}</option>
    HTML;
    }    
    ?>
    <select name="devis_data5" size="5" class="champs_tarif">
        <?php echo implode("\n", $rows) ?>
    </select>

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 329
    Points : 151
    Points
    151
    Par défaut
    J'ai modifier $query en $qry parce que le code plantait mais toujours le mm résultat la donnée dans la liste n'est pas sélectionnée. En faite ce code correspond à celui la :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <select name="devis_data5" size="5" class="champs_tarif" />
    <?php 
    $retour_emp = "SELECT emplacement, etat FROM bdd_emplacement WHERE etat ='0' ORDER BY 'emplacement' ASC"; 
    $reponse_emp = mysql_query ($retour_emp) or die (mysql_error()); 
    while ($donnees_emp = mysql_fetch_array($reponse_emp)) 
    {
    echo "<option>".$donnees_emp['emplacement']."</option>"; 
    }
    ?>
    </select>
    ça donne le mm résultat à l'affichage.

  11. #11
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Si rien n'est sélectionné c'est parce qu'on doit comparer des choux avec des carottes

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 329
    Points : 151
    Points
    151
    Par défaut
    non non on compare des chiffres d'une liste, genre 1 2 3 4 5 6 7 8 9 etc... jusqu'a 110

  13. #13
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Je peux te garantir que tous les bouts de code qui t'ont été donnés gèrent correctement la sélection vérifie tes données avec print_r

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 329
    Points : 151
    Points
    151
    Par défaut
    Pourtant le code suivant affiche que la liste sans rien sélectionner dedans:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    <?php
    $sql = "SELECT emplacement, etat FROM bdd_emplacement WHERE etat = '0' ORDER BY emplacement ASC"; 
    $qry = mysql_query($sql) or die (mysql_error());
     
    $rows = array();
    while ($data = mysql_fetch_assoc($qry)) 
    {
        $selected = (isset($_POST['devis_data5']) && ($_POST['devis_data5'] == $data['emplacement'])) ? ' selected="selected"' : ''; 
        $rows[]   =
    <<<HTML
    <option value="{$data['emplacement']}"{$selected}>{$data['emplacement']}</option>
    HTML;
    }    
    ?>
    <select name="devis_data5" class="champs_tarif">
        <?php echo implode("\n", $rows) ?>
    </select><?php echo print_r ($_POST['devis_data5']); ?>
    Par contre je n'ai pas compris à quoi servait la variable post ? puisque tout vient de la bd.

  15. #15
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 329
    Points : 151
    Points
    151
    Par défaut
    ouf ! enfin résolu !!!

    Grace à vos aides et conseils j'ai trouvé comment faire !

    Merci à tous.
    Je post le code modifier si ça peut en aider quelques un.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    <select name="devis_data5" size="5" class="champs_tarif" />
    <?php 
    $retour_emp = "SELECT emplacement, etat FROM bdd_emplacement WHERE etat ='0' ORDER BY 'emplacement' ASC"; 
    $reponse_emp = mysql_query ($retour_emp) or die (mysql_error()); 
    while ($donnees_emp = mysql_fetch_array($reponse_emp)) 
    {
    if($devis_data5 == $donnees_emp['emplacement'])
    { 
    echo "<option selected>".$donnees_emp['emplacement']."</option>";
    }
    else
    {
    echo "<option>".$donnees_emp['emplacement']."</option>";}
    }
    ?>
    </select>
    J'évalue l'égalité et je conditionne l'affichage avec else.

    Cordialement.

  16. #16
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    poster sur un forum pour au final ne pas tenir compte de ce qui est dit, c'est assez inutile. M'enfin...

    Ton <select> est mal formé : c'est <select></select> et pas <select /> (ligne 2)
    Ensuite, chaque option dans un <select> doit avoir une valeur <option value="...">Texte</option> histoire de savoir ce qui a été sélectionné à la soumission du formulaire. Dans ton code, aucun n'en a.

    Enfin ton code if () { } else { } est verbeux pour rien dans la mesure où tu ne dois te préoccuper que de savoir s'il faut afficher ou pas l'attribut selected="selected"

  17. #17
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 382
    Points : 10 410
    Points
    10 410
    Par défaut
    Citation Envoyé par rawsrc Voir le message
    Ensuite, chaque option dans un <select> doit avoir une valeur <option value="...">Texte</option> histoire de savoir ce qui a été sélectionné à la soumission du formulaire. Dans ton code, aucun n'en a.
    Ce n'est pas une obligation. S'il n'y a pas d'attribut value, la valeur envoyée après sélection correspond au libellé de l'option.

  18. #18
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Oui ABCIWEB, je suis bien d'accord, mais vu qu'il débute autant qu'il se cantonne au tronc commun et après à l'exotisme

  19. #19
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 382
    Points : 10 410
    Points
    10 410
    Par défaut
    Oui bien entendu ce n'est pas obligatoire mais très recommandé. Dissocier le libellé de sa valeur permet une bien meilleure évolutivité du code

  20. #20
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    329
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 329
    Points : 151
    Points
    151
    Par défaut
    Bonsoir,
    J'ai tenu compte de vos remarques/conseils et solutions, justement c'est pour ça que j'ai pu faire fonctionner mon code, et je vous en remercie tous, et je prend bonne note de vos conseils.
    Merci encore.
    Très cordialement.

    edit: au niveau du if je vérifie si il y a quelques chose de sélectionnée dans la liste, et si il n'y en a pas j'affiche la liste sans l sélection.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/01/2015, 13h55
  2. Liaison entre listes qui ne s'affiche pas
    Par crazylia dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 16/04/2010, 11h34
  3. rowsource liste modifiable qui ne s'affiche pas
    Par Invité dans le forum IHM
    Réponses: 2
    Dernier message: 17/10/2008, 20h10
  4. [AJAX] Listes Déroulantes Liées : 2e liste qui ne s'affiche pas
    Par fayred dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 20/07/2007, 13h07
  5. excel: colonne qui ne s'affiche pas dans une liste
    Par fast&furious dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/07/2006, 18h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo