发送未选中的复选框到PHP
问题描述:
我在我的HTML表中有一个复选框字段。该表是动态生成的,并且该字段被存储在数组中,如下所示:发送未选中的复选框到PHP
<input type="checkbox" name="checked[]" value="1">
在PHP,我将所述检查行到表中,但是我还需要显示具有行在提交后没有被检查给用户,但是没有办法知道哪些行没有被传递,因为checked[]
未被检查的复选框没有被提交。
我想实现的是用户显示一个包含多行的表格,他检查他想要添加到数据库的行。表单提交后,页面将显示哪些行被插入,哪些行未被用户选择。未经检查的行不需要插入到任何数据库中,但应在提交后立即向用户显示,以便他可以打印该页面用于记录目的。
解决此问题的最佳方法是什么?
答
使用3个数组,其中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;
}
}
?>
注意:你可以用array_diff替换foreach,就像在评论中提到的@deceze一样。
答
因为您首先创建了chekbox,因此您知道复选框的总数。
总复选框减选中复选框会给你你想要的,即未经检查的框。
unchecked boxes = total checkboxes - checked checkboxes ;
用ajax提交表单?这样用户即使在提交表单后也可以保持在同一页面上。 –
@Damchey如果在任何情况下你想在javascript中这样做,你可以这样做来取消选中复选框,然后在提交之前检查它们的状态。所以,如果你使用任何选择器引擎,你会附加事件来提交事件, $(“input [type = checkbox]:not(:checked)”)。each(function(){//检查这些复选框})' – Deeptechtons