112 votes

POST un tableau à partir 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 POSTANT nativement un tableau de tuples.

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

  • Prénom
  • Nom de famille
  • Courriel
  • Adresse
  • etc.

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

  • Fruits
  • Hauteur
  • etc.

Le problème est que je dois être en mesure de POST plusieurs Arbres pour un seul Utilisateur sous la même forme. J'aimerais envoyer les informations sous la forme d'un seul formulaire. Utilisateur avec un tableau de Arbres mais cela pourrait être trop complexe à réaliser 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 Utilisateur et un tableau d'objets Arbre. Mais il serait bon d'éviter le javascript pour prendre en charge plus d'utilisateurs (certaines personnes ont désactivé scripts).

191voto

Joseph the Dreamer Points 43727

vérifier 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]">

cela devrait donner ceci dans le tableau $_POST[] (format PHP pour faciliter la visualisation)

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

101voto

Dan Points 871

Vous pouvez également afficher plusieurs entrées portant 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' )

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X