Формы с переменным числом полей

Я пытаюсь создать своего рода рынок. Каждый товар на рынке имеет тип (то есть продаваемый товар), значение, количество, имя продавца и идентификатор, и вся эта информация хранится в базе данных MySQL.

Когда пользователь просматривает рынок, все записи на рынке возвращаются. Кроме того, в конце каждой записи появляется текстовое поле ввода. Пользователь может ввести любое число, оставив его пустым (0) и доступным максимальным количеством.

Моя проблема заключается в том, что поскольку каждое поле ввода является результатом цикла while неизвестных итераций, я не могу просто записать код в каждое поле. Я попытался использовать переменную счетчика, чтобы отслеживать и создавать имена, но, похоже, это не работает. Например: name='.$i++.'

В соответствующей заметке, чтобы программа работала, каждому полю нужно отправить два значения – идентификатор (который я могу использовать для поиска остальных значений записи) и количество, которое пользователь хочет приобрести. Я делал это со скрытым полем перед полем количества ввода. Я не уверен, что это хороший способ обойти это, но я должен отметить, что нет необходимости, насколько я могу сказать, что идентификатор хранится в секрете.

Просто так все ясно, вот основной макет интерфейса: http://img850.imageshack.us/img850/2654/marketui.jpg

Обратите внимание, что начальный столбец состоит из введенных пользователем значений (т. Е. 100s являются значениями введенных пользователем текстовых полей). Подцепка состоит в том, что, хотя в этом примере есть 2 строки, фактическое число не является детерминированным, и поэтому я не могу использовать жесткие кодовые имена для каждого поля ввода.

Related of "Формы с переменным числом полей"

Для первой проблемы просто. Делать:

 for ($i = 0; $i < sizeOf($returnedSQLarray); $i++) { //your display code .... .... echo("<input name='quantity-$i'>"); } 

хотя мне все еще трудно понять, почему вы не можете использовать идентификатор продукта в атрибуте имени количества как-то. for() циклов for() отлично подходят для такого цикла, так что, если это действительно так, как вам нужно, вы будете справляться с этим.

Скрытый ввод прекрасен. Довольно стандартный, даже. Любой, кто хочет, может отправить ваш веб-сервер, независимо от того, какие данные они хотят, поэтому вам все равно нужно заботиться о безопасности на сервере.

Моя проблема заключается в том, что поскольку каждое поле ввода является результатом цикла while неизвестных итераций, я не могу просто записать код в каждое поле. Я попытался использовать переменную счетчика, чтобы отслеживать и создавать имена, но, похоже, это не работает.

Назовите свои данные следующим образом:

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

Затем в вашем PHP $_POST['myName'] или $_GET['myName'] является массивом.

Это описано здесь .


В соответствующей заметке, чтобы программа работала, каждому полю нужно отправить два значения – идентификатор (который я могу использовать для поиска остальных значений записи) и количество, которое пользователь хочет приобрести. Я делал это со скрытым полем перед полем количества ввода.

Звучит прекрасно для меня.

Чтобы расширить то, что сказал @Michael в своем комментарии, вам нужно включить name='id' в массив, например this (PHP):

echo '<input type="text" name="id[' . $i . ']">'

Где $i увеличивается каждый цикл.

Когда форма отправлена, вы можете получить доступ к этому массиву следующим образом:

$_POST['id']['1']

Замените ['1'] что вы хотите.