即使未从 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,如何获取所有复选框变量?的主要内容,如果未能解决你的问题,请参考以下文章
检测 - 弹出到根 VC 后,VIewctrollers 未从内存中删除