如何将考勤数据从表单导入mysql数据库


how to attendance data from form into mysql database?

我用这个表格来显示学生名单和一个单选按钮/下拉列表来放置当前缺席的东西,我想知道如何将学生的全部数据和出勤率存储到我的数据库中

<form name="insert-attendance.php" action="insert-attendance.php" method="post">
    <?php
        include('connection.php');
        $result = $db->prepare("SELECT * FROM sc_students WHERE Student_Class='$classname' AND  Student_Section='$section'");
        $result->execute();
        for ($i = 0; $row = $result->fetch(); $i++) {
            ?>
            <tr>
                <td><input type="text" name="stuid" value="<?php echo $row['Student_id'] ?>"></input></td>
                <td><input type="text" name="stuname" value="<?php echo $row['Student_name'] ?>"></input></td>
                <td><input type="text" name="stuclass" value="<?php echo $row['Student_Class'] ?>"></input></td>
                <td><input type="text" name="section" value="<?php echo $row['Student_Section'] ?>"></input>
                    <input type="hidden" value="<?php echo date("Y-m-d"); ?>" name="attdate">
                <td>
                    <select name="attndc">
                        <option value="present">PRESENT</option>
                        <option value="absent">ABSENT</option>
                        <option value="leave">LEAVE</option>
                    </select>
                </td>
            </tr>
            <?php
        }
    ?>
    <input type="submit" value="submit">
</form>

这是我的insert.php文件,但不起作用

<?php
    $studentid = $_POST['stuid'];
    $stuname = $_POST['stuname'];
    $stuclass = $_POST['stuclass'];
    $section = $_POST['section'];
    $attdate = $_POST['attdate'];
    $attndc = $_POST['attndc'];
    include "connection.php";
    $values = "$studentid, $stuname, $stuclass, $section, $attdate, $attndc";
    $sql = array();
    $sql[] = '("' . int($row['student_id']) . '' . mysql_real_escape_string($row['stuclass']) . '", ' . $row['section'] . ', ' . $row['attndc'] . ', ' . $row['attdate'] . ' )';
    $sql = 'INSERT INTO sc_attendance (student_id, class, section, status,attendance_date) VALUES ' . implode(',', $sql);
    $stmt = $db->prepare($sql);
    $db->execute($sql);
?>

你必须使用像stuid[],stuname[]这样的名称数组来输入html表单中的字段,现在所有学生的输入字段都有相同的名称stuid,stuname。在HTML中,如果两个输入字段的名称相同,则最后一个字段将被视为最终输入字段,所有其他输入字段都将被丢弃(事实上,它们的值将被最后一个域替换)。为了避免替换最后一个字段,您必须使用带名称的[],并在它们进入PHP后将其视为数组。您的表格如下所示:

<form name="insert-attendance.php" action="insert-attendance.php" method="post">
    <?php
        include('connection.php');
        $result = $db->prepare("SELECT * FROM sc_students WHERE Student_Class='$classname' AND  Student_Section='$section'");
        $result->execute();
        for ($i = 0; $row = $result->fetch(); $i++) {
            ?>
            <tr>
                <td><input type="text" name="stuid[]" value="<?php echo $row['Student_id'] ?>"></input></td>
                <td><input type="text" name="stuname[]" value="<?php echo $row['Student_name'] ?>"></input></td>
                <td><input type="text" name="stuclass[]" value="<?php echo $row['Student_Class'] ?>"></input></td>
                <td>
                    <input type="text" name="section[]" value="<?php echo $row['Student_Section'] ?>"></input>
                    <input type="hidden" value="<?php echo date("Y-m-d"); ?>" name="attdate[]">
                <td>
                    <select name="attndc[]">
                        <option value="present">PRESENT</option>
                        <option value="absent">ABSENT</option>
                        <option value="leave">LEAVE</option>
                    </select>
                </td>
            </tr>
            <?php
        }
    ?>
    <input type="submit" value="submit">
</form>

现在在insert.php中,您必须将输入字段视为数组,这样您就可以获得所有学生的数据并将其插入数据库表:

<?php
    include "connection.php";
    $total = count($_POST['stuid']);
    for($i=0;$i<$total;$i++){
        $studentid = $_POST['stuid'][$i];
        $stuname = $_POST['stuname'][$i];
        $stuclass = $_POST['stuclass'][$i];
        $section = $_POST['section'][$i];
        $attdate = $_POST['attdate'][$i];
        $attndc = $_POST['attndc'][$i];
        $sql = $db->prepare("INSERT INTO sc_attendance (student_id, class, section, status,attendance_date) VALUES (?, ?, ?, ?, ?)");
        $sql->bind_param($studentid, $stuclass, $section, $attdate, $attndc);
        $db->execute($sql);
    }
?>

您在sql语句和查询中犯了许多错误。我已经帮你纠正了。