PHP/MYSQL liste déroulante exportation valeur

Résolu/Fermé
Signaler
Messages postés
31
Date d'inscription
mercredi 28 janvier 2009
Statut
Membre
Dernière intervention
5 décembre 2011
-
Messages postés
31
Date d'inscription
mercredi 28 janvier 2009
Statut
Membre
Dernière intervention
5 décembre 2011
-
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

3 réponses

Messages postés
224
Date d'inscription
lundi 7 mai 2007
Statut
Membre
Dernière intervention
12 août 2011
88
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
Messages postés
388
Date d'inscription
mercredi 13 janvier 2010
Statut
Membre
Dernière intervention
15 novembre 2011
53
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 ^^
Messages postés
31
Date d'inscription
mercredi 28 janvier 2009
Statut
Membre
Dernière intervention
5 décembre 2011

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.