J'ai un formulaire un peu complexe et j'espère simplifier le traitement côté serveur (PHP) en POSTANT nativement un tableau de tuples.
La première partie du formulaire représente un utilisateur :
- Prénom
- Nom de famille
- Adresse
- etc
La deuxième partie du formulaire représente un arbre :
- Fruit
- la taille
- etc
Le problème est que je dois être capable de POSTER plusieurs arbres pour un seul utilisateur sous la même forme. Je voudrais envoyer les informations en tant qu'utilisateur unique avec un tableau d' arbres, mais cela peut être trop complexe à faire avec un formulaire. La seule chose qui me vient à l'esprit est l'utilisation de javascript pour créer un message JSON avec un objet User et un tableau d'objets Tree. Mais ce serait bien d'éviter le javascript pour prendre en charge plus d'utilisateurs (certaines personnes ont des scripts désactivés).
Réponses:
Vérifiez celui-ci.
<input type="text" name="firstname"> <input type="text" name="lastname"> <input type="text" name="email"> <input type="text" name="address"> <input type="text" name="tree[tree1][fruit]"> <input type="text" name="tree[tree1][height]"> <input type="text" name="tree[tree2][fruit]"> <input type="text" name="tree[tree2][height]"> <input type="text" name="tree[tree3][fruit]"> <input type="text" name="tree[tree3][height]">
il devrait finir comme ça dans le tableau $ _POST [] (format PHP pour une visualisation facile)
$_POST[] = array( 'firstname'=>'value', 'lastname'=>'value', 'email'=>'value', 'address'=>'value', 'tree' => array( 'tree1'=>array( 'fruit'=>'value', 'height'=>'value' ), 'tree2'=>array( 'fruit'=>'value', 'height'=>'value' ), 'tree3'=>array( 'fruit'=>'value', 'height'=>'value' ) ) )
la source
tree[tree 1][fr ui_t]
tree[tree.1][fru:it]
tree[tree@1][fru,it]
_ est-il seulement un délimiteur sûr dans la dénomination des clés?tree[][fruit]
ettree[][height]
ne serait pas valide pour indexer automatiquement le tableau?new formData($("form")[0])
et jQuery$("form").serializeArray()
retournant tous les deuxname="tree[tree1][fruit]"
sous forme de chaîne .... Aide.serialize()
ou.serializeArray()
Vous pouvez également publier plusieurs entrées avec le même nom et les enregistrer dans un tableau en ajoutant des crochets vides au nom de l'entrée comme ceci:
<input type="text" name="comment[]" value="comment1"/> <input type="text" name="comment[]" value="comment2"/> <input type="text" name="comment[]" value="comment3"/> <input type="text" name="comment[]" value="comment4"/>
Si vous utilisez php:
print_r($_POST['comment'])
vous obtiendrez ceci:
Array ( [0] => 'comment1' [1] => 'comment2' [2] => 'comment3' [3] => 'comment4' )
la source