POST массив из формы HTML без JavaScript - PullRequest
73 голосов
/ 31 января 2012

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

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

  • Имя
  • Фамилия
  • E-mail
  • Адрес
  • и т.д.

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

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

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

Ответы [ 2 ]

125 голосов
/ 31 января 2012

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

<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'
        )
    )
)
39 голосов
/ 21 июля 2017

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

<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' )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...