代码之家  ›  专栏  ›  技术社区  ›  Pieter de Vries

必须提交两次

  •  0
  • Pieter de Vries  · 技术社区  · 12 年前

    好的,我是编程新手,我有一些复选框的问题。
    我想存储是否选中复选框,并在按下按钮时显示该复选框。
    我正在进行筛选搜索,所以当一个人选中复选框时,它将只显示该筛选。
    然而,只有当我提交并选择或取消选择复选框两次时,它才起作用。
    我怎么才能做到只做一次?

    <form name="search" action="<? $_SERVER['PHP_SELF']; ?>" method="post">
       <input type="checkbox" name="checkAllMyCB" id="checkAllMyCB" onclick="jqCheckAll2( this.id, 'myCB' )"/>All
       <input name="category[]" type="checkbox" <? if (in_array("art", $_SESSION['category'])) { echo "checked='checked'";  } ?>value="art">Art
       <input name="category[]" type="checkbox" <? if (in_array("church", $_SESSION['category'])) { echo "checked='checked'";  } ?>value="church">Church
       <input name="category[]" type="checkbox" <? if (in_array("education", $_SESSION['category'])) { echo "checked='checked'";  } ?>value="education">Education/Schools
       <input name="category[]" type="checkbox" <? if (in_array("food", $_SESSION['category'])) { echo "checked='checked'";  } ?>value="food">Food
       <input name="category[]" type="checkbox" <? if (in_array("gardening", $_SESSION['category'])) { echo "checked='checked'";  } ?>value="gardening">Gardening
       <input name="category[]" type="checkbox" <? if (in_array("kids", $_SESSION['category'])) { echo "checked='checked'";  } ?>value="kids">Kids
       <input name="category[]" type="checkbox" <? if (in_array("music", $_SESSION['category'])) { echo "checked='checked'";  } ?>value="music">Music
       <input name="category[]" type="checkbox" <? if (in_array("outdoors", $_SESSION['category'])) { echo "checked='checked'";  } ?>value="outdoors">Outdoors
       <input name="category[]" type="checkbox" <? if (in_array("seniors", $_SESSION['category'])) { echo "checked='checked'";  } ?>value="seniors">Seniors
       <input name="category[]" type="checkbox" <? if (in_array("sports", $_SESSION['category'])) { echo "checked='checked'";  } ?> value="sports">Sports/Physical Activity
       <input name="category[]" type="checkbox" <? if (in_array("support", $_SESSION['category'])) { echo "checked='checked'";  } ?>value="support">Club/Support Group
       <input type="submit" name="Go2" id="Go2" value="Go &gt;" />
    <? 
    $_SESSION['category'] = $_POST['category']; ?>
    
    </form>
    
    1 回复  |  直到 12 年前
        1
  •  1
  •   AyB    12 年前

    代码中出现错误:

    1. 首先显示表单,然后将值设置到 SESSION 。这应该是相反的方式,因为当提交时,表单将首先显示,并且只有在设置值之后才会显示,这就是为什么您需要提交两次以查看值的问题。

    2. 您没有检查 会话 变量已在 in_array ,这最初会抛出一个错误。与 $_POST['category']

    首先将其放在顶部:

    <?
    if (isset($_POST['category'])){
    $_SESSION['category'] = $_POST['category']; }
    else
    {
        unset($_SESSION['category']);
    }
    ?>
    

    然后将表单代码更改为:

    <form name="search" action="" method="post">
       <input type="checkbox" name="checkAllMyCB" id="checkAllMyCB" onclick="jqCheckAll2( this.id, 'myCB' )"/>All
       <input name="category[]" type="checkbox" <?php if (isset($_SESSION['category']) && in_array("art", $_SESSION['category'])) { echo "checked='checked'";  } ?> value="art">Art
       <input name="category[]" type="checkbox" <?php if (isset($_SESSION['category']) && in_array("church", $_SESSION['category'])) { echo "checked='checked'";  } ?> value="church">Church
       <input name="category[]" type="checkbox" <?php if (isset($_SESSION['category']) && in_array("education", $_SESSION['category'])) { echo "checked='checked'";  } ?> value="education">Education/Schools
       <input name="category[]" type="checkbox" <?php if (isset($_SESSION['category']) && in_array("food", $_SESSION['category'])) { echo "checked='checked'";  } ?> value="food">Food
       <input name="category[]" type="checkbox" <?php if (isset($_SESSION['category']) && in_array("gardening", $_SESSION['category'])) { echo "checked='checked'";  } ?>value="gardening">Gardening
       <input name="category[]" type="checkbox" <?php if (isset($_SESSION['category']) && in_array("kids", $_SESSION['category'])) { echo "checked='checked'";  } ?> value="kids">Kids
       <input name="category[]" type="checkbox" <?php if (isset($_SESSION['category']) && in_array("music", $_SESSION['category'])) { echo "checked='checked'";  } ?> value="music">Music
       <input name="category[]" type="checkbox" <?php if (isset($_SESSION['category']) && in_array("outdoors", $_SESSION['category'])) { echo "checked='checked'";  } ?> value="outdoors">Outdoors
       <input name="category[]" type="checkbox" <?php if (isset($_SESSION['category']) && in_array("seniors", $_SESSION['category'])) { echo "checked='checked'";  } ?> value="seniors">Seniors
       <input name="category[]" type="checkbox" <?php if (isset($_SESSION['category']) && in_array("sports", $_SESSION['category'])) { echo "checked='checked'";  } ?> value="sports">Sports/Physical Activity
       <input name="category[]" type="checkbox" <?php if (isset($_SESSION['category']) && in_array("support", $_SESSION['category'])) { echo "checked='checked'";  } ?> value="support">Club/Support Group
       <input type="submit" name="Go2" id="Go2" value="Go &gt;" />
    </form>