我有一个表格,其中包含从表格填充的行。每行都有一个“复选框”,用户可以检查与否。
提交表单时,我希望能够读取已选中的复选框,并将结果插入数据表。
我的代码到目前为止 FORM:
<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>
insert:从表中获取$ 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,即使未选中复选框也是如此。
任何人都可以帮我解决这个问题。
非常感谢。
答案 0 :(得分:6)
这样做:
if(!empty($_POST['check'])) {
foreach($_POST['check'] as $check) {
echo $check;
}
}
答案 1 :(得分:2)
您应该将项目ID放在复选框名称中:
<td><input name="check[<?= $row_InspectItems['AuditItem']; ?>]" type="checkbox" /></td>
然后,您可以简单地迭代它:
foreach ($_POST['check'] as $id => $value) {
// do stuff with your database
}
我假设比任何人都运行这个脚本是可信的,因为很容易伪造id列表;确保当前用户有权更新这些记录。
答案 2 :(得分: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>