Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何获取所有复选框变量(即使从HTML到PHP未选中)?_Php_Html_Checkbox_Checked - Fatal编程技术网

如何获取所有复选框变量(即使从HTML到PHP未选中)?

如何获取所有复选框变量(即使从HTML到PHP未选中)?,php,html,checkbox,checked,Php,Html,Checkbox,Checked,我注意到PHP似乎只返回复选框的值。我希望看到复选框列表,而不仅仅是复选框的值。有没有办法检测未选中框的变量 我问是因为我想更新设置。例如,我有几个已经选中的选项,但如果用户决定取消选中某个选项,我需要知道该未选中的值,以便更新要禁用的选项 纯PHP实现似乎是不可能的,但是您可以尝试使用jQuery/AJAX。这不是纯PHP可以实现的 浏览器仅在选中复选框时发送有关复选框的信息,如果您还想发送有关未选中复选框的信息,则必须在表单中添加隐藏字段并使用javascript来管理它们。我自己也遇到了这

我注意到PHP似乎只返回复选框的值。我希望看到复选框列表,而不仅仅是复选框的值。有没有办法检测未选中框的变量


我问是因为我想更新设置。例如,我有几个已经选中的选项,但如果用户决定取消选中某个选项,我需要知道该未选中的值,以便更新要禁用的选项

纯PHP实现似乎是不可能的,但是您可以尝试使用jQuery/AJAX。

这不是纯PHP可以实现的


浏览器仅在选中复选框时发送有关复选框的信息,如果您还想发送有关未选中复选框的信息,则必须在表单中添加隐藏字段并使用javascript来管理它们。

我自己也遇到了这个问题。我通过添加一个同名的重复
隐藏
字段来解决这个问题。当浏览器发送此信息时,第二个字段将覆盖第一个字段(因此请确保
隐藏的
字段位于第一位)

如果选中了
复选框
,您将得到:

$_REQUEST[ 'foo' ] == ""
$_REQUEST[ 'foo' ] == "bar"

假设您有3个要检查的复选框,并且update_settings是将复选框名称作为第一个参数、bool值作为第二个参数(激活或不激活)的函数的名称

以以下片段为例:

$checkboxes = array("checkbox1", "checkbox2", "checkbox3");
foreach($checkboxes as $checkbox){
    $checked = isset($_POST[$checkbox]);
    update_settings($checkbox, $checked);
}

尽管解决方案可行,但我认为它不实用,因为您已经可以使用isset检查变量。

我自己偶然发现了这个问题,我将数据库中的所有值更新为未检查,然后只重新检查POST数据中的值,这对我来说很好,但可能不是每个人都喜欢的。

嗯,如果你能填充所有的复选框,你难道不能根据选中的复选框知道哪些是未选中的吗?哇!真棒的解决方案!谢谢大家。它非常依赖于客户端的实现。好吧,这是W3C规范的一部分。这也是Rails处理复选框的方式,如果这对你有价值的话。简单而优雅。处理这种情况的一种非常聪明的方法。注意“按树顺序”和“追加”的用法。
$checkboxes = array("checkbox1", "checkbox2", "checkbox3");
foreach($checkboxes as $checkbox){
    $checked = isset($_POST[$checkbox]);
    update_settings($checkbox, $checked);
}