Tom's Guide > Forum > Programmation > Problème liste déroulante et affichage bdd
Mot :    Pseudo :           
 

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&eacute;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

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

salut, pour remplir ta liste essaie

Code :
  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. echo '</select>';
  6. echo '<input type="submit" value="Afficher" name="go">';
  7. echo '</form>';


je pense que ton erreur venait que dans ta boucle tu fermais à achaque fois ta liste et le formulaire

------------------------------ "Parlons moins codons plus"
Répondre à mcpherson

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

Répondre à TOONIE

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']

------------------------------ "Parlons moins codons plus"
Répondre à mcpherson

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 !

Répondre à TOONIE

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é?

------------------------------ "Parlons moins codons plus"
Répondre à mcpherson

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... !

Répondre à TOONIE

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>';


Message édité par mcpherson le 28-05-2009 à 16:39:25
------------------------------ "Parlons moins codons plus"
Répondre à mcpherson

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...

Répondre à TOONIE
Tom's Guide > Forum > Programmation > Problème liste déroulante et affichage bdd
Aller à :

Il y a 2478 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens