Передавать переменные из одного в другое время

1

У меня небольшая проблема с этой формой. На странице 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

Как я могу это исправить?

Теги:
foreach
while-loop

2 ответа

3
Лучший ответ

Причина в том, что вы пытаетесь использовать данные id/course в качестве массива, но вы передаете только строки. Чтобы избежать этого, просто создайте поля как массивы, добавив [] к именам полей:

     <input type="text" name="course[]" value="<?=$hour[course]?>">
     <input type="hidden" name="id[]" value="<?=$hour[ID]?>">
  • 0
    Ошибка теперь исчезает при выводе выглядит как этот ID 1 И ID массива курса 1 И ИД массива курса 1 И Массив курса
  • 0
    @Adrian Как вы можете видеть на php.net/manual/en/function.each.php , каждый возвращает массив, а не строку / число, поэтому вы получаете Array на выходе. Я предлагаю заменить each на foreach следующим образом: foreach ($ _POST ['id'] as $ key => $ id) {$ course = $ _POST ['course'] [$ key]; echo "Id is $ id и курс $ course <br/>"; }
Показать ещё 2 комментария
0

Добавив [] скобки после имени полей.

<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>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню