DevZer0 是对的。将所有复选框保留在数据库中的唯一方法是在 html 表单中创建一个隐藏字段,并显示所有复选框(无论它们的初始状态是什么)。例如,您可以像这样保留所有复选框名称
studID1,studID2,studID3,studID4
在隐藏字段的值中。此隐藏字段将被张贴。然后,您必须拆分/分解隐藏字段的值,以获得带有复选框名称的数组。您循环进入该数组,如果在您的帖子参数中找到每个复选框名称的名称,则表示他的复选框已被选中,您将其插入到您的数据库中,出勤率为 1,否则您将其插入您的数据库,出勤率为 0。如果您无法完成,我可以相应地更改您的代码。
编辑
你的表格
<input type='hidden' name='allStudIDs' value='studID1,studID2,studID3,studID4,studID5,studID6,studID7' />
<input type='checkbox' name='studID1" />student 1
<input type='checkbox' name='studID2" />student 2
<input type='checkbox' name='studID3" />student 3
<input type='checkbox' name='studID4" />student 4
<input type='checkbox' name='studID5" />student 5
<input type='checkbox' name='studID6" />student 6
<input type='checkbox' name='studID7" />student 7
和你发布后的脚本
$allStudentIDs = $_POST['allStudIDs'];
$mystudentID = $_POST['studID'];
$tempArray = explode(",", $allStudentIDs);
for ($i=0; $i<count($tempArray); $i++)
{
$studID = $tempArray[$i];
if (isset($_POST[$tempArray[$i]]))
{
$studAtt = 1;
}
else
{
$studAtt = 0;
}
$sql="
INSERT INTO mate_student_att
(attendance,date,studID)
VALUES
('$studAtt','$_POST[myDate]','$studID')
";
if (!mysqli_query($con,$sql))
{
die('Error: ' . mysqli_error($con));
}
echo "1 record added";
}
mysqli_close($con);