web-dev-qa-db-fra.com

POST un tableau d'un formulaire HTML sans JavaScript)

J'ai un formulaire un peu complexe et j'espère simplifier le traitement côté serveur (PHP) en publiant nativement un tableau de n-uplets.

La première partie du formulaire représente un tilisateur:

  • Prénom
  • Nom de famille
  • Email
  • Adresse
  • etc

La deuxième partie du formulaire représente un Tree:

  • Fruit
  • La taille
  • etc

Le problème est que je dois pouvoir POST multiple Arbres pour un seul tilisateur sous la même forme. J'aimerais envoyer l’information en tant que simple tilisateur avec un tableau de arbres mais cela peut être trop complexe à faire avec un formulaire. La seule chose qui me vient à l’esprit est d’utiliser javascript pour en créer Message JSON avec un objet User et un tableau d’objets Tree, mais il serait bien d’éviter que javascript ne supporte plus d’utilisateurs (certaines personnes ont des scripts désactivés).

75
styfle

cochez celui-là.

<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 se retrouver ainsi dans le tableau $ _POST [] (format PHP pour une visualisation aisée)

$_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'
        )
    )
)
129
Joseph

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 suit:

<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' )
42
Dan