首先,我想存储这些已提交的复选框的名称,而不是它们的值。
这是我的代码:
<?php
$con=mysqli_connect("localhost","root","","notifier");
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$result = mysqli_query($con,"SELECT * FROM student");
echo "Enter the attendance. Please untick for 'ABSENT' students and submit";
echo "<br>";
echo "<form action=\"d.php\" method=\"post\">";
while($row = mysqli_fetch_array($result))
{
echo "<br>" .$row['classrollno'] . "   <input type=\"checkbox\" name=\"" . $row['studentid'] . "\" value=\"P\" checked>";
}
echo "<input type=\"submit\" name=\"submit\" value=\"submit\">";
echo "</form>";
?>
此代码只是从学生表中提取一列学生卷号,打印它们,并打印它们前面的复选框,默认情况下会选中它们。 复选框的名称将是学生ID(varchar,另一列)。
现在,由于All Checked复选框,即提交到下一页的checbox将具有相同的默认值“P”,我不关心它们的值。
如何将这些复选框的名称存储在一个数组中,然后使用它在表格中为所有这些学生ID执行更新?
答案 0 :(得分:1)
继续将名称添加到数组中。它直截了当。
在$allStudentIds = array();
循环之外声明while
。然后,要存储在该数组中,
$allStudentIds[] = $row['studentid'];
由于您希望稍后使用这些值,您可以直接将它们存储在会话变量中:
$_SESSION['allStudentIds'][] = $row['studentid'];
在上述情况下,$_SESSION['allStudentIds']
将是所有选定学生ID的数组。
注意:您需要在打开session_start()
代码后使用<?php
作为脚本的第一行开始会话。
答案 1 :(得分:1)
使用以下代码:
while($row = mysqli_fetch_array($result))
{
echo '<br>' .$row['classrollno'] . ' <input type="checkbox" name="studentId[]" value="' . $row['studentid'] . '" checked />';
}
然后,当您处理表单时,$_POST['studentId']
变量将包含一个包含所有id的数组。
由于每个学生可能在数据库中插入的值为“P”,因此您不需要将其包含在表单中,只需在查询中对其进行硬编码即可。
答案 2 :(得分:0)
简单地说,在获取while循环中,定义一个数组并将每个复选框值设置为其中一个元素,然后将其指定为会话变量:
while($row = mysqli_fetch_array($result))
{
echo "<br>" .$row['classrollno'] . "   <input type=\"checkbox\" name=\"" . $row['studentid'] . "\" value=\"P\" checked>";
$names[] = $row['studentid'];
}
然后,
$_SESSION['names'] = $names;
答案 3 :(得分:0)
您的混淆似乎源于您正在混合View(HTML中的复选框的名称)和Model / Data(您从数据库查询中获取的student_id,即$ row = mysqli_fetch_array) $结果)在while循环中)。
您需要做的就是在循环之前和echo语句之后创建一个空数组(例如$ studentid_arr),它只对视图(HTML)有所贡献。您当前要做的是将student_ids(而不是复选框的名称)存储在$ studentid_arr中。
可以使用简单的array_push ($studentid_arr,$row['studentid']);
所以你的while循环看起来像
while($row = mysqli_fetch_array($result))
{
echo "<br>" .$row['classrollno'] . "   <input type=\"checkbox\" name=\"" . $row['studentid'] . "\" value=\"P\" checked>";
array_push ($studentid_arr,$row['studentid']);
}
现在您可以将此PHP数组发布到下一个期望这些值的脚本。 (这是我认为你提到下一页的意思)