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

时间:2015-01-19 01:06:13

标签: php mysql select checkbox

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

我有3张桌子: 1.有id_student的学生 2.带有id_ankieta的ankieta 3. student_ankieta,id_student和id_ankieta

我想使用select或checkbox从数据库中选择学生,然后选择一个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>';?>

1 个答案:

答案 0 :(得分:1)

将所有学生放入数组= key_ 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-”为开头 获取id-student值的n-后面的其余键值。

还是一个主要问题,我不知道从哪里得到$ 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[???]] . "')");
    }
  }

}