PHP/MYSQL liste déroulante exportation valeur

Résolu/Fermé
DavidGinola Messages postés 31 Date d'inscription mercredi 28 janvier 2009 Statut Membre Dernière intervention 5 décembre 2011 - 8 févr. 2010 à 15:01
DavidGinola Messages postés 31 Date d'inscription mercredi 28 janvier 2009 Statut Membre Dernière intervention 5 décembre 2011 - 8 févr. 2010 à 15:29
Bonjour a tous,
Je présente d'abord la situation.
J'ai comme projet de cours un site marchand a réaliser.
Dans ce site j'ai une page ou je peux voir la liste de mes articles, et j'ai une liste déroulante qui me permet de voir les articles selon la catégorie désirées.
J'avais réalisé en cours une technique qui marche mais qui selon mon prof n'était pas optimale car si je créait de nouvelles catégories je devais revoir tout mon code.
J'avais fais une structure avec des Si "liste déroulante contient cela" alors "afficher cela."
Vu que j'ai 5 catégories j'ai répété cette algo 5 fois et c'est cela que mon prof trouvait peu optimisé car plus il y a de catégorie plus je répète mon code



J'ai donc choisis de trouver un code sur internet pour importer les catégories dans ma BDD directement dans ma liste déroulante ce que j'ai fais grâce à ce code :

<form action="Site.php" method="post">
<select name=choix>
<?php
$SQL = "SELECT * FROM categories";

$res = mysql_query($SQL);
while($val=mysql_fetch_array($res)) {
echo "<option>".$val["NoCatégorie"]." :".$val["Libcatégories"]." </option>\n";
}
$id =$_POST['NoCatégorie'];
?>


</select>
<p>
<input type="submit" value="Valider" />
</p>
</form>

le probleme est que je n'arrive pas a afficher les produits en fonction de ce qu'il y a dans ma listbox.

Je pensais que le simple $_POST me permettrait d'extraire la valeur mais je n'y arrive pas une erreur me dit que le champ $id n'est pas connu

le code pour faire afficher mes produits ressemble à ça


$ordi = mysql_query('SELECT * FROM articles where NoCatégorie =$id')or die(mysql_error());



while ($donnees = mysql_fetch_array($ordi) )
{ ensuite le code pour afficher tout mes produits et leurs champs dans un tableau, inutile de le mettre car l'erreur ne vient pas de là.


PS: je ne vois cela que depuis très peu de temps donc soyez indulgent SVP
A voir également:

3 réponses

Camuke Messages postés 224 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 12 août 2011 88
8 févr. 2010 à 15:11
Quelque petite erreur dans le formulaire, voila la bonne version:
<form action="Site.php" method="post">
<select name="choix"> //Je sais pas si c'est vrai important mais il manque des guillemet autour de choix
<?php
$SQL = "SELECT * FROM categories";

$res = mysql_query($SQL);
while($val=mysql_fetch_array($res)) {
echo "<option value=".$val["NoCatégorie"].">".$val["NoCatégorie"]." :".$val["Libcatégories"]." </option>\n";
} //la structure de la liste deroulante <option value="valeur">TexteAAfficher</option>
$id =$_POST['NoCatégorie'];
?>

</select>
<p>
<input type="submit" value="Valider" />
</p>
</form> 


Lors de la reception du formulaire, tu recupere l'idée dans $_POST['choix'];
Voila
0
Defouille Messages postés 388 Date d'inscription mercredi 13 janvier 2010 Statut Membre Dernière intervention 15 novembre 2011 54
8 févr. 2010 à 15:15
Bonjour,

en regardant rapidement j'ai remarqué que ta requete sql est encadré de simple côte :
$ordi = mysql_query('SELECT * FROM articles where NoCatégorie =$id')

Or en php, pour que des variables soient interprétées dans une chaine il faut que celle ci soit définie avec des double côte.

Essaye donc avec :
$ordi = mysql_query("SELECT * FROM articles where NoCatégorie =$id")


J'ai pas vraiment regardé si le reste du code est juste, mais dans tout les cas ton $id ne peut pas être interprété s'il est entre simple côte ;)

En espérant que ça t'aide ^^
0
DavidGinola Messages postés 31 Date d'inscription mercredi 28 janvier 2009 Statut Membre Dernière intervention 5 décembre 2011
8 févr. 2010 à 15:29
Merci a vous deux ^^
Tout fonctionne comme je le souhaite et maintenant je ferai gaffe avec les doubles côtes car la requête était toujours fausse même après correction.
Je ferais gaffe avec la syntaxe maintenant.
0