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 :

PHP et MySQL menu déroulant


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 51
    Par défaut PHP et MySQL menu déroulant
    Bonjour,

    J'ai écrit un script pour engendrer un menu déroulant affichant le nom et le prenom à partir de la base mysql. Mais je n'arrive pas à afficher les deux, seulement le nom dans le menu déroulant.

    La table de la base mysql a les champs: id, nom, prenom, et motdepasse.

    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
    19
     
    $connexion=mysql_connect('localhost', 'root') or die ("connextion au serveur impossible");
    $db=mysql_select_db('defi', $connexion) or die ("sélection de la base impossible");
     
    $req="SELECT * FROM identification ORDER BY nom DESC";
    $res=mysql_query($req);
     
    while($ligne=mysql_fetch_object($res))
    {$liste[]=$ligne->nom;}
     
    echo "<FORM action=\"script.php\" method=\"POST\">
          <SELECT name=\"nom\">";
     
    foreach($liste as $val)
    {$req2="SELECT * FROM identification WHERE nom='$val'";
    $res2=mysql_query($res2);
    echo "<OPTION value=\"$ligne->nom\" />$val";}
     
    echo "</SELECT></FORM>";
    Merci votre réponse.

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 194
    Par défaut
    salut, je vois nulle part la reference à ta colonne prenom?
    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
    19
     
    $connexion=mysql_connect('localhost', 'root') or die ("connextion au serveur impossible");
    $db=mysql_select_db('defi', $connexion) or die ("sélection de la base impossible");
     
    $req="SELECT * FROM identification ORDER BY nom DESC";
    $res=mysql_query($req);
    $liste = array ();  // tableau de lignes
    while($ligne=mysql_fetch_object($res))
    {array_push ($liste, array ('id' => $ligne->id, 'nom' => $ligne->nom, 'prenom' => $ligne->prenom)) ;}
     
    echo "<FORM action=\"script.php\" method=\"POST\">
          <SELECT name=\"nom\">";
     
    foreach($liste as $val)
    {
      echo "<OPTION value=\"" . $val['id'] . "\">" . $val['nom'] . " " . $val['prenom'] . "</option>\n";
    }
     
    echo "</SELECT></FORM>";

  3. #3
    Membre éprouvé
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Par défaut
    Oulà...

    Si j'ai bien suivit, tu fait une premiere requete sur une table, pour récuperer la liste des noms que tu mets dans un tableau. Puis, dans ton foreach sur ton tableau, tu fais une requete, sur la même table, pour chacun des noms pour avoir les autres infos...

    Je ne sais pas ce que tu n'as pas compris, mais il te manque assurément une notion.

    Quel est l'interet de faire ca en deux passes ?

    Tu fait ta requete, et dans ton while, tu écris directement ce que tu veux avoir, tu as déjà toutes les infos, le tableau que tu rempli et toutes les requetes que tu fais depuis le tableau ne servent absolument à rien.

    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
     
    $connexion=mysql_connect('localhost', 'root') or die ("connextion au serveur impossible");
    $db=mysql_select_db('defi', $connexion) or die ("sélection de la base impossible");
     
    $req="SELECT * FROM identification ORDER BY nom DESC";
    $res=mysql_query($req);
     
    echo "<FORM action=\"script.php\" method=\"POST\">
          <SELECT name=\"nom\">";
     
    while($ligne=mysql_fetch_array($res))
    {
       echo '<option value="'.$ligne->id.'" />'.$ligne->nom . ' ' .$ligne->prenom.'</option>';
    }
     
    echo "</SELECT></FORM>";
    Je n'ai pas testé le code, il reste peut-être quelques erreurs de syntaxe, mais l'idée est là.
    Accesoirement, les balises en majucules, c'est mal.

    [EDIT]Post croisé, mais remarque que dans le code de coca25 il n'y a plus qu'une seule requête également. C'est une autre maniere de faire la même chose.[/EDIT]

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    382
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mai 2006
    Messages : 382
    Par défaut
    dans le foreach, il prend juste les resultats de la requete, il ne refait pas la requete une deuxieme fois.

  5. #5
    Membre chevronné Avatar de mathieugamin
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 572
    Par défaut
    dans le foreach, il prend juste les resultats de la requete, il ne refait pas la requete une deuxieme fois.
    Oui, mais ça reste assez inutile...

    Le code de Rakken c'est du codage efficace, non?
    Moi je vote et je dis ne nous compliquons pas outre mesure...

    Accesoirement, les balises en majucules, c'est mal.

  6. #6
    Membre éprouvé
    Avatar de Rakken
    Homme Profil pro
    Inscrit en
    Août 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 257
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    foreach($liste as $val)
    {$req2="SELECT * FROM identification WHERE nom='$val'";
    $res2=mysql_query($res2);
    echo "<OPTION value=\"$ligne->nom\" />$val";}
    Si si si, il recrée la requete, et l'execute !
    Sans même s'en servir.

    Et avec une faute en plus... il fait un mysql_query sur $res2...

  7. #7
    Membre chevronné Avatar de mathieugamin
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 572
    Par défaut
    Allons, allons, ne nous moquons pas
    Rakken a encore raison, il recrée bien sa requête une seconde fois et en plus avec une erreur...
    Et en plus ça ne sert vraiment à rien puisqu'il ne va même pas chercher les résultats.

    J'ai connu ça il n'y a pas si longtemps ! (j'ai commencé le développement le jour de mon inscription sur développez.com....)

    Ciel65,
    avec une requête déjà faite plus haut, les résultats sont gardés en mémoire.
    Tu n'as besoin de refaire une requête que si elle est différente de la première.

    Le code de Rakken est bien, sers-t'en, et si tu as des questions, reviens sur le forum !

    En revanche, si tu as la réponse à ta question, n'oublie pas d'appuyer sur le bouton en bas de la page !

  8. #8
    Rédacteur

    Avatar de Yoteco
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    1 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 099
    Par défaut
    J'ai l'impression que tu te complique la vie...

    Essaye avec ç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
     
    $connexion=mysql_connect('localhost', 'root') or die ("connextion au serveur impossible");
    $db=mysql_select_db('defi', $connexion) or die ("sélection de la base impossible");
     
    $req="SELECT * FROM identification ORDER BY nom DESC";
    $res=mysql_query($req) or die('MySQL error: '.mysql_error);
     
    echo '<FORM action="script.php" method="POST">
          <SELECT name="nom">';
     
    while($ligne = mysql_fetch_object($res))
    {
    	echo '<OPTION value="'.$ligne->id.'">'.$ligne->prenom.' '.$ligne->nom.'</OPTION>';
    }
     
    echo '</SELECT></FORM>';
    Avec ce code tu aurais le Prenom + Nom dans la liste déroulante et la valeur passé sera l'Id c'est ce que me paraît le plus logique ;-)
    Blog - Mon espace developpez -
    Oracle Certified Professional, Java SE 6 Programmer
    eZ Publish Certified developer

Discussions similaires

  1. [MySQL] Requête Mysql - menu déroulant
    Par tvertain dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 19/11/2008, 14h25
  2. Réponses: 10
    Dernier message: 22/03/2007, 08h36
  3. [PHP-JS] Création menu déroulant automatique
    Par calitom dans le forum Langage
    Réponses: 1
    Dernier message: 29/01/2007, 10h18
  4. [MySQL] Script PHP pour Menu déroulant ->BDD MySQL
    Par BENLEMALIN dans le forum PHP & Base de données
    Réponses: 21
    Dernier message: 06/12/2006, 16h12
  5. [PHP-JS] 1 menu déroulant et 2 boutons
    Par frmaniako dans le forum Langage
    Réponses: 3
    Dernier message: 22/08/2006, 16h57

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