【问题标题】:Storing checkbox selection in session, Won't let me select nothing在会话中存储复选框选择,不让我选择任何内容
【发布时间】:2013-10-31 00:35:18
【问题描述】:

我使用它在会话中存储我对表单的选择,以便在用户返回表单的另一个页面时可以调用它们。

我遇到的问题总是必须有 1 个选择。如果我勾选 Jam,然后取消勾选 Jam 并勾选工作正常的黄油,但如果我取消选中所有内容,则它不会清除数组。

由于某种原因,它总是必须在数组中至少有 1 个条目?

foreach($_POST as $key => $value) {
    $_SESSION[$key] = $value;
}

这是checkbox 代码:

<inputtype="checkbox name="<?php echo $course_menuname."extras[]"; ?>" <?php if(in_array("$extraitems", $_SESSION[$course_menuname.'extras'])) { echo "checked"; } ?> value="<?php echo $extraitems; ?>" id="checkbox">

变量如下:

$extraitems 包含“Toast Extras”字样,例如 Jam、Butter 和 Flora $course_menuname 包含诸如“breakfast_cereal”、“breakfast_toast”之类的课程,如果它有额外的单词,它会在下面打复选框。

这是表格:

【问题讨论】:

    标签: php html checkbox foreach


    【解决方案1】:

    如果 $_POST 是空的,为什么不明确告诉 PHP 取消设置数组呢

    <?php
    if(empty($_POST))
        unset($_SESSION);
    ?>
    

    ?

    【讨论】:

      【解决方案2】:

      通常,表单不会为未选中的复选框发送数据。要清除所有内容,您可以检查是否没有检查任何值,如果是这种情况,请清除会话值。您可以尝试将这些动态复选框存储在会话的子数组中,这样您就可以只清除一个会话变量。例如:

      foreach( $_POST as $key=>$val )
      {
          $_SESSION[$course_menuname.'extras'][$key] = $val;
      }
      

      您拥有表单名称的方式将有助于找到这些缺失值。您可以检查是否设置了数组元素,例如:

      if( !isset( $_POST[$course_menuname.'extras' ) )
          unset( $_SESSION[$course_menuname.'extras'] );
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-09-01
        • 1970-01-01
        • 2013-03-02
        • 2014-09-01
        • 2012-02-19
        • 2012-06-29
        • 1970-01-01
        相关资源
        最近更新 更多