我注意到 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);
}

虽然 彼得·科瓦奇 解决方案它将起作用,我认为它不实用,因为您已经可以使用 isset 检查变量。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top