@ivan8m8

Как отправить в базу сразу несколько форм select option по нажатию на одну кнопку submit?

Есть таблица, которая содержит информацию о школьниках.
CREATE TABLE pupis (name TEXT, city TEXT, caretaker TEXT);

При заходе на страницу она сразу же отображается.
Есть кнопка "Sort", которая группирует школьников согласно городам, в которых они проживают.
Также после нажатия на эту кнопку рядом с каждым школьником появляется выпадающий список, в котором необходимо выбрать ответственного.

Как сделать так, чтобы по нажатию на кнопку внизу "Send", все выбранные ответственные со всех option форм для каждого школьника записались в ту самую таблицу? (UPDATE TABLE)

<?php
mb_internal_encoding("UTF-8");
$link = mysql_connect($mysql_host, $mysql_user, $mysql_password)
    or die('' . mysql_error());
mysql_select_db($mysql_dbname) or die('');
mysql_set_charset('utf8');

$query = 'SELECT * FROM pupils';
$result = mysql_query($query) or die(mysql_error());

echo "<table>\n";
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
    echo "\t<tr>\n";
    foreach ($line as $col_value) {
        echo "\t\t<td>$col_value</td>\n";
    }
    echo "\t</tr>\n";
}
echo "</table>\n";

mysql_free_result($result);
mysql_close($link);
?>

<form action="" method="post">
    <input type="submit" name="sort" value="Sort">
</form>

<?php

if (isset($_POST["sort"]))  {
    $link = mysql_connect($mysql_host, $mysql_user, $mysql_password) 
        or die(mysql_error());
    mysql_select_db($mysql_dbname) or die();
    mysql_set_charset('utf8');

    $query = 'SELECT * FROM pupils  WHERE city = "Moscow";' or die("died");
    $result = mysql_query($query) or die(mysql_error());

    if (mysql_num_rows($result) != 0) {
        echo "<h1>Moscow</h1>";
        echo "<table>\n";
        while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
            echo "\t<tr>\n";
            foreach ($line as $col_value) {
                echo "\t\t<td>$col_value</td>\t\t";
            }

            echo "<td><form action=\"\" method=\"post\">";
                echo "<select name=\"choose_caretaker\" required>";
                    echo "<option value=\"0\">Choose a caretaker</option>";
                    echo "<option value=\"Caretaker1\">Caretaker1</option>";
                    echo "<option value=\"Caretaker2\">Caretaker2</option>";
                    echo "<option value=\"Caretaker3\">Caretaker3</option>";
                echo "</select></td>";
            echo "</form>";
            
            echo "</tr>\n";
        }
        echo "</table>\n";
    }

    $query = 'SELECT * FROM pupils  WHERE city = "London";' or die("died");
    $result = mysql_query($query) or die(mysql_error());

    if (mysql_num_rows($result) != 0) {
        echo "<h1>London</h1>";
        echo "<table>\n";
        while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
            echo "\t<tr>\n";
            foreach ($line as $col_value) {
                echo "\t\t<td>$col_value</td>\t\t";
            }

            echo "<td><form action=\"\" method=\"post\">";
                echo "<select name=\"choose_caretaker\" required>";
                    echo "<option value=\"0\">Choose a caretaker</option>";
                    echo "<option value=\"Caretaker1\">Caretaker1</option>";
                    echo "<option value=\"Caretaker2\">Caretaker2</option>";
                    echo "<option value=\"Caretaker3\">Caretaker3</option>";
                echo "</select></td>";
            echo "</form>";
            
            echo "</tr>\n";
        }
        echo "</table>\n";
    }

    mysql_free_result($result);
    mysql_close($link);
}?>

<form action="" method="post">
    <input type="submit" name="send_to_caretakers" value="Send">
</form>

<?if (isset($_POST["send_to_caretakers"]))  {  

    $link = mysql_connect($mysql_host, $mysql_user, $mysql_password) 
        or die(' ' . mysql_error());
    mysql_select_db($mysql_dbname) or die('');
    mysql_set_charset('utf8');

    echo "Sent to the caretakers";
    $temp = $_REQUEST['choose_caretaker'];
    echo $temp;
    // Не понимаю пока самой идеи, как бы это можно было реализовать...

    mysql_close($link); // Закрываем соединение
}
?>
  • Вопрос задан
  • 212 просмотров
Решения вопроса 1
@MrTimon
Ну во первых Вам нужно поле id в таблице которое будет ключом и будет однозначно определять ученика.

Потом, зачем Вы выводите форму для каждого селекта отдельно. Выведите начало формы перед выводом таблицы а конец после кнопки сабмит. А для селестов определите name с айдишкамы школьников (choose_caretaker[$id]).

тогда после сабмита на сервере в переменной $_REQUEST['choose_caretaker'] вы получите массив где ключом будет id ученика, а значение будет значение выбраного Caretaker
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы