Передача обработчику нескольких параметров input

Рейтинг: 1Ответов: 1Опубликовано: 17.04.2015

Имеется таблица с n количеством строк(в данном примере, 12) Форма с полями Все строки выведены с БД в цикле. Каждая из ячеек содержит в себе input, где в атрибут value подставляется соответствующая запись из БД. Прилагаю код:

$bd = mysql_query("SELECT * FROM dgu");

                echo "<table border='0' width='500'><tr>
                <td><b>№</b></td>
                <td><b>Направление</b></td>
                <td><b>Дисциплина</b></td>
                <td><b>Курс/Семестр</b></td>
                <td><b>Группа</b></td>
                <td><b>Вид занятия</b></td>
                <td><b>Нагрузка(часы)</b></td>
                </tr>";
        while ($myrow = mysql_fetch_assoc($bd)) 
           {
        printf ("
                <tr>
                <td><input type='text' value='$myrow[id]' size='4'></td>
                <td><input type='text' value='$myrow[profile]' size='40'></td>
                <td><input type='text' value='$myrow[discipline]' size='20'></td>
                <td><input type='text' value='$myrow[course_semestr]' size='4'></td>
                <td><input type='text' value='$myrow[group]' size='10'></td>
                <td><input type='text' value='$myrow[type]' size='15'></td>
                <td><input type='text' value='$myrow[count_hours]' size='4'></td>
                </tr>
                ");
        }
            echo "</table>";
    echo "<form method=POST action='update.php'>
       <input type='submit' name='submit' id='submit' value='Обновить'>
       </form>";

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

Ответы

▲ 1Принят

Надо к каждому <input> присвоить соответствующее имя в виде массива, например для первых двух это будет <input name='id[]' ...> и <input name='profile[]' ...>.

В обработчике можно написать так:

$id_array = $profile_array = array();

if (isset($_POST['id']))
    foreach ($_POST['id'] as $value)
        $id_array[] = intval($value);

if (isset($_POST['profile']))
    foreach ($_POST['profile'] as $value)
        $profile_array[] = mysql_real_escape_string($value);

А дальше делать с массивами $id_array и $profile_array всё что надо, например считывать поочередно по элементу из двух массивов одновременно и сохранять данные в БД.

Функции mysql_*() лучше не использовать, здесь написано почему.