代码之家  ›  专栏  ›  技术社区  ›  netrox

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

  •  24
  • netrox  · 技术社区  · 15 年前

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

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

    5 回复  |  直到 15 年前
        1
  •  62
  •   Peter Kovacs    15 年前

    我自己也遇到了这个问题。我通过添加一个副本解决了这个问题 hidden 隐藏的 字段优先)。

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

    如果 checkbox

    $_REQUEST[ 'foo' ] == ""
    

    如果 复选框

    $_REQUEST[ 'foo' ] == "bar"
    
        2
  •  2
  •   Ben S    15 年前

    这不是纯粹用PHP可以完成的事情。

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

        3
  •  1
  •   R Brill    15 年前

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

        4
  •  0
  •   Alix Axel    15 年前

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

        5
  •  0
  •   Community CDub    8 年前

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

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