4

我有一个表格,其中包含从表格中填充的行。每行都有一个“复选框”,用户可以检查或不检查。

提交表单后,我希望能够读取已选中的复选框并将结果插入数据表中。

到目前为止我的代码形式:

<form method="post" name="form1" action="<?php echo $editFormAction; ?>">
<table
<?php do { ?>
<tr>
<td>input type="text" name="InspectRoomNo" value="<?php print $row_InspectItems['AuditItemNo']; ?>"></td>
<td>php echo $row_InspectItems['AuditItem']; ?>td>
<td>input name="check[]" type="checkbox"  ></td>
</tr>
<?php } while ($row_InspectItems = mysql_fetch_assoc($InspectItems)); ?>
<input type="submit" value="Insert record">
</table>

插入:从表中获取 $Items

while($row = mysql_fetch_assoc($Items))
{
$array[] = $row['AuditItem'];
}


foreach($array as $id) {
$AuditItemID = mysql_real_escape_string($id);

if(isset($_POST['check'])){
$Checked = mysql_real_escape_string($_POST['check'][$row]);
}
}

我遇到的问题是所有复选框的返回值都是 true,即使未选中复选框也是如此。

谁能帮我解决这个问题。

非常感谢。

4

3 回答 3

8

像这样做:

if(!empty($_POST['check'])) {
    foreach($_POST['check'] as $check) {
        echo $check; 
    }
}
于 2013-02-07T14:03:16.650 回答
2

您应该将项目 ID 放在复选框名称中:

<td><input name="check[<?= $row_InspectItems['AuditItem']; ?>]" type="checkbox" /></td>

然后,您可以简单地对其进行迭代:

foreach ($_POST['check'] as $id => $value) {
    // do stuff with your database
}

我假设运行这个脚本的人是值得信任的,因为伪造 id 列表很容易;确保当前用户有权更新这些记录。

于 2013-02-07T14:02:19.393 回答
0

发生了什么,只有选中的复选框被发送到服务器,所以你会看到你的$_POST['check']数组(这是一个数组!)小于你在屏幕上显示的项目数。

您应该添加您的 ID,以便您知道检查了哪些复选框并调整您的 php 处理代码以处理数组而不是单个值。

您还覆盖了InspectRoomNo每一行,因此您也应该在那里使用一个数组。

表单端看起来像:

<td><input type="text" name="InspectRoomNo[<?php echo row_InspectItems['AuditItemNo']; ?>]" value="<?php print row_InspectItems['AuditItemNo']; ?>"></td>
<td><?php echo $row_InspectItems['AuditItem']; ?></td>
<td><input name="check[<?php echo row_InspectItems['AuditItemNo']; ?>]" type="checkbox"  ></td>
于 2013-02-07T14:06:46.560 回答