Несколько входов с таким же именем через POST в php
Возможно ли получить несколько входов с одним и тем же именем для публикации, а затем получить доступ к ним из PHP? Идея такова: у меня есть форма, которая позволяет вводить неопределенное количество физических адресов вместе с другой информацией. Если бы я просто дал каждому из этих полей одно и то же имя для нескольких записей и передал эти данные через почту, сможет ли PHP получить к нему доступ?
Скажем, например, у меня есть пять входных данных на одной странице с именем "xyz", и я хочу получить к ним доступ с помощью PHP. Могу ли я сделать что-то вроде:
$_POST['xyz'][0]
Если это так, это сделало бы мою жизнь в десять раз проще, поскольку я мог бы отправить неопределенный объем информации через форму и обработать ее сервером, просто перейдя через массив элементов с именем "xyz".
Ответы
Ответ 1
Измените имена ваших входов:
<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".
Обратите внимание, что это, вероятно, неправильное решение. Очевидно, что это зависит от данных, которые вы отправляете.
Ответ 2
В вашем html вы можете передать массив для имени i.e
<input type="text" name="address[]" />
Таким образом, php получит массив адресов.
Ответ 3
Для кого-либо, кто это найдет, стоит отметить, что вы можете установить значение ключа во входном имени. Благодаря ответу в POSTing Form Fields с одинаковым атрибутом имени вы также можете переводить строки или целые числа без цитирования.
В ответах предполагается, что вы не против ключевого значения, возвращаемого для PHP, но вы можете установить name=[yourval]
(string или int), который затем позволяет вам ссылаться на существующую запись.
Ответ 4
Может быть:
echo "Welcome".$_POST['firstname'].$_POST['lastname'];
Ответ 5
Эрик отвечает правильно, но проблема в том, что поля не сгруппированы. Представьте, что у вас есть несколько улиц и городов, которые принадлежат друг другу:
<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'],
]
]