即使未从 HTML 检查到 PHP,如何获取所有复选框变量?

Posted

技术标签:

【中文标题】即使未从 HTML 检查到 PHP,如何获取所有复选框变量?【英文标题】:how do I get all checkbox variables even if not checked from HTML to PHP? 【发布时间】:2010-12-28 23:28:25 【问题描述】:

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

我问是因为我希望能够更新设置。例如,我有一些选项已经被选中,但如果用户决定取消选中某个选项,我需要知道未选中的值,以便我可以更新要禁用的选项。

【问题讨论】:

嗯,如果你能把所有的复选框都填满,你是不是应该能够根据那些被选中的来知道哪些是未选中的? 【参考方案1】:

我自己偶然发现了这个问题,我通过将数据库中的所有值更新为未选中然后仅重新检查 POST 数据中的值对其进行排序,这对我来说很好,但可能不是每个人都喜欢喝茶.

【讨论】:

【参考方案2】:

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

采取以下sn-p:

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

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

【讨论】:

【参考方案3】:

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

<input type="hidden" name="foo" value="">
<input type="checkbox" name="foo" value="bar">

如果checkbox 没有被选中,你会得到:

$_REQUEST[ 'foo' ] == ""

如果选中checkbox,您会得到:

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

【讨论】:

哇!很棒的解决方案!谢谢大家。 非常依赖客户端的实现。 嗯,它是 W3C 规范的一部分。如果这对您有价值,这也是 Rails 如何处理复选框的方式。 简洁优雅。一种非常聪明的处理方式。 w3.org/TR/html5/forms.html#constructing-form-data-set 注意“in tree-order”和“append”的使用。【参考方案4】:

这不是纯粹在 PHP 中可以完成的。

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

【讨论】:

【参考方案5】:

纯粹的 PHP 实现似乎不可能,不过你可以尝试使用 jQuery/AJAX。

【讨论】:

以上是关于即使未从 HTML 检查到 PHP,如何获取所有复选框变量?的主要内容,如果未能解决你的问题,请参考以下文章

PHP页面未从iOS应用接收所有POST数据

检测 - 弹出到根 VC 后,VIewctrollers 未从内存中删除

UINavigationItem 未从 Navigator 中删除

twain 扫描仪未从扫描仪获取图像

数据未从 Mysql 数据库中检索

URL 重定向未从正确的相对源加载资源