choix multiple dans menu déroulant sur formulaire php

WRInaute discret
Bonjour,
Imaginons un menu déroulant dans un formulaire d'inscription, lequel formulaire est ensuite envoyé par email au responsable.
Le menu déroulant comporte... mettons 5 choix possibles (en fait il y en a 21...)
Pour l'instant, l'internaute ne peut choisir qu'un seul "objet"...
J'ai souvent vu des menus déroulants pour lesquels on pouvait choisir plusieurs objets, en faisant Ctrl et en cliquant en même temps sur un autre objet.
Quelqu'un saurait il me dire comment faire ça?

Voilà ce que j'ai mis en place (c'est en php of course) :

<select name="choix">
<option value="choix" selected>Choisissez - Select one</option>
<option value="choix1">choix 1</option>
<option value="choix2">choix 2</option>
<option value="choix3">choix 3</option>
<option value="choix4">choix 4</option>
<option value="choix5">choix 5: </option>
</select>

les données de tout le formulaire sont récupérées, et balancées par email.
La portion qui nous intéresse est :

$choix = $_POST['choix'];

et plus loin,

<select name="choix">
<option value="choix" selected>Choisissez - Please select one</option>
<option value="choix1"<?php if($choix=="choix1"){print "selected=\"selected\"";} ?>>
choix 1 </option>
<option value="choix2"<?php if($choix=="choix2"){print "selected=\"selected\"";} ?>>
choix 2</option>
<option value="choix3"<?php if($choix=="choix3"){print "selected=\"selected\"";} ?>>
choix 3</option>
<option value="choix4"<?php if($navigation=="choix4"){print "selected=\"selected\"";} ?>>
choix 4</option>
<option value="choix5"<?php if($choix=="choix5"){print "selected=\"selected\"";} ?>>
choix 5</option>
</select>

et dans le message qui part par email, on a :

Le participant a choisi : ".$choix ."<br />

Voilà...
J'ai eu beau chercher sur ce forum, pas trouvé de réponse.
Pour information, il s'agit d'étapes d'une expédition voile autour des Amériques, sensibilisation réchauffement climatique etc...

Merci pour votre aide !
A.
 
WRInaute occasionnel
<select name="choix[]" multiple="multiple" size="5 (par exemple)">

la variable retournée $_POST['choix'] est un tableau contenant tous les options sélectionnées.
 
WRInaute occasionnel
Et je te conseillerai d'utiliser une boucle while si tes choix sont inclus dans une base de données ou un fichier externe au script. Comme ça, tu n'as pas à modifier le fichier php quand tu ajoutes une escale ou un bateau...
 
WRInaute discret
MrPringle : Merci pour l'indication. Maintenant il y a bien la possibilité de choisir plusieurs étapes, c'est un bon début :)
Malheureusement, le message de confirmation qui s'affiche sur l'écran, et le mail que reçoit le responsable montrent (les autres éléments marchent bien):

Vous avez choisi l'étape/les étapes: Array

Donc je me suis planté quelque part avec les [ ] mais je ne vois pas où.
Maintenant on a :
une série de variables, puis:
$navigation[] = $_POST['navigation'];

Vient le formulaire, avec son menu déroulant (j'ai supprimé les détails des 21 étapes, mais c'est attrayant :) :

<select name="navigation[]" multiple="multiple" size="21">
<option value="choix" selected>Choisissez - Select one</option>
<option value="etape1">Étape 1</option>
<option value="etape2">Étape 2</option>
<option value="etape3">Étape 3</option>
<option value="etape4">Étape 4</option>
<option value="etape5">Étape 5</option>
...etc jusqu'à Étape 21...

puis, pour récupérer les données :

<select name="navigation[]" multiple="multiple" size="21">
<option value="choix" selected>Choisissez - Please select one</option>
<option value="etape1"<?php if($navigation=="etape1"){print "selected=\"selected\"";} ?>>
Étape 1</option>
<option value="etape2"<?php if($navigation=="etape2"){print "selected=\"selected\"";} ?>>
Étape 2</option>
<option value="etape3"<?php if($navigation=="etape3"){print "selected=\"selected\"";} ?>>
Étape 3</option>
<option value="etape4"<?php if($navigation=="etape4"){print "selected=\"selected\"";} ?>>
Étape 4</option>
<option value="etape5"<?php if($navigation=="etape5"){print "selected=\"selected\"";} ?>>
Étape 5</option>
... etc jusqu'à l'étape 21

le message de confirmation une fois le formulaire soumis :

print "Vous avez choisi l'étape/les étapes: ".$navigation."<br />\n";

l'email que reçoit le responsable :

Le participant a choisi l'étape/les étapes: ".$navigation ."<br />

C'est dans ces deux messages que j'ai la réponse Array au lieu d'avoir la selection du visiteur.
A mon avis le problème vient de là :
if($navigation=="etape1"){print "selected=\"selected\""
mais je ne vois pas quoi...

Erestrebian : Merci, tout cela n'est pas intégré dans une bdd, trop compliqué pour moi pour l'instant, mais j'ai commencé à étudier la question (siteduzero et autres...) je saurai me souvenir de ton conseil le moment venu !

Merci,
A.
 
WRInaute discret
Merci Erestrebian.
Je vais me pencher dessus cette semaine, là je suis charette. En tout cas merci pour ta réponse rapide et précise.
J'espère pouvoir (je devrais pouvoir!) mettre un joli [résolu] sur le sujet du post...
A.
 
Discussions similaires
Haut