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