Plusieurs cases à cocher partageant le même nom
Selon le w3c, "Plusieurs cases à cocher dans un formulaire peuvent partager le même nom de contrôle. Ainsi, par exemple, des cases à cocher permettre aux utilisateurs de sélectionner plusieurs valeurs pour un même bien." Toutefois, si vous le faites, PHP permettra de ne prendre que la dernière valeur. Par exemple:
<?php
if ($_POST) {
echo "<pre>";
print_R($_POST);
echo "</pre>";
}
?>
<form action="" method = "post">
<input type="checkbox" name="pet" value="dog" />Dog<br />
<input type="checkbox" name="pet" value="Cat" />Cat<br />
<input type="checkbox" name="pet" value="bird" />bird<br />
<input type="checkbox" name="pet" value="iguana" />iguana<br />
<input type="submit" />
</form>
Si vous validez le formulaire, vous allez voir que la case est cochée, qui apparaît en dernier. Le navigateur envoie à tous, mais ils écrasent les autres. Donc, fixer le même nom à plusieurs cases peuvent causer des problèmes. Il a toujours été comme ça? Il me semble me rappeler qu'il était possible d'envoyer toutes les valeurs dans un tableau.
Je sais que vous pouvez simplement ajouter un [] à la fin du nom pour créer un tableau de valeurs:
<?php
if ($_POST) {
echo "<pre>";
print_R($_POST);
echo "</pre>";
}
?>
<form action="" method = "post">
<input type="checkbox" name="pet[]" value="dog" />Dog<br />
<input type="checkbox" name="pet[]" value="Cat" />Cat<br />
<input type="checkbox" name="pet[]" value="bird" />bird<br />
<input type="checkbox" name="pet[]" value="iguana" />iguana<br />
<input type="submit" />
</form>
Mais le w3c ne spécifie pas que. Honnêtement, je ne me souviens pas si j'ai toujours utilisé le [] à la fin du nom, mais pour une raison que je pense qu'à un certain point, je n'ai pas. Il était tout le temps dans le passé, alors vous pourriez le faire fonctionner sans les []?
http://www.w3.org/TR/html401/interact/forms.html#checkbox
source d'informationauteur Buzu
Vous devez vous connecter pour publier un commentaire.
Qui n'auraient jamais travaillé sans
[]
pas en PHP.W3C ne spécifiez rien sur la façon dont les chaînes de requêtes sont traitées côté serveur. (En ignorant inutiles, obsolète coin du CGI specapplicable uniquement à PHP qu'il a un trou de sécurité jusqu'à récemment).
Il semble que ce modèle est valable de balisage, mais qui ne sont pas couramment utilisés, pour la raison que vous décrivez.
Un modèle similaire est utilisé pour les boutons radio, dont un seul peut être sélectionnée à la fois. (En fait, en donnant à l'entrée radio du même nom est la façon dont le navigateur sait de les traiter comme un groupe). C'est peut-être ce que vous pensiez de la.
Si vous voulez vraiment en PHP, essayez ceci:
Plus sur
php://input
flux peut être trouvé dans La documentation PHP.