liste deroulante

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : liste deroulante

par heddicmi » 23 sept. 2005, 11:03

Ca peux toujours servir... N'oublies pas le tag [Résolu] ;)

par xavier100 » 23 sept. 2005, 10:59

je viens de m'en rendre compte....j'avais mis

Code : Tout sélectionner

echo "<select name='select1'>";
quel cretin je suis!!

En résumé.....
OBJECTIF :

On va crée une liste déroulante comportant toutes les salles actives. Quand on cliquera sur notra salle, ce n'est pas le nom de la salle qui sera envoyé par méthode POST mais plutot son "id".

Hypothèse :
Dans votre table "liste_salle", vous avez 3 champs dont l'id est unique dans chaque ligne.
Exemple :

Id salle_nom active
1 salle1 1
2 salle2 0
3 salle3 1

Le champs "active" permet de liste que les salles ouverte (=1), si "active=0" alors la salle est dite "fermée".


CODE :

Code : Tout sélectionner

<form method="post" action="reservation.php"> <?php // liste deroulante "nom de la salle" echo "<select name='id'>"; // on se connecte à MySQL $db = mysql_connect('localhost', 'root', '') OR DIE (mysql_error()); // on sélectionne la base mysql_select_db('test',$db); // la requete $requete=mysql_query("SELECT id,nom_salle FROM liste_salle WHERE active='1'"); while ($val=mysql_fetch_array($requete)) { echo "<option value=$val[0]>$val[1]</option>"; } echo "</select>"; // la valeur recupere apres le post est if (isset($_POST['id'])) { $id=$_POST['id'];} ?> <input type="submit" name="Submit" value="Afficher la salle"> </form>
Là où il faut faire attention , c'est le nom du "select", en effet, la valeur passée aura pour nom "id" et pas $val[0]!!

En esperant que laisser la solution aidera un jour quelqu'un ...
Cordialement,
Xavier

par heddicmi » 23 sept. 2005, 10:43

Et c'est totu à fait normal... La variable qui est transmises portera le nom de ta liste déroulante...

par xavier100 » 23 sept. 2005, 10:36

j'ai bien : <OPTION value=1>salle 1</option> d'ialleurs, j'avais fais une erreur dans le Value=$val[0] en mettant des cotes.

le souci vient du POST....aucune valeur n'est passée dans :

Code : Tout sélectionner

$_POST[$val[0]]

par heddicmi » 23 sept. 2005, 10:18

Bin regarde dans le source de ta page générée pour voir si tu obtiens un truc du genre :
<OPTION value=1>salle 1</option>

par xavier100 » 23 sept. 2005, 10:09

ca fait un moment que je fais du php, mais la je tourne en rond...j'ai fais ma boucle avec un while, voir code :

Code : Tout sélectionner

<form method="post" action="reservation.php"> <?php // liste deroulante "nom de la salle" echo "<select name='select1'>"; // on se connecte à MySQL $db = mysql_connect('localhost', 'root', '') OR DIE (mysql_error()); // on sélectionne la base mysql_select_db('test',$db); // la requete $requete=mysql_query("SELECT id,nom_salle FROM liste_salle WHERE active='1'"); while ($val=mysql_fetch_array($requete)) { echo "<option value='$val[0]'>$val[1]</option>"; } echo "</select>"; ?> <input type="submit" name="Submit" value="Afficher la salle"> </form>
mais l'id n'est pas passé apparemment....

par heddicmi » 23 sept. 2005, 10:00

Je vais pas de donner la réponse, mais juste te guider...

Tout d'abord, dans une liste déroulante, tu as pu remarquer que tu remplissais 2 endroits de la balise <OPTION> (là où tu as mis tes 2 $nom_salles)... L'un des 2 correspond à la valeur qui est envoyé par le formulaire, le second et celui qui s'affiche à l'écran.

De plus, tu peux élargir ta requête, tu n'es pas obligé de faire SELECT nom_salle FROM ..., tu peux récupérer un autre champ, comme l'id.

Enfin juste, ton code à un soucis... Tu as écrits mysql_numrows(), alors que c'est mysql_num_rows()...
Il faudrait aussi que tu te penches sur les boucles while histoire d'optimiser un peu...

liste deroulante

par xavier100 » 23 sept. 2005, 09:51

bonjour,

j'ai cherche su le forum mais j ai pas trouvé chaussure à mon pied....

A partir de ma base, je crée une liste deroulante qui affiche toutes les salles de ma base, voir code suivant:

Code : Tout sélectionner

<form method="post" action="reservation.php"> <?php // liste deroulante "nom de la salle" echo '<select name="nom_salle">'; // on se connecte à MySQL $db = mysql_connect('localhost', 'root', '') OR DIE (mysql_error()); // on sélectionne la base mysql_select_db('test',$db); // la requete $requete=mysql_query("SELECT nom_salle FROM liste_salle WHERE active='1'"); echo mysql_error(); $nblignes = mysql_numrows($requete); for ($i=0;$i<$nblignes;$i++) { $nom_salle = mysql_result($requete,$i,"nom_salle"); echo "<option value=$nom_salle>$nom_salle</option>"; } echo '</select>'; mysql_close(); ?> <input type="submit" name="Submit" value="Afficher la salle"> </form>

Mon probleme est que je voudrais afficher le nom de toutes mes salles dans la liste deroulante et puis une fois cliquer sur le "submit" alors j'enverrai non pas le nom de ma salle mais l'id qui lui correspond dans ma base.Si quelqu'un a une idée....

Cordialement,
xavier