我有像这样的html复选框:
<form action="" method="post">
<input type="checkbox" name="language[]" value="php" />PHP<br />
<input type="checkbox" name="language[]" value="html" />HTML<br />
<input type="checkbox" name="language[]" value="java" />Java<br />
<input type="checkbox" name="language[]" value="c++" />C++<br />
<input type="submit" value="send" />
</form>
现在我想检测未使用此PHP
检查复选框if($_POST)
{
if(empty($_POST['language']))
{
echo "bla";
}
else
{
foreach($_POST['language'] as $value)
{
echo 'Checked: '.$value.'
';
}
}
}
输出始终显示已选中的checbox。 我的问题是,如何检测未选中的复选框? 示例我不检查PHP和Java。
答案 0 :(得分:1)
您不需要通过复选框验证复选框以确定它们是否已被选中,您在发送表单时不会获得未选中的复选框值,因此,发送如下表单:< / p>
<form action="" method="post">
<input type="checkbox" name="language[]" value="php" />PHP<br /> <!-- checked -->
<input type="checkbox" name="language[]" value="html" />HTML<br /><!-- checked -->
<input type="checkbox" name="language[]" value="java" />Java<br /><!-- unchecked -->
<input type="checkbox" name="language[]" value="c++" />C++<br /><!-- unchecked -->
<input type="submit" value="send" />
</form>
在PHP中,您将获得如下数组:
$_POST['languages'] = array("php", "html");
现在,假设您有一个包含所有值的数组,以便检查您需要删除哪些值,以及需要添加哪些值,粗略的代码示例如下:
$allValues = array('php', 'html', 'java', 'c++');
$valuesForAdd = $_POST['language'];
$valuesForDeletion = array_diff($allValues, $valuesForAdd);
答案 1 :(得分:0)
只有'已选中'复选框才会在POST请求中作为参数发送。
如果您想知道哪些未经检查,您可以将值列表存储在PHP端;然后,一旦收到POST数据 - 将PHP端的数组与POST数组进行比较。
$all_vals = array('php', 'c++', 'html', 'java');
$post_vals = $_POST['languages'];
foreach ($post_vals as $post_val)
if in_array($post_val, $all_vals)
$checkbox checked
else
$checkbox not checked
我认为这给了你足够的自由来做你需要的事。
答案 2 :(得分:0)
首先,你需要后端的可选项数组:
$items = array('php','html','java','c++');
您在此处拥有已发布(已选择)的语言数组:
$_POST['language']
未选择的语言数组:
$not_selected_languages = array_diff($items,$_POST['language']);
我希望它有所帮助。