2

首先,我想存储提交的这些复选框的名称,而不是它们的值。

这是我的代码:

<?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'] . "&nbsp&nbsp;&nbsp<input type=\"checkbox\" name=\"" . $row['studentid'] . "\" value=\"P\" checked>";
}
    echo "<input type=\"submit\" name=\"submit\" value=\"submit\">";
echo "</form>";
?>

此代码只是从学生表中获取一列学生卷号,打印它们,并在它们前面打印一个默认选中的复选框。复选框的名称将是学生 ID(varchar,另一列)。

现在由于所有选中的复选框,即将提交到下一页的复选框将具有相同的默认值“P”,我不关心它们的值。

如何将这些复选框的名称存储在一个数组中,然后使用它在表中为所有这些学生 ID 执行更新?

4

4 回答 4

1

使用以下代码:

while($row = mysqli_fetch_array($result))
{
    echo '<br>' .$row['classrollno'] . '&nbsp;&nbsp;&nbsp;<input type="checkbox" name="studentId[]" value="' . $row['studentid'] . '" checked />';
}

然后,当您处理表单时,该$_POST['studentId']变量将包含一个包含所有 id 的数组。

由于每个学生可能插入到数据库中的值是“P”,因此您无需将其包含在表单中,只需将其硬编码到查询中即可。

于 2013-10-06T12:55:24.693 回答
1

继续将名称添加到数组中。它直截了当。

声明$allStudentIds = array();while循环。然后,要存储在该数组中,

$allStudentIds[] = $row['studentid'];

由于您想稍后使用这些值,您可以直接将它们存储在会话变量中:

$_SESSION['allStudentIds'][] = $row['studentid'];

在上述情况下,$_SESSION['allStudentIds']将是一个包含所有选择的学生 ID 的数组。

注意:您需要在打开标签session_start()后使用脚本中的第一行来启动会话。<?php

于 2013-10-06T12:49:09.067 回答
0

您的困惑似乎源于您将视图(HTML 中复选框的名称)和模型/数据(您从数据库查询中获得的 student_id 即 $row = mysqli_fetch_array($result)在while循环中)。

您需要做的就是在循环之前和回显语句之后创建一个空数组(例如 $studentid_arr),这只是对视图(HTML)有贡献,您可以对数据进行一些处理。您当前要做的是将 student_ids(而不是复选框的名称)存储在 $studentid_arr 中。

这可以通过一个简单的array_push ($studentid_arr,$row['studentid']);

所以你的while循环看起来像

while($row = mysqli_fetch_array($result))
{
    echo "<br>" .$row['classrollno'] . "&nbsp&nbsp;&nbsp<input type=\"checkbox\" name=\"" . $row['studentid'] . "\" value=\"P\" checked>";
    array_push ($studentid_arr,$row['studentid']);
}

现在您可以将这个 PHP 数组发布到下一个需要这些值的脚本。(这就是我假设您提交到下一页的意思)

于 2013-10-06T12:57:35.657 回答
0

简单地说,在获取 while 循环中,定义一个数组并将每个复选框值设置为其元素之一,然后将其分配为会话变量:

while($row = mysqli_fetch_array($result))
{
    echo "<br>" .$row['classrollno'] . "&nbsp&nbsp;&nbsp<input type=\"checkbox\" name=\"" . $row['studentid'] . "\" value=\"P\" checked>";
$names[] = $row['studentid'];
}

然后,

$_SESSION['names'] = $names;
于 2013-10-06T12:50:01.427 回答