我正在建立一个在线考勤系统

时间:2017-05-01 07:42:10

标签: php mysql

    <?PHP
        session_start();
        $_SESSION["teacher"] = "tech01";
        echo "Favorite teacher is " . $_SESSION["teacher"] . ".<br>";
        include 'db.php';
        ?>
        <html>
        <head></head>
            <body>
            <?php
            if(isset($_POST['submit']))
            {
            $inst=$_POST['inst'];
            $sub=$_POST['sub'];
            $view_student="select s_name from students where s_inst='$inst' AND 
            s_sub='$sub' ";
            $run=mysqli_query($dbcon,$view_student);    
            echo "<form name='form' action='atte.php' method='post'>";  
            echo '<input type="date" name="att">'; // currently for future use
            echo "</br>";
            while($row=mysqli_fetch_array($run)){
            $name=$row['s_name'];
            echo '<input type="checkbox" name="present" >';
            echo "<label>" .$name. "</label>";
            echo "<input type='hidden' name='stun' value='".$name."'/>";
            echo "<input type='hidden' name='inst' value='".$inst."'/>";
            echo "<input type='hidden' name='sub' value='".$sub."'/>";
            echo '<input type="submit" value="Submit_attendance" 
            name="insert">';
            echo "<br>";
            }
            echo "</form>";}
?> 

每当我标记在场的学生时,它都标记所有在场的学生,我该如何保存? 这是在线考勤管理系统的代码。

1 个答案:

答案 0 :(得分:0)

您需要改变三件事:

  1. 您只是从数据库中选择名称。你也应该 选择主键(即student_id)
  2. 获得student_id后,设置表单元素的名称以模仿类似数组的结构。
  3. 在您的PHP代码中,您可以使用键/值foreach循环遍历数组的每个id和值。
  4. 对于上面的第2步,您应该修改现有代码:

    echo '<input type="checkbox" name="present" >';
    

    到此:

    echo "<input type='checkbox' name='present[{student_id}]' >";
    

    请注意,echo语句使用双引号而不是单引号来允许解释变量student_id。

    对于上面的第3步:

    foreach($_POST['present'] as $student_id => $present) {
        if ($present) {
            echo "The student with id of $student_id is present";
        }
    }