Voici ce que j'ai compris:
La soumission de champs de formulaire à valeurs multiples, c'est-à-dire la soumission de tableaux via des variables GET / POST, peut être effectuée de différentes manières, car une norme n'est pas nécessairement expliquée.
Trois façons possibles d'envoyer des champs ou des tableaux à valeurs multiples seraient:
?cars[]=Saab&cars[]=Audi
(Meilleur moyen - PHP lit ceci dans un tableau)
?cars=Saab&cars=Audi
(Mauvaise façon - PHP n'enregistrera que la dernière valeur)
?cars=Saab,Audi
(Je n'ai pas essayé ça)
Exemples de formulaires
Sur un formulaire, les champs à valeurs multiples peuvent prendre la forme d'une boîte de sélection définie sur plusieurs :
<form>
<select multiple="multiple" name="cars[]">
<option>Volvo</option>
<option>Saab</option>
<option>Mercedes</option>
</select>
</form>
(REMARQUE: dans ce cas, il serait important de nommer le contrôle de sélection some_name[]
, afin que les variables de requête résultantes soient enregistrées en tant que tableau par PHP)
... ou comme plusieurs champs cachés du même nom :
<input type="hidden" name="cars[]" value="Volvo">
<input type="hidden" name="cars[]" value="Saab">
<input type="hidden" name="cars[]" value="Mercedes">
REMARQUE: l' utilisation field[]
de plusieurs valeurs est vraiment mal documentée. Je n'en vois aucune mention dans la section sur les clés à valeurs multiples dans la chaîne de requête - Wikipedia , ou dans les documents du W3C traitant des entrées à sélection multiple.
MISE À JOUR
Comme l'ont souligné les commentateurs, cela est très spécifique au cadre. Quelques exemples:
Chaîne de requête:
?list_a=1&list_a=2&list_a=3&list_b[]=1&list_b[]=2&list_b[]=3&list_c=1,2,3
Rails:
"list_a": "3",
"list_b":[
"1",
"2",
"3"
],
"list_c": "1,2,3"
Angulaire:
"list_a": [
"1",
"2",
"3"
],
"list_b[]": [
"1",
"2",
"3"
],
"list_c": "1,2,3"
( Discussion angulaire )
Voir les commentaires pour des exemples dans node.js , Wordpress , ASP.net
Maintenir l'ordre:
Une autre chose à considérer est que si vous avez besoin de maintenir l' ordre de vos éléments (c'est-à-dire un tableau en tant que liste ordonnée), vous n'avez vraiment qu'une seule option, qui est de passer une liste de valeurs délimitée et de la convertir explicitement en un tableau vous-même.