POST массив из HTML-формы без javascript

У меня есть форма, которая немного сложна, и я надеюсь упростить обработку на стороне сервера (PHP) изначально POSTing из массива кортежей.

Первая часть формы представляет пользователя:

  • Имя
  • Фамилия
  • Email
  • Адрес
  • и т.д.

Вторая часть формы представляет Дерево:

  • Фрукты
  • Высота
  • и т.д.

Проблема в том, что мне нужно иметь возможность POST нескольких деревьев для одного пользователя в той же форме. Я хотел бы отправить информацию в виде единого пользователя с массивом деревьев, но это может быть слишком сложным для формы. Единственное, что приходит на ум - использовать javascript для создания некоторого сообщения JSON с объектом User и массивом объектов Tree. Но было бы неплохо избежать javascript для поддержки большего числа пользователей (у некоторых людей отключены скрипты).

Ответ 1

проверьте это.

<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]">

он должен быть таким же в массиве $_POST [] (формат PHP для легкой визуализации)

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

Ответ 2

Вы также можете размещать несколько входов с тем же именем и сохранять их в массив, добавляя пустые квадратные скобки к имени ввода следующим образом:

<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"/>

Если вы используете php:

print_r($_POST['comment']) 

вы получите следующее:

Array ( [0] => 'comment1' [1] => 'comment2' [2] => 'comment3' [3] => 'comment4' )