Php While循环使用单选按钮向数据库中插入值,适用于许多用户
此函数用于将值插入数据库。首先,它将列出“$class”班上的所有学生。界面如下图所示: //我不能发布图片,因为我没有太多的声誉。但是,界面上显示的是,它将列出所有的学生,包括列号、出生号、学生姓名、出勤情况。在考勤栏中,将显示3个单选按钮,即PT、AT、MC。表外有一个提交按钮 问题是,当我在单击两个学生的单选按钮后单击submit按钮时,数据库中没有插入任何内容Php While循环使用单选按钮向数据库中插入值,适用于许多用户,php,mysql,database,foreach,while-loop,Php,Mysql,Database,Foreach,While Loop,此函数用于将值插入数据库。首先,它将列出“$class”班上的所有学生。界面如下图所示: //我不能发布图片,因为我没有太多的声誉。但是,界面上显示的是,它将列出所有的学生,包括列号、出生号、学生姓名、出勤情况。在考勤栏中,将显示3个单选按钮,即PT、AT、MC。表外有一个提交按钮 问题是,当我在单击两个学生的单选按钮后单击submit按钮时,数据库中没有插入任何内容 $id = 1; $getdata = mysql_query("select * from student where cla
$id = 1;
$getdata = mysql_query("select * from student where class = '$class' order by name ") or die(mysql_query);
while($row = mysql_fetch_assoc($getdata))
{
if(isset($_POST['a'.$id]))
{
$status = $_POST['a'.$id];
if(!empty($status))
{
if($status == "present")
{
$attend = 1;
}
else if($status == "absent")
{
$attend = 0;
}
else if($status == "mc")
{
$attend = 1;
}
$query = "INSERT INTO attendance VALUES ('$birth_no','$date','$status','$attend')";
if($query_run = mysql_query($query))
{
echo 'Insert attendance done';
}
else
{
echo'Attendance not inserted.';
}
}
else
{
echo 'Please enter all fields';
}
}
else
{
//FORM CODE HERE
?>
<form action="addattend.php" method = "POST">
<?php
$birth_no= $row['birth_no'];
$name = $row['name'];
?>
<tr>
<td><center><?php echo $id ?></center></td>
<td><center><?php echo $date ?></center></td>
<td><center><?php echo $birth_no ?></center></td>
<td><center><?php echo $name ?></center></td>
<?php
echo'<td>
<input type="radio" name="a'.$id.'" value="present">PT
<input type="radio" name="a'.$id.'" value="absent">AT
<input type="radio" name="a'.$id.'" value="mc">MC
</td>
</tr> ';
}
$id++;
}
?>
</table>
<center><input type="submit" value="Submit"></center>
</form>
<?php
有人能帮我解决这个问题吗?我试着解决这个问题一个星期。但是什么也没有出来。非常感谢你的好意。多谢各位 我真的不明白-您正在循环一个名为$_POST['a'.$id.]的数组,但是如果我查看您的表单,您的输入中没有创建这样的数组。您使用的单选按钮类似于MC,如果MC处于活动状态,它将创建一个以MC为值的$_POST['a1']。但是$\u POST['a1']不是数组,它只包含这个值 因此,您应该退出foreach循环,将mit$\u POST['a'.$id]作为您的$status。在其他作品中,制作一个
$status = $_POST['a'.$id] // by the way you do not need .'' in the end of the key
而不是你的foreach循环
此外,您的脚本似乎不安全。您没有使用csrf、xss和sql注入保护。您确实需要了解php应用程序csrf、xss和sql注入中的安全性。这是非常重要的 看看这是否有帮助。我根据上面的各种注释对表单显示/处理逻辑进行了一些更改。我没有机会测试这个,所以可能会有一些小的格式错误。此外,应该可以进一步简化此代码
$getdata = mysql_query("select * from student where
class = '$class' order by name ") or die(mysql_query);
// form processing logic goes here
if (isset($_POST['submit'])){
$id = 1;
while($row = mysql_fetch_assoc($getdata)){
if(isset($_POST['a'.$id])) {
$status = $_POST['a'.$id];
if(!empty($status)){
if(($status == "present" || $status == "mc")){
$attend = 1;
}
else if($status == "absent"){
$attend = 0;
}
$query = "INSERT INTO attendance(birth_no, date, status, attend)
VALUES ('$birth_no','$date','$status','$attend')";
if($query_run = mysql_query($query)){
echo 'Insert attendance done';
}
else{
echo'Attendance not inserted.';
}
}
else{
echo 'Please enter all fields';
}
}
$id ++;
} // end while
} // end if
// show the form here
else {
?>
<form action="addattend.php" method = "POST">
<table>
<?php
$id = 1;
while($row = mysql_fetch_assoc($getdata)){
$birth_no= $row['birth_no'];
$name = $row['name'];
?>
<tr>
<td><center><?php echo $id ?></center></td>
<td><center><?php echo $date ?></center></td>
<td><center><?php echo $birth_no ?></center></td>
<td><center><?php echo $name ?></center></td>
<td>
<input type="radio" name="a<?php echo $id; ?>" value="present">PT
<input type="radio" name="a<?php echo $id; ?>" value="absent">AT
<input type="radio" name="a<?php echo $id; ?>" value="mc">MC
</td>
</tr>
<?php
$id ++;
} // end while
?>
</table>
<center><input type="submit" name="submit" value="Submit"></center>
</form> <!-- end the form here -->
<?php
} // end else
?>
我认为您根本不需要使用foreach循环,因为status变量将只有一个值,所以从技术上讲,没有什么可迭代的。另外,由于insert查询语句可能不正确,您可以发布考勤表的外观吗?表名:考勤,列:birth\u novarchar20,datedatedate,statusvarchar20,Attendvarchar5您是否收到更新代码的错误消息?没有错误消息。它返回到单击提交按钮之前的第一个状态。我已经按照您的要求编辑了代码。但是,它仍然不起作用。当我编辑您给我的代码时,仍然没有发生任何事情:您可能需要根据可能收到的任何错误消息对此代码进行更多更改。