У меня небольшая проблема с этой формой. На странице fprm мой код:
<form action="?act=process" method="post">
<?php $sql = "SELECT * FROM schedule WHERE day = '$day' ORDER BY ID ASC";
$hours = mysql_query($sql);
while ($hour = mysql_fetch_array($hours)) { ?>
<input type="text" name="course" value="<?=$hour[course]?>">
<input type="hidden" name="id" value="<?=$hour[ID]?>">
<?php } ?>
<button type="submit">Submit</button>
На странице процесса выглядит следующим образом:
while($id = each($_POST['id']) && $course = each($_POST['course']))
{
//echo "ID $id AND course $course<br/>";
}
Все, что мне нужно сделать, это передать все переменные через некоторое время, чтобы обновить каждую из них в моей базе данных sql.
Ошибка, которую я получаю: Предупреждение: переменная, переданная каждому(), не является массивом или объектом в /path_domain
Как я могу это исправить?
Причина в том, что вы пытаетесь использовать данные id/course в качестве массива, но вы передаете только строки. Чтобы избежать этого, просто создайте поля как массивы, добавив []
к именам полей:
<input type="text" name="course[]" value="<?=$hour[course]?>">
<input type="hidden" name="id[]" value="<?=$hour[ID]?>">
Добавив [] скобки после имени полей.
<form action="?act=process" method="post">
<?php $sql = "SELECT * FROM schedule WHERE day = '$day' ORDER BY ID ASC";
$hours = mysql_query($sql);
while ($hour = mysql_fetch_array($hours)) { ?>
<input type="text" name="course[]" value="<?=$hour[course]?>">
<input type="hidden" name="id[]" value="<?=$hour[ID]?>">
<?php } ?>
<button type="submit">Submit</button>
Array
на выходе. Я предлагаю заменитьeach
наforeach
следующим образом: foreach ($ _POST ['id'] as $ key => $ id) {$ course = $ _POST ['course'] [$ key]; echo "Id is $ id и курс $ course <br/>"; }