向PHP发送未选中的复选框

时间:2011-10-08 05:43:51

标签: php javascript mysql forms checkbox

我的HTML表格中有一个复选框字段。该表是动态生成的,字段存储在数组中,如下所示:

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

在PHP中,我将已检查的行插入到表中,但是我还需要在提交后显示尚未检查给用户的行,但是无法知道自那以后哪些行未被传递未提交复选框的checked[]未提交。

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

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

2 个答案:

答案 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 ;