Page 1 sur 1

Formulaire PHP chez online et choix multiples

Posté : 06 janv. 2006, 19:54
par nini
J'ai besoin d'aide pour un petit problème de récupération de données
d'une liste en choix multiples dans un formulaire PHP (hébergé chez online) il me récupère que la dernière valeur sélectionnée.

Merci de m'aider
Je sais qu'il faut peut être mettre les [] dans le select <select name="choix[]" size="3" multiple> mais après du côté du PHP je ne sais pas ????

Je vous donne le code select de la page HTML :
<select name="choix[]" size="3" multiple>
                              <option value="1">choix1
                              <option value="2">choix2
                              <option value="3">choix3
                              <option value="4">choix4
                              <option value="5">choix5
                                     
</select>
Voici le code PHP donné chez online qui récupére tout sauf les valeurs multiples (il ne prend que la dernière sélectionnées)

<?php


$dest="[email protected]";
$referer= getenv("HTTP_REFERER");

$ok=1;

if($ok){

 $sujet= "Form2Mail de ".$referer;
 $body.="Page d'origine : $referer\n";
 $body.="\n*** Valeurs resultats ***\n";

 if(count($HTTP_POST_VARS)){
    while (list($key, $val) = each($HTTP_POST_VARS)){
       $body.="$key : $val\n";
    }
 }

 if(count($HTTP_GET_VARS)){
    while (list($key, $val) = each($HTTP_GET_VARS)){
      $body.="$key : $val\n";
    }
 }

 $body.="*************************\n";
 if(!email("webmaster",$dest,$sujet,$body)){
     print "erreur envoi email <br>";
 }

?>

Posté : 06 janv. 2006, 22:33
par Cyrano
Pour récupérer toutes les valeurs d'un choix multiple, essaye avec ça:
<?php
$choix = isset($_POST['choix']) ? $_POST['choix'] : "";
if(!empty($choix))
{
    $nb = count($choix);
    echo("<ul>\n");
    for($i = 0; $i < $nb; $i++)
    {
        echo("<li>". $choix[$i] ."</li>\n");
    }
    echo("</ul>\n");
}
?>
Note également que la formulation $HTTP_POST_VARS est obsolète, j'ai utilisé une formulation correcte. C'est valable pour $_GET au lieu de $HTTP_GET_VARS