我的HTML表格中有一个复选框字段。该表是动态生成的,字段存储在数组中,如下所示:
<input type="checkbox" name="checked[]" value="1">
在PHP中,我将已检查的行插入到表中,但是我还需要在提交后显示尚未检查给用户的行,但是无法知道自那以后哪些行未被传递未提交复选框的checked[]
未提交。
我想要实现的是用户显示一个包含多行的表,他会检查要添加到数据库的行。表单提交后,页面将显示插入了哪些行以及用户未选择哪些行。未经检查的行不需要插入任何数据库,但应该在提交后立即显示给用户,以便他可以打印页面以备记录。
解决此问题的最佳方法是什么?
答案 0 :(得分:0)
使用3个数组,1个包含您要发送的选项,1个包含来自用户的响应,1个用于保存差异。两者之间的区别将为您提供未经检查的字段。
<?php
$myOptions = array('option1', 'option2', 'option3');
$userArray = array('option2'); // This is your $_POST['checkboxes'] array
$leftOptions = array();
foreach ($myOptions as $value){
if (!in_array($value, $userArray)){
$leftOptions[] = $value;
}
}
?>
注意:你可以将foreach替换为array_diff,作为评论中提到的@deceze。
答案 1 :(得分:0)
因为您是在第一个位置创建复选框,所以您知道复选框的总数。
Total Checkbox minus Checked复选框将为您提供所需的内容,即未选中框。
unchecked boxes = total checkboxes - checked checkboxes ;