如何在用户单击下一个分页页面或页面刷新后保存复选框状态并将值发布到页面?

时间:2015-03-28 05:26:05

标签: php jquery mysql checkbox

在页面刷新后保存已选中复选框的状态和POST这些复选框的值的最佳方法是什么?在这种情况下,我有多个复选框来过滤MySQL数据库的结果。选中一个框后,它会更新我的查询并显示结果。我遇到的问题是我现在正在加入分页。当用户单击以转到结果的下一页时,所选的复选框将取消选中,并且php不会读取发布的任何内容,并且查询将在没有查询中包含的复选框值的情况下运行。

即使在页面重新加载后或用户点击进入下一组分页结果后,如何保存选中的复选框并将这些值发布到我的查询?

这是html表单:

<form id="form" method="post" action="">

<input type="checkbox" name="2kandunder" id="2kandunder" onchange="$('#form').submit();" class="checkbox" id="2kandunder" <?=(isset($_POST['2kandunder'])?' checked':'')?>/>

<input type="checkbox" name="2kto4k" id="2kandunder" class="checkbox" onchange="$('#form').submit();" <?=(isset($_POST['2kto4k'])?' checked':'')?>/>   

<input type="checkbox" name="4kandup" id="4kandup" class="checkbox" onchange="$('#form').submit();" <?=(isset($_POST['4kandup'])?' checked':'')?>/> 

</form>

PHP将复选框值发布到字符串中,然后发送到查询中以过滤结果。

<?php
if (isset($_POST["2kandunder"])) {
$arguments[] = "AND `2kandunder` = 'yes'";
}
if (isset($_POST["2kto4k"])) {
$arguments[] = "AND `2kto4k` = 'yes'";
}
if (isset($_POST["4kandup"])) {
$arguments[] = "AND 4kandup = 'yes'";
}
if(!empty($arguments)) {
$str = implode($arguments);
}
?>

是否可以使用会话?

1 个答案:

答案 0 :(得分:0)

是的,您可以通过会话来完成,在您的PHP脚本中执行此操作

if (isset($_POST["2kandunder"]))           
        {
           $_SESSION["kandunder"]=TRUE;
        }

并在您的html页面中插入submit();

之后的php脚本
<?php
     if (isset($_SESSION["kandunder"]) && ($_SESSION["kandunder"]))
     {
       echo 'checked';
     }
 ?>

不要忘记在两个页面上启动会话,并在完成工作后销毁/取消设置会话。并为剩下的2个复选框应用相同的逻辑。