我注意到 PHP 似乎只返回选中复选框的值。我想查看复选框列表,而不仅仅是选中复选框的值。有没有办法检测未选中框的变量?
我问是因为我希望能够更新设置。例如,我有几个选项已经被选中,但如果用户决定取消选中某个选项,我需要知道未选中的值,以便我可以更新要禁用的选项。
我自己也遇到了这个问题。我通过添加一个hidden
具有相同名称的重复字段来解决它。当浏览器发送此信息时,第二个字段会覆盖第一个字段(因此请确保该hidden
字段先出现)。
<input type="hidden" name="foo" value="">
<input type="checkbox" name="foo" value="bar">
如果checkbox
未选中,您将获得:
$_REQUEST[ 'foo' ] == ""
如果checkbox
选中,您会得到:
$_REQUEST[ 'foo' ] == "bar"
这不是纯粹在 PHP 中可以完成的事情。
浏览器仅在选中复选框时发送有关复选框的信息,如果您还想发送有关未选中复选框的信息,则必须在表单中添加隐藏字段并使用 javascript 来管理它们。
我自己偶然发现了这个问题,我通过将数据库中的所有值更新为未选中然后仅重新检查 POST 数据中的值对其进行排序,这对我来说很好,但可能不是每个人都喜欢喝茶。
纯 PHP 实现似乎不可能,但您可以尝试使用 jQuery/AJAX。
假设您有 3 个要检查的复选框,update_settings 是您的函数的名称,它将复选框名称作为第一个参数,将 bool 值作为第二个参数(激活或不激活)。
采取以下代码段:
$checkboxes = array("checkbox1", "checkbox2", "checkbox3");
foreach($checkboxes as $checkbox){
$checked = isset($_POST[$checkbox]);
update_settings($checkbox, $checked);
}
尽管Peter Kovacs解决方案它会起作用,但我认为它不实用,因为您已经可以使用 isset 检查您的变量。