Formulaire PHP chez online et choix multiples

nini
Invité n'ayant pas de compte PHPfrance

06 janv. 2006, 19:54

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>";
 }

?>

Mammouth du PHP | 19672 Messages

06 janv. 2006, 22:33

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
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: