请我目前正在用php进行学校成绩计算项目。我有一个页面,可以让所有注册了特定主题的学生都参加。 while循环针对每个学生的姓名(CA1,CA2和考试)生成三个文本框。请任何人可以帮助我解决方案吗?提交表单后,只有最后一个条目进入数据库。下面是我的代码。
<?php
session_start();
include 'header_staff.php';
$subject=$_POST['subject'];
$user_id=$_SESSION['user_id'];
$get=mysql_query("SELECT * FROM staffrecord WHERE user_id='$user_id'",$conn);
$go=mysql_fetch_array($get);
$class=$go['class_id'];
$sql=mysql_query("SELECT * FROM student_enrollment WHERE class_id='$class' AND subject_id='$subject'",$conn);
echo '<form action="submitrslt.php" method="post">';
while($subj=mysql_fetch_array($sql)){
echo $subj['name'];
echo '<input type="text" name="ca1" />';
echo '<input type="text" name="ca2" />';
echo '<input type="text" name="exam" /><br><br>';
}
echo '<input type="submit" value="submit" />';
?>
最佳答案
解决此问题的方法是通过在输入名称中添加[]
来使用输入数组:
while($subj=mysql_fetch_array($sql)){
echo $subj['name'];
echo '<input type="text" name="ca1[]" />';
echo '<input type="text" name="ca2[]" />';
echo '<input type="text" name="exam[]" /><br><br>';
}
此外,您可以在每次迭代中使用表的主键作为索引(让我们假设它是
$subj['id']
,但是如果在您的情况下更有意义,您也可以使用$subj['name']
作为索引):while($subj=mysql_fetch_array($sql)){
echo $subj['name'];
echo '<input type="text" name="ca1[<?php echo $subj['id'] ?>]" />';
echo '<input type="text" name="ca2[<?php echo $subj['id'] ?>]" />';
echo '<input type="text" name="exam[<?php echo $subj['id'] ?>]" /><br><br>';
}
这样,您可以在发布后轻松地从结果数组中识别值。
PS:确保在不验证或清除用户输入的情况下永远不要信任用户输入-确保
$_POST['subject']
是数字。您可以找到有关如何实现此目标的大量有用提示。