在页面刷新后保存已选中复选框的状态和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);
}
?>
是否可以使用会话?
答案 0 :(得分:0)
是的,您可以通过会话来完成,在您的PHP脚本中执行此操作
if (isset($_POST["2kandunder"]))
{
$_SESSION["kandunder"]=TRUE;
}
并在您的html页面中插入submit();
<?php
if (isset($_SESSION["kandunder"]) && ($_SESSION["kandunder"]))
{
echo 'checked';
}
?>
不要忘记在两个页面上启动会话,并在完成工作后销毁/取消设置会话。并为剩下的2个复选框应用相同的逻辑。