Php probleme liste deroulante

majdoulin Messages postés 106 Date d'inscription   Statut Membre Dernière intervention   -  
 Alain42 -
Bonjour tout le monde ,
voila svp j'ai un probleme avec la liste deroulante , je voudrai qu'au choix d'une valeur de la liste deroulante ,que cela m'affiche les informations la concernant ,j'ai le code suivant mais cela n'affiche rien dans ma page :

voila pour le remplissage de la liste :

<form name="form1" method="post" action="resultats.php">
<table width="539" height="40" border="0">
<tr>
<td width="331"> </td>
<td width="198"><label>
<select name="select">
<?php
$req = mysql_query("select date_match from resultats") or die(mysql_error());
while($ligne=mysql_fetch_array($req)){
echo "<option>";
echo $ligne[0];
}
?>
</select>


et ici le code de requetes:

<?php
if (isset($_POST['select'])){
$val=$_POST['select'];
$req1 = mysql_query("select nom_equipe from resultats,equipes where equipes.id_equipes=resultats.id_equipe1 and date_match='$val'");
$req2= mysql_query("select nom_equipe from resultats,equipes where equipes.id_equipes=resultats.id_equipe2 and date_match='$val'");
$req3=mysql_query("select date_match,resultat,commentaire from resultats where date_match='$val'");

while($res=mysql_fetch_array($req1))
{ $nom_equipe1=$res[0];}
while($res=mysql_fetch_array($req2))
{ $nom_equipe2=$res[0];}
while($res=mysql_fetch_array($req3))
{ $date_match=$res[0];
$resultat=$res[1];
$commentaire=$res[2];}
$nbrlignes=mysql_num_rows($req3);

echo "<tr>
<td>$nom_equipe1</td>
<td>$nom_equipe2</td>
<td>$date_match</td>
<td>$resultat</td>
<td>$commentaire</td>
</tr>";
}
?>
A voir également:

4 réponses

Xil
 
Commence par vérifier le code HTML généré par tout ca : clic droit > code source / afficher la source
sur ta page.

Tu pourra remarquer entre autre qu'il te manque :

- un
 echo '</option>';

apres
 echo "<option>";
 echo $ligne[0]; 


- les attributs value pour tes balises options.

De plus, si tes requête $req1,2 et 3 renvois plusieurs résultats, tes variables $nom_equipe1,2, $date_match etc n'auront la valeur que du dernier résultat.
Je te conseille de faire un var_dump($res); dans tes boucles while pour vérifier.

Et un plus gros conseil, protège tes variable POST ! C'est la porte ouverte pour, au minimum une petite suppression de ta bdd ;)

Jette un oeil aux fonctions suivantes :
addslashes(), mysql_real_escape_string(), intval() sur https://www.php.net/

C'est déjà un début, je n'ai fait que survoler ton code.
0
majdoulin Messages postés 106 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour ,

merci bien xil mais meme en corrigeant ces erreurs cela ne marchent pas, en faite je voudrai juste récuperer la valeur selectionnée dans la liste deroulante et cela ne marche pas ,voici le code :

<form name="form1" method="post" action="resultats.php">
<table width="539" height="40" border="0">
<tr>
<td width="331"> </td>
<td width="198"><label>
<select name="select">
<?php
$req = mysql_query("select date_match from resultats") or die(mysql_error());
while($ligne=mysql_fetch_array($req)){
echo "<option value=\"$ligne[0]\" >$ligne[0]</option>";
}
?>
</select>
</label></td>
</tr>
</table>
<div id="Layer2">
<table width="517" height="41" border="1">
<tr>
<td>date</td>
<td>resultat</td>
<td>commentaire</td>
</tr>
<?php
if (isset($_POST['select'])){
if (!empty($_POST['select'])){
$val=$_POST['select'];
echo($val);
echo("slt");
}}
?>
0
Xil Messages postés 350 Date d'inscription   Statut Membre Dernière intervention   257
 
Ta balise <form> n'est pas fermée, et je ne vois pas de bouton submit. (A moins que le code que tu as copié ne soit pas toute ta page)
Ton select est dans un <label>, je n'en vois pas trop l'intérêt, mais c'est un détail.


Tout ton code est bien dans la page resultats.php ?
"Cela ne marche pas", qu'est ce qui se passe exactement? Page 404 ? Rien qui change ? autre?
Tu as bien ta listebox remplie avec les bonnes valeurs ?
As tu vérifié le code source de ta page pour voir si tes attributs value des balises option sont corrects ?

ajoute un <?php var_dump($_POST); ?> au début de ta page pour t'assurer que le tableau $_POST est bien présent, et que la valeur du select y est.

Si tu ne trouve toujours pas, copie moi ce que te renvoit le var_dump, et une ligne <option> générée (du code source HTML final)
0
Alain42
 
Bonjour,

Une grosse erreur aussi; il faut mettre une value="..." dans <option..

Comme ça ça irra mieux
 while($ligne=mysql_fetch_array($req)){
      echo "<option value=\"$ligne[0]\">$ligne[0]</option>";
}
0