Несколько входов с одинаковым именем через POST в php - PullRequest
105 голосов
/ 24 октября 2011

Можно ли получить несколько входов с одним и тем же именем для публикации, а затем получить к ним доступ из PHP? Идея такова: у меня есть форма, которая позволяет вводить неограниченное количество физических адресов вместе с другой информацией. Если бы я просто дал каждому из этих полей одно и то же имя в нескольких записях и отправил эти данные по почте, смог бы ли PHP получить к ним доступ?

Скажем, например, у меня есть пять входов на одной странице с именем "xyz", и я хочу получить к ним доступ с помощью PHP. Могу ли я сделать что-то вроде:

    $_POST['xyz'][0]

Если это так, это сделало бы мою жизнь в десять раз проще, поскольку я мог бы отправлять неопределенное количество информации через форму и обрабатывать ее на сервере, просто просматривая массив элементов с именем "xyz".

Ответы [ 5 ]

195 голосов
/ 24 октября 2011

Измените имена ваших входных данных:

<input name="xyz[]" value="Lorem" />
<input name="xyz[]" value="ipsum"  />
<input name="xyz[]" value="dolor" />
<input name="xyz[]" value="sit" />
<input name="xyz[]" value="amet" />

Тогда:

$_POST['xyz'][0] == 'Lorem'
$_POST['xyz'][4] == 'amet'

Если это так, это сделает мою жизнь в десять раз легче, так как яможет посылать неопределенное количество информации через форму и обрабатывать ее сервером, просто просматривая массив элементов с именем «xyz».

Обратите внимание, что это, вероятно, неправильное решение.Очевидно, это зависит от данных, которые вы отправляете.

36 голосов
/ 24 октября 2011

В вашем html вы можете передать массив для имени i.e

<input type="text" name="address[]" /> 

Таким образом php получит массив адресов.

1 голос
/ 26 апреля 2019

Эрик отвечает правильно, но проблема в том, что поля не сгруппированы.Представьте, что у вас есть несколько улиц и городов, которые принадлежат друг другу:

<h1>First Address</h1>
<input name="street[]" value="Hauptstr" />
<input name="city[]" value="Berlin"  />

<h2>Second Address</h2>
<input name="street[]" value="Wallstreet" />
<input name="city[]" value="New York" />

Результат будет

$POST = [ 'street' => [ 'Hauptstr', 'Wallstreet'], 
          'city' => [ 'Berlin' , 'New York'] ];

Чтобы сгруппировать их по адресу, я бы рекомендовал использовать то, что Эрик также упомянул всекция комментариев:

<h1>First Address</h1>
<input name="address[1][street]" value="Hauptstr" />
<input name="address[1][city]" value="Berlin"  />

<h2>Second Address</h2>
<input name="address[2][street]" value="Wallstreet" />
<input name="address[2][city]" value="New York" />

Результат будет

$POST = [ 'address' => [ 
                 1 => ['street' => 'Hauptstr', 'city' => 'Berlin'],
                 2 => ['street' => 'Wallstreet', 'city' => 'New York'],
              ]
        ]
0 голосов
/ 16 апреля 2019

Может быть:

echo "Welcome".$_POST['firstname'].$_POST['lastname'];
0 голосов
/ 12 сентября 2016

Для всех, кто найдет это, стоит отметить, что вы можете установить значение ключа во входном имени.Благодаря ответу в Поля формы POSTing с тем же атрибутом имени вы также можете взаимодействовать со строками или целыми числами без кавычек.

Ответы предполагают, что вы не возражаете против значения ключа, возвращающегося для PHPоднако вы можете установить name=[yourval] (string или int), что позволит вам ссылаться на существующую запись.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...