Création
d'entreprise
Posez votre question Signaler

PHP/MYSQL liste déroulante exportation valeur [Résolu]

DavidGinola 29Messages postés 28 janvier 2009Date d'inscription 5 décembre 2011Dernière intervention - Dernière réponse le 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
Lire la suite 

PHP/MYSQL liste déroulante exportation valeur »

3 réponses
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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 ^^
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Ce document intitulé « PHP/MYSQL liste déroulante exportation valeur » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?