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

How to save checkbox state and post values to page after user clicks next pagination page or on page refresh?

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

如何将选中的复选框和 POST 这些值保存到我的查询中,即使在页面重新加载后或在用户单击转到下一组分页结果后也是如此?

这是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和post复选框的值转化为字符串,然后转化为查询来过滤结果。

<?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);
}
?>

是否可以为此使用会话?

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

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

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

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

不要忘记在两个页面上开始会话,并在完成工作后 destroy/unset 会话。并对剩余的 2 个复选框应用相同的逻辑。