如何通过选择或复选框插入多行


How to insert multiple rows by select or checkbox

我在将多行插入一个表时遇到问题。

我有 3 张桌子:1. 有id_student的学生2. 安基塔与id_ankieta3. student_ankieta id_student和id_ankieta

我想使用选择或复选框从数据库中选择学生,然后选择一个id_ankieta。确认后,在表(student_ankieta)中创建了行。现在我可以选择学生,但当我确认时,只有一个学生被添加到数据库中。

谁能帮我整理代码?

     <?php
echo'<form method="post" action="student_ankieta.php">
        <div class="box" style="margin:0 auto; top:0px;">
            <h1>Student - ankieta:</h1>
            <label>
                <span><br/>Ankieta:</span>
            </label>
            <select class="wpis" name="id_ankieta">
                <option>wybierz ankiete</option>';
                $query = "SELECT * FROM ankieta";
                $result = mysql_query($query);
                while ($row = mysql_fetch_array($result)) 
                    {
                       echo '<option value="'.$row['id_ankieta'].'">' . $row{'rok_akademicki'}.' '. $row{'semestr_akademicki'}.' '.$row{'active_ankieta'} .'</option>';
                    }
            echo '
            </select>';
            $query = "SELECT * FROM student";
            $result = mysql_query($query);
            echo'
            <label>
                <span><br/>Wybierz stundentów:</span>
            </label>
            <select multiple="multiple" name="id_student[]" size="10">';
            while ($row = mysql_fetch_assoc($result)) 
                {
                    echo '<option  class="wpis" value="'.$row['id_student'].'" />'.$row{'pesel'}.' '. $row{'nazwisko'}.' '.$row{'imie'} .'</option>';
                }
            echo'<br/><input class="button" type="submit" value="Dodaj ankiete" name="dodaja">';             
            if(isset($_POST['dodaja'])) 
                {
                    $id_ankieta = $_POST['id_ankieta'];
                    if(empty($_POST['id_ankieta']))  
                        {
                            echo '<p style="margin-top:10px; font-size:75%; font-family: Calibri; color: red; text-align:center;">Musisz wypełnić wszystkie pola.</p>';
                        } 
                        else
                            {
                               $id_student = $_POST['id_student'];
                               for ($i = 0; $i < count($id_student); $i++) 
                               {
                                    $id_student = $id_student[$i];
                                    mysql_query("INSERT INTO student_ankieta (id_student, id_ankieta) VALUES ('" . $id_student . "','$id_ankieta')");
                                }
                            }
                }
  echo'</div></form>';?>

将所有学生放入一个数组中,键 = id_student

$query = "SELECT * FROM ankieta";
$result = mysql_query($query);
while ($row = mysql_fetch_assoc($result)) {
  students[$row['id_student']] = array($row['pesel'],$row['nazwisko'],$row['imie'];
}

如果表格已发布,则确认将= 1(来自隐藏输入)
首次输入脚本"确认将 = 0

如果为零,则显示带有一个复选框的所有学生,该复选框的名称包括 n-i_student格式的id_student。

if intval($_POST['confirm']) = 0){

     echo '<form action = "confirm.php" method="post"><input type="hidden" name="confirm" value="1"/><table>';
     foreach ($students as $id => val){
       echo "<tr><td><input type='"checkbox'" name='"n-$id'" value='"1'" />&#x2002;Select&#x2003;</div></td>$val[0]<td>$val[0]</td><td>$val[1]</td><td>$val[2]</td></tr>";
     }
     echo '</table></form>';
}

当确认 = 1

将插入选中的复选框。
检查每个帖子值中以"n-
"开头的键获取 n- 之后的其余键值作为id_student值。

仍然是 1 个主要问题,我不知道从哪里获得 $id_ankieta'
并将其与id_student相匹配。
我把这个值留$val[???]

elseif intval($_POST['confirm']) = 1){
  foreach ($_POST as $k =>$val){
    if (inval($val) == 1 && substr($k,0,2) == 'n-'){
     $id = substr($k,2);
     $sql = mysql_query("INSERT INTO student_ankieta (id_student, id_ankieta) VALUES ('$id','" . $students[$id][$val[???]] . "')");
    }
  }
}