Résultat d'une requete sql dans un select form [Résolu]

Messages postés
59
Date d'inscription
lundi 17 janvier 2005
Statut
Membre
Dernière intervention
16 mai 2012
- - Dernière réponse : monoceros01
Messages postés
432
Date d'inscription
vendredi 28 novembre 2003
Statut
Membre
Dernière intervention
20 mars 2006
- 23 oct. 2005 à 12:43
Bonjour à tous !



Voici mon pb :

J'ai trouvé sur le net ce code qui permet de mettre dans un formulaire select les données d'un tableau :

<? $liste= Array("Pommes","Poires","Bananes");
if($_POST["mon_champ"])

{ ?>

Vous avez choisi :

<? echo $_POST["mon_champ"]; ?>




<? } ?>



<FORM method ="POST">

<select name="mon_champ">

<?for($i=0;$i<sizeof($liste);$i++) { ?>

<option

<?if($_POST["mon_champ"]==$liste[$i])
echo "SELECTED"; ?>

><?echo $liste[$i];?></option>

<? } ?>

</select>



</FORM>



Je voudrais faire la meme chose mais avec le résultat d'une requete
sql. Je voudrais donc que mon tableau soit rempli par les résultats de
ma requete et non manuellement.



Merci de m'aider...
Afficher la suite 

10 réponses

Meilleure réponse
Messages postés
432
Date d'inscription
vendredi 28 novembre 2003
Statut
Membre
Dernière intervention
20 mars 2006
3
Merci
Autant pour moi encore une boulette de ma part (bah! il était 3h du mat aussi) <_<



Donc le code définitif est *roulement de tambour* :



<?php

include("connexion.php");

$query = "SELECT nom_cd FROM cd, genre, chanteur";

$query.= "WHERE chanteur.num_chanteur=cd.num_chanteur and
chanteur.num_genre=genre.num_genre and lower(nom_genre) like
'%$genre%'";


$query.= "ORDER BY nom_cd ASC
";


$result = mysql_query($query);



$options = "<option value="">Choisissez</option>";

while($data =
mysql_fetch_array($result))


{

$options.="<option value="".htmlentities($data["nom_cd"])."">";

$options.= htmlentities($data["nom_cd"]) ;


$options.="</option>";


}



$select = "<select name="variable">".$options."</select>";

?>





<form method="post" action="script_quelconque.php">

<?php echo($select); ?> // Boulette!



</form>



J'avais mis <?php echo($options); ? > au lieu de <?php echo($select); ?>

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 207 internautes nous ont dit merci ce mois-ci

Commenter la réponse de monoceros01
Messages postés
59
Date d'inscription
lundi 17 janvier 2005
Statut
Membre
Dernière intervention
16 mai 2012
0
Merci
PS : le if de début ne me servira à rien considérons donc le code suivant :



<? $liste=Array("Pommes","Poires","Bananes"); ?>

<FORM method="POST">

<select name="mon_champ">

<?for($i=0;$i<sizeof($liste);$i++) { ?>

<option

<?if($_POST["mon_champ"]==$liste[$i])
echo "SELECTED"; ?>

><?echo $liste[$i];?></option>

<? } ?>

</select>



</FORM>
Commenter la réponse de boninou
Messages postés
432
Date d'inscription
vendredi 28 novembre 2003
Statut
Membre
Dernière intervention
20 mars 2006
0
Merci
<?php

$query = "SELECT value, option FROM ma_table ";

$query.= "WHERE ma_clause_where ";

// facultatif

$query.= "ORDER BY option ASC "; // facultatif

$result = mysql_query($query,$con_id) or die(mysql_error()); // $con_id est la ressource renvoyée par mysql_connect() (si tu as déjà une variable pour ça utilise la tienne, sinon il faut la créer avant)



$options = "<option value="">Choisissez</option>";
//début de la création de la
liste des options

while($data = mysql_fetch_array($result))
//
boucle d'affichage des données du tableau $data

{

$options.="<option value="".$data["value"]."">";

$options.= $data["option"] ;

$options.="</option>";


//ajout des options

}



$select = "<select name="variable">".$options."</select>"; //création du select

?>



<html>

....

<form method="post" action="script_quelconque.php">

<?php echo($options); ?>



</form>

....

</html>





Voilà =) si tu ne comprends pas ce que font certaines fonctions, cherche leur signification ici.
Et si ça ne fontionne pas (notamment mysql te renvois une erreur)
vérifie bien si ta requête est correct, je n'est donné qu'un schéma
pour exemple comme je ne connais pas la structure de ta base de données.
Commenter la réponse de monoceros01
Messages postés
59
Date d'inscription
lundi 17 janvier 2005
Statut
Membre
Dernière intervention
16 mai 2012
0
Merci
Php me renvoi une erreur lorsque j'ajoute ton code.



Voici le code comme je l'ai ajouté :



<?php

include("connexion.php");

$query = "SELECT nom_cd FROM cd, genre, chanteur";

$query.= "WHERE chanteur.num_chanteur=cd.num_chanteur and
chanteur.num_genre=genre.num_genre and lower(nom_genre) like
'%$genre%'";


$query.= "ORDER BY nom_cd ASC
";


$result = mysql_query($query);



$options = "<option value="">Choisissez</option>";

while($data =
mysql_fetch_array($result))


{

$options.="<option value="".$data["value"]."">";

$options.= $data["option"] ;


$options.="</option>";


}



$select = "<select name="variable">".$options."</select>";

?>





<form method="post" action="script_quelconque.php">

<?php echo($options); ?>



</form>





Et l'erreur :



Parse error : parse error in c:\program files\easyphp1-8\www\boris\result_genre.php on line 61



Et voici la ligne 61 :



$select = "<select name="variable">".$options."</select>";



Merci
Commenter la réponse de boninou
Messages postés
432
Date d'inscription
vendredi 28 novembre 2003
Statut
Membre
Dernière intervention
20 mars 2006
0
Merci
C'est normal, j'ai oublié d'échappé les guillemets

remplace par :

$select = "<select name="variable">".$options."</select>";



T'aurais pu trouver tout seul :p
Commenter la réponse de monoceros01
Messages postés
59
Date d'inscription
lundi 17 janvier 2005
Statut
Membre
Dernière intervention
16 mai 2012
0
Merci
je suis débutant en php dsl.



Mais un nouveau problème se pose



Tout fonctionne sauf que sur ma page il réserve le nb d'emplacements
qu'il faut dans le select en fonction de ma requête mais les valeurs ne
sont pas affichées !!



Exemple : dans ma base j'ai 1 cd qui correspondent au genre rnb. Dans
le select il me met en premier "Choisissez" et en deuxième un
espace blanc. Pareil pour le genre variété française où j'ai deux
enregistrements il me met "choisissez" et deux espaces blancs.



Encore un equestion de débutant ???
Commenter la réponse de boninou
Messages postés
432
Date d'inscription
vendredi 28 novembre 2003
Statut
Membre
Dernière intervention
20 mars 2006
0
Merci
$options.="<option value="".$data["value"]."">";


$options.= $data["option"] ;


$options.="</option>";



Tu à laissé les index de la table $data comme je les avait mis, alors
que je ne pouvais pas deviner ce que ça pouvait être puisque je
connaissais pas ta base de données.

Met ça, ça devrait marcher :

$options.="<option value="".htmlentities($data["nom_cd "])."">";


$options.= htmlentities($data["nom_cd "]) ;


$options.="</option>";



(J'ai rajouté htmlentities pour éviter certains problèmes...)
Commenter la réponse de monoceros01
Messages postés
59
Date d'inscription
lundi 17 janvier 2005
Statut
Membre
Dernière intervention
16 mai 2012
0
Merci
ça fonctionne mais il y a juste un dernier petit détail à régler :

Les noms des cd sont biens marqués dans mon select mais entre le select et le bouton push me il y a écrit : "choisissez" et juste a coté les noms des cd qui sont dans le select. si je ne suis pas assez clair voici le site en ligne : http://boris.szeremeta.free.fr avec l'identifiant test et mot de passe 123. Il faut effectuer la recherche par genre.

Merci.

PS : si tu as des remarques à faire sur mon site je les accepte volontiers.
Commenter la réponse de boninou
Messages postés
59
Date d'inscription
lundi 17 janvier 2005
Statut
Membre
Dernière intervention
16 mai 2012
0
Merci
merci beaucoup de ton aide.

A bientot
Commenter la réponse de boninou
Messages postés
432
Date d'inscription
vendredi 28 novembre 2003
Statut
Membre
Dernière intervention
20 mars 2006
0
Merci
de rien ;)
Commenter la réponse de monoceros01