如何将表单复选框的名称存储到php数组中

时间:2013-10-06 12:37:41

标签: php mysql sql checkbox

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

这是我的代码:

<?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,另一列)。

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

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

4 个答案:

答案 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'] . '&nbsp;&nbsp;&nbsp;<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'] . "&nbsp&nbsp;&nbsp<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'] . "&nbsp&nbsp;&nbsp<input type=\"checkbox\" name=\"" . $row['studentid'] . "\" value=\"P\" checked>";
    array_push ($studentid_arr,$row['studentid']);
}

现在您可以将此PHP数组发布到下一个期望这些值的脚本。 (这是我认为你提到下一页的意思)