В настоящее время я разрабатываю веб-сайт, который считывает информацию из базы данных MySQL на PHP и распечатывает форму для каждой строки. Это делается с помощью цикла while, поэтому форма выводится внутри цикла. Однако всякий раз, когда я отправляю форму, многие значения не публикуются, потому что на странице есть формы с тем же ИМЯ и ИДЕНТИФИКАТОРом.

Как я могу распечатать одну форму для каждого элемента в базе данных и соответствующим образом обработать эту форму? Спасибо!

while (*this goes through each row in the database) {
    echo "<form name='myForm' id='myForm' method='post' action=''>
          <input type='text' name='text1'>
          </form>";
}

Я хочу использовать цикл для печати динамического числа форм.

0
felix_xiao 25 Сен 2013 в 04:16
Вместо этого используйте class, id должен быть уникальным.
 – 
The Alpha
25 Сен 2013 в 04:18

1 ответ

Лучший ответ

Просто измените имя и идентификатор формы на каждой итерации, добавляя счетчик в свой цикл.

$i = 0;
while (*this goes through each row in the database) {
    echo "<form name='myForm" . $i . "' id='myForm" . $i . "' method='post' action=''>
          <input type='text' name='text1'>
          </form>";
    $i++;
}

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

2
Mike Brant 25 Сен 2013 в 04:18
Мне это нравится, но как мне обработать и проверить форму? Нужно ли мне писать функцию для каждого имени формы? Спасибо!
 – 
felix_xiao
25 Сен 2013 в 05:31
1
Нет. Вы можете добавить класс к формам и либо использовать jQuery, либо document.getElementsByClassName, чтобы получить их все сразу.
 – 
Collin Grady
25 Сен 2013 в 05:39
1
Вы можете использовать одну функцию проверки, просто передать в функцию текущую отправленную форму (т. Е. Используя this) и действовать только с переданной формой и ее дочерними входами.
 – 
Mike Brant
25 Сен 2013 в 20:30