发送未选中的复选框到PHP

问题描述:

我在我的HTML表中有一个复选框字段。该表是动态生成的,并且该字段被存储在数组中,如下所示:发送未选中的复选框到PHP

<input type="checkbox" name="checked[]" value="1">

在PHP,我将所述检查行到表中,但是我还需要显示具有行在提交后没有被检查给用户,但是没有办法知道哪些行没有被传递,因为checked[]未被检查的复选框没有被提交。

我想实现的是用户显示一个包含多行的表格,他检查他想要添加到数据库的行。表单提交后,页面将显示哪些行被插入,哪些行未被用户选择。未经检查的行不需要插入到任何数据库中,但应在提交后立即向用户显示,以便他可以打印该页面用于记录目的。

解决此问题的最佳方法是什么?

+0

用ajax提交表单?这样用户即使在提交表单后也可以保持在同一页面上。 –

+0

@Damchey如果在任何情况下你想在javascript中这样做,你可以这样做来取消选中复选框,然后在提交之前检查它们的状态。所以,如果你使用任何选择器引擎,你会附加事件来提交事件, $(“input [type = checkbox]:not(:checked)”)。each(function(){//检查这些复选框})' – Deeptechtons

使用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一样。

+0

或简单地'array_diff'。 – deceze

+0

@dAngelov我如何获得option1?行数将动态生成,并且每次都会有所不同。如果用户没有检查它,该行根本不会被传递给PHP脚本。 – WebNovice

+0

@Damchey,你最初生成的选项,所以只是重新创建相同的集合。 – dAngelov

因为您首先创建了chekbox,因此您知道复选框的总数。

总复选框减选中复选框会给你你想要的,即未经检查的框。

unchecked boxes = total checkboxes - checked checkboxes ;