Se connecter / S'enregistrer
Votre question

Problème liste déroulante et affichage bdd

Tags :
  • MySQL
  • Programmation
Dernière réponse : dans Programmation
28 Mai 2009 12:14:28

Bonjour,

J'ai un souci... J'ai une table MEMBRES dans laquelle mes adhérents ont un nom et un prénom. Je souhaite afficher mes adhérents dans ma liste déroulante et en sélectionnant un membre, afficher ses caractéristiques. Débutant en php et bdd, j'y vais à petits pas, et ce que j'ai fait ne fonctionne pas. A savoir que ma liste déroulante ne se remplie pas. Ma requête est correcte, je l'ai testée.

Je vous présente mon code; si vous pouviez m'aider !

<?php
mysql_connect("localhost", ...) or die ("connexion impossible");
mysql_select_db("nom_BDD") or die ("base de données inaccessible");
?>

<p>Choisissez un adhérent parmi la liste : </p>

<?php
echo '<form method="GET" action="test_stage_liste_deroulante.php">';
echo '<select name="liste_adherents" id="adherents">';

$reponse = mysql_query("select NOM_MEMBRE from MEMBRES order by NOM_MEMBRE") or die(mysql_error());

if (! $reponse)
{
echo "Erreur requete"; exit;
}

while ($ligne=mysql_fetch_array($reponse))
{
echo '<option>'.$ligne["NOM_MEMBRE"].'</option>';
echo '</select>';
echo '<input type="submit" value="Afficher" name="go">';
echo '</form>';

//Les lignes suivantes affichent le détail d'un adhérent
// si l'utilisateur en a choisi un

if(!$_GET['liste_adherents'])
{
exit;
}

$liste_adherents = $_POST['liste_adherents'];
$resultat2 = mysql_query("Select * from MEMBRES where NOM_MEMBRE='$liste_adherents'") or die ("Requête non executée.");
$ligne2 = mysql_fetch_array($resultat2);
echo "<br/>";
echo "<br/>";
echo $ligne2['NOM_MEMBRE'].'<br/>';
echo ' <b>Adhérent : </b>'.$ligne2['NOM_MEMBRE'].' '.$ligne2['PRENOM_MEMBRE'].'<br/>';
echo "<br/>";
echo "<br/>";
echo "<br/>";
}

mysql_close();
?>

Par avance merci,
tOOnie

Autres pages sur : probleme liste deroulante affichage bdd

28 Mai 2009 13:04:05

salut, pour remplir ta liste essaie
  1. while ($ligne=mysql_fetch_array($reponse))
  2. {
  3. echo "<option value='$ligne['NOM_MEMBRE']>$ligne['NOM_MEMBRE']</option>";
  4. } //fin du while ici
  5.  
  6. echo '</select>';
  7. echo '<input type="submit" value="Afficher" name="go">';
  8. echo '</form>';

je pense que ton erreur venait que dans ta boucle tu fermais à achaque fois ta liste et le formulaire
28 Mai 2009 15:11:22

Salut mcpherson,

Bon, avec ton aide j'ai avancé un peu plus ! J'avais une erreur avec :
Citation :
while ($ligne=mysql_fetch_array($reponse))
{
echo "<option value='$ligne['NOM_MEMBRE']>$ligne['NOM_MEMBRE']</option>";
} //fin du while ici


que j'ai recodé ainsi :
Citation :
echo '<option>'.$ligne["NOM_MEMBRE"].'</option>';

et la liste déroulante se remplit bien.

Il doit y avoir une autre erreur dans mon code, car en cliquant sur le bouton "afficher" j'ai bien adhérent : qui apparaît, mais je n'ai aucune des données de la table qui s'affiche. Tu as une idée ?

Par avance merci
tOOnie
Contenus similaires
28 Mai 2009 15:15:39

j'ai une petite idée oui tu fais un formulaire en methode get et tu extrait le membre choisis par $liste_adherents = $_POST['liste_adherents'];
et non $_GET['liste_adherents']
28 Mai 2009 15:22:05

Je n'ai pas tout saisi... tu me propose de modifier quelque chose dans le code ou de rajouter quelque chose ? C'est qu'apprendre tout seul, c'est difficile ! Alors il y a des subtilités qui m'échappent !
28 Mai 2009 15:42:51

en fait ton formulaire est envoyé selon une méthode :
<form method=get> ou <form method=post>
toi tu as mis get et libre à toi mais ça veut dire que le contenu de la liste déroulante sera envoyé dans la variable $_GET['nom du champ']
or toi tu récupère le nom du champ par $_POST['liste_adherent'] donc ce champ sera vide!
donc tu peux laisser get dans la balise form mais ensuite tu dois modifier la récupération du champ en faisant : $adherent=$_GET['liste_adherent'].
je me suis mieux expliqué?
28 Mai 2009 16:17:05

merci pour ta patience ;-)

alors, après certains exotismes qui ne fonctionnaient pas, j'ai essayé aussi ces 2 là qui ne fonctionnent pas mieux...

Citation :
$liste_adherents = $_POST['liste_adherents'];
$resultat2 = mysql_query("Select * from MEMBRES where NOM_MEMBRE='$liste_adherents'") or die ("Requête non executée.");
$ligne2 = mysql_fetch_array($resultat2);
echo "<br/>";
echo "<br/>";
echo $ligne2['NOM_MEMBRE'].'<br/>';
echo ' <b>Adhérent : </b>'.$ligne2['NOM_MEMBRE'].' '.$ligne2['PRENOM_MEMBRE'].'<br/>';
$adherent=$_GET['liste_adherent'];


Citation :
echo $ligne2['NOM_MEMBRE'].'<br/>';
$adherent=$_GET['liste_adherent'];

echo ' <b>Adhérent : </b>'.$ligne2['NOM_MEMBRE'].' '.$ligne2['PRENOM_MEMBRE'].'<br/>';


Je commence juste à paniquer... !
28 Mai 2009 16:37:21

dans ta liste déroulante, en attribut de <option tu dois mettre value=$ligne['membre']
value c'est ce qui est envoyé par get, ce que tu met juste après<option value=machin>ICI</option> le ICI c'est ce qui est affiché
donc la gueule de ton while :
while ($ligne=mysql_fetch_array($reponse))
{
echo '<option value='$ligne["NOM_MEMBRE"]'>'.$ligne["NOM_MEMBRE"].'</option>';
echo '</select>';
echo '<input type="submit" value="Afficher" name="go">';
echo '</form>';
29 Mai 2009 13:06:19

Salut,

J'essaye depuis hier les get et post (qui semble plus "sûr" que le get), j'ai cherché sur le net des exemples, j'ai aussi cherché à le coder plusieurs fois, mais je dois reconnaître que pour cette première fois, je n'y arrive absolument pas... Je suis complètement perdu...
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS