Я пытаюсь создать своего рода рынок. Каждый товар на рынке имеет тип (то есть продаваемый товар), значение, количество, имя продавца и идентификатор, и вся эта информация хранится в базе данных MySQL.
Когда пользователь просматривает рынок, все записи на рынке возвращаются. Кроме того, в конце каждой записи появляется текстовое поле ввода. Пользователь может ввести любое число, оставив его пустым (0) и доступным максимальным количеством.
Моя проблема заключается в том, что поскольку каждое поле ввода является результатом цикла while неизвестных итераций, я не могу просто записать код в каждое поле. Я попытался использовать переменную счетчика, чтобы отслеживать и создавать имена, но, похоже, это не работает. Например: name='.$i++.'
В соответствующей заметке, чтобы программа работала, каждому полю нужно отправить два значения – идентификатор (который я могу использовать для поиска остальных значений записи) и количество, которое пользователь хочет приобрести. Я делал это со скрытым полем перед полем количества ввода. Я не уверен, что это хороший способ обойти это, но я должен отметить, что нет необходимости, насколько я могу сказать, что идентификатор хранится в секрете.
Просто так все ясно, вот основной макет интерфейса: http://img850.imageshack.us/img850/2654/marketui.jpg
Обратите внимание, что начальный столбец состоит из введенных пользователем значений (т. Е. 100s являются значениями введенных пользователем текстовых полей). Подцепка состоит в том, что, хотя в этом примере есть 2 строки, фактическое число не является детерминированным, и поэтому я не могу использовать жесткие кодовые имена для каждого поля ввода.
Для первой проблемы просто. Делать:
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']
что вы хотите.