php复选框保留页面之间的值

php复选框保留页面之间的值,php,mysql,arrays,checkbox,Php,Mysql,Arrays,Checkbox,我让表单页面调用一个函数,该函数从mysql数据库中随机抽取2个名称(由php函数pairsim()调用)。我想创建一组复选框,这些复选框将创建我可以用来限制mysql拉取的条件。这些条件需要持续存在,直到用户更改配置(下面的更新按钮) 我希望创建一个检查值数组作为条件使用,直到用户再次更新其配置。不幸的是,我无法让数组在逐页运行时保持不变。我在创建要传回pairsim()的数组时也遇到了问题。请原谅我的无知,我想做的事还有什么可以完成的吗 选择_checkbox.php: <?php

我让表单页面调用一个函数,该函数从mysql数据库中随机抽取2个名称(由php函数pairsim()调用)。我想创建一组复选框,这些复选框将创建我可以用来限制mysql拉取的条件。这些条件需要持续存在,直到用户更改配置(下面的更新按钮)

我希望创建一个检查值数组作为条件使用,直到用户再次更新其配置。不幸的是,我无法让数组在逐页运行时保持不变。我在创建要传回pairsim()的数组时也遇到了问题。请原谅我的无知,我想做的事还有什么可以完成的吗

选择_checkbox.php:

<?php 
session_start();

$_SESSION['G'] = isset($_POST['pG']) ? 1 : 0 ;
$_SESSION['D'] = isset($_POST['pD']) ? 1 : 0 ;
$_SESSION['W'] = isset($_POST['pW']) ? 1 : 0 ;
$_SESSION['C'] = isset($_POST['pC']) ? 1 : 0 ;

?>

<button class="btn btn-success" type="button" data-toggle="collapse" data-    target="#collapselimit" aria-expanded="false" aria-controls="collapselimit">
      Limit Names
    </button>
<div class="collapse container-fluid" id="collapselimit">

<form role="form" method="post" action=<?php pairsim() ; ?>>
<div class="panel panel-default">
    <div class="panel-body">


        <p><b>Position Limited:</b><br></p>
        <!--create array with checked values to include to mysql function-->
            <label class='checkbox-inline'><input type='checkbox' name='positionsel[]' value='pG' checked>Goalies</label>
            <label class='checkbox-inline'><input type='checkbox' name='positionsel[]' value='pD' checked>Defensemen</label>
            <label class='checkbox-inline'><input type='checkbox' name='positionsel[]' value='pW' checked>Wingers</label>
            <label class='checkbox-inline'><input type='checkbox' name='positionsel[]' value='pC' checked>Centers</label>

        <div>
        <!--locks in checkbox configuratons-->
        <input type="submit" class="btn btn-success btn-lg" value="Update"/>
        <!--script below to check/uncheck all-->
        <input type="button" class="btn btn-default btn-lg" id="CheckAll" value="Check All" />
        <input type="button" class="btn btn-default btn-lg" id="UncheckAll" value="Clear All" />
        </div>  
    </form>
        </div>
</div>

限制名称

我在这里看到一些错误,我将尝试按照程序顺序进行

您的复选框都使用相同的名称,因此生成的post变量将是
$\u post['positionsel']。因此,您现有的会话检查总是错误的

顺便说一句,输出
var_dump($_POST['positionsel'])选中所有内容后将显示:

array(4) {
    [0]=>
    string(2) "pG"
    [1]=>
    string(2) "pD"
    [2]=>
    string(2) "pW"
    [3]=>
    string(2) "pC"
}
修正:

这将检查$\u POST变量的复选框值(如果存在),这意味着它已被选中

这将导致一种情况,即如果您不提交表单,则不会处理post值,从而导致$\u会话变量被擦除。为了防止这种情况发生,我们需要检查表单是否已提交。一种便宜的方法是命名submit字段:

<input name="submitted" type="submit" class="btn btn-success btn-lg" value="Update"/>
现在,仅当表单实际提交时,会话变量才会被覆盖

接下来,您需要将复选框更改为仅在实际选中时才“选中”:

<label class='checkbox-inline'><input type='checkbox' name='positionsel[]' value='pG' <?PHP if($_SESSION['pG']) { echo "checked"; }?> >Goalies</label>
<label class='checkbox-inline'><input type='checkbox' name='positionsel[]' value='pD' <?PHP if($_SESSION['pD']) { echo "checked"; }?> >Defensemen</label>
<label class='checkbox-inline'><input type='checkbox' name='positionsel[]' value='pW' <?PHP if($_SESSION['pW']) { echo "checked"; }?> >Wingers</label>
<label class='checkbox-inline'><input type='checkbox' name='positionsel[]' value='pC' <?PHP if($_SESSION['pC']) { echo "checked"; }?> >Centers</label>
>辩护人
>中心
这样就可以使用已配置的复选框重新加载表单,只要会话保持活动状态,就可以在重新提交和新页面加载过程中保留您的首选项


在本例中,我将会话变量名更改为复选框值,因此请记住,如果您将其粘贴到使用会话的任何其他位置,则需要对其进行调整(或调整我的代码以使用原始变量名)。

我在这里看到一些错误,我将尝试按照过程顺序进行操作

您的复选框都使用相同的名称,因此生成的post变量将是
$\u post['positionsel']。因此,您现有的会话检查总是错误的

顺便说一句,输出
var_dump($_POST['positionsel'])选中所有内容后将显示:

array(4) {
    [0]=>
    string(2) "pG"
    [1]=>
    string(2) "pD"
    [2]=>
    string(2) "pW"
    [3]=>
    string(2) "pC"
}
修正:

这将检查$\u POST变量的复选框值(如果存在),这意味着它已被选中

这将导致一种情况,即如果您不提交表单,则不会处理post值,从而导致$\u会话变量被擦除。为了防止这种情况发生,我们需要检查表单是否已提交。一种便宜的方法是命名submit字段:

<input name="submitted" type="submit" class="btn btn-success btn-lg" value="Update"/>
现在,仅当表单实际提交时,会话变量才会被覆盖

接下来,您需要将复选框更改为仅在实际选中时才“选中”:

<label class='checkbox-inline'><input type='checkbox' name='positionsel[]' value='pG' <?PHP if($_SESSION['pG']) { echo "checked"; }?> >Goalies</label>
<label class='checkbox-inline'><input type='checkbox' name='positionsel[]' value='pD' <?PHP if($_SESSION['pD']) { echo "checked"; }?> >Defensemen</label>
<label class='checkbox-inline'><input type='checkbox' name='positionsel[]' value='pW' <?PHP if($_SESSION['pW']) { echo "checked"; }?> >Wingers</label>
<label class='checkbox-inline'><input type='checkbox' name='positionsel[]' value='pC' <?PHP if($_SESSION['pC']) { echo "checked"; }?> >Centers</label>
>辩护人
>中心
这样就可以使用已配置的复选框重新加载表单,只要会话保持活动状态,就可以在重新提交和新页面加载过程中保留您的首选项


在本例中,我将会话变量名称更改为复选框值,因此请记住,如果您将其粘贴到其他地方,因为您需要在使用会话的任何地方对其进行调整(或调整我的代码以使用原始变量名)。

仅当存在
post
或表单已提交时才保存在
session
。不要用速记。每次用户进入该页面时,都会保存您的
会话
。不确定是否要创建包含会话创建的php文件并将其包含在所有其他页面上。如果有
post
或表单已提交,则只需保存在
会话
中。不要用速记。每次用户进入该页面时,您的
会话始终被保存。不确定是否要创建包含会话创建的php文件并将其包含在所有其他页面上