PHP下拉框选择筛选显示数据,页面刷新或其它页面重新跳转进来时保持筛选条件的问题

做了一个按条件筛选显示数据库列表的PHP页面,选择下拉框中条件后,现在点按钮后能进行筛选显示,但是刷新页面或再从其它页面转入进来时,筛选就失效了,如何才能将筛选显示保持不变(就是在刷新或其它页面转入进来时保持筛选条件),直到选下拉框首行点“筛选”按钮后再取消筛选条件。
这是我现在的代码
以下是刷新当前页面的数据库连接代码,$condition和$condition1是两个条件筛选变量。

$condition = " 1=1 ";//注意,前面有个空格
if(isset($_GET['shaixuan'])){
    if($_GET['shaixuan']!='3'){
        $condition.=" AND 标识='".$_GET['shaixuan']."'";
}}
$condition1 = " 1=1 ";//注意,前面有个空格
if(isset($_GET['shaixuan1'])){
    if($_GET['shaixuan1']!='3'){
        $condition1.=" AND 诊断意见2='".$_GET['shaixuan1'] . "'";
}}
$query_rsdb = "SELECT * FROM dengji where 检查日期='$today' AND $condition AND $condition1";

以下是两个下拉框筛选框和按钮的代码:


<form id="filter-form" action="listc.php" method="GET" enctype="multipart/form-data" name="form1">
<select name="shaixuan" style="width:50%;height:20px;font-size: 15px" id="shaixuan">
<option value="3">-报告状态-</option>
<option value="0" >已提交</option>
<option value="2" >未报告</option>
</select>
<select name="shaixuan1" style="width:50%;height:20px;font-size: 15px" id="shaixuan1" >
<option value=3>-医疗机构-</option>
<?php
$sql= "select name from hospital";//sql语句
$result = mysql_query($sql, $db_conn);//执行sql语句
while($row = mysql_fetch_array($result)) {
$name = $row['name'];
$template = $row['name'];
echo "<option value='$template' data-name='$name'>$template</option>";
}?>
</select>
</form>

以下是javascript代码:

<script language="javascript">
 $('#filter-form').on('submit',function(event){
        event.preventDefault();
        var url = "http://127.0.0.1/listc.php?";
        var shaixuan = 'shaixuan='+$('#shaixuan').val();
        var shaixuan1 = 'shaixuan1='+$('#shaixuan1').val();
        url += shaixuan + '&' + shaixuan1;
        window.location.href = url;
    });
</script>

引用chatgpt部分指引作答:
要实现在刷新或者跳转页面时保持筛选条件,可以考虑将选中的条件存储在Session或Cookie中,然后在加载页面时从Session或Cookie中读取条件并应用到查询语句中。

以下是使用Session实现保持筛选条件的示例代码:

<?php
session_start();

$condition = " 1=1 ";
if(isset($_GET['shaixuan'])){
    if($_GET['shaixuan']!='3'){
        $condition.=" AND 标识='".$_GET['shaixuan']."'";
        $_SESSION['shaixuan'] = $_GET['shaixuan']; // 将筛选条件保存在Session中
    } else {
        $_SESSION['shaixuan'] = null; // 清空Session中保存的筛选条件
    }
} else {
    if(isset($_SESSION['shaixuan'])){
        $condition.=" AND 标识='".$_SESSION['shaixuan']."'";
    }
}

$condition1 = " 1=1 ";
if(isset($_GET['shaixuan1'])){
    if($_GET['shaixuan1']!='3'){
        $condition1.=" AND 诊断意见2='".$_GET['shaixuan1'] . "'";
        $_SESSION['shaixuan1'] = $_GET['shaixuan1']; // 将筛选条件保存在Session中
    } else {
        $_SESSION['shaixuan1'] = null; // 清空Session中保存的筛选条件
    }
} else {
    if(isset($_SESSION['shaixuan1'])){
        $condition1.=" AND 诊断意见2='".$_SESSION['shaixuan1'] . "'";
    }
}

$query_rsdb = "SELECT * FROM dengji where 检查日期='$today' AND $condition AND $condition1";

// 其他代码略...
?>

<form id="filter-form" method="GET" enctype="multipart/form-data" name="form1">
<select name="shaixuan" style="width:50%;height:20px;font-size: 15px" id="shaixuan">
<option value="3">-报告状态-</option>
<option value="0" <?php if(isset($_SESSION['shaixuan']) && $_SESSION['shaixuan'] == '0') echo 'selected'; ?>>已提交</option>
<option value="2" <?php if(isset($_SESSION['shaixuan']) && $_SESSION['shaixuan'] == '2') echo 'selected'; ?>>未报告</option>
</select>
<select name="shaixuan1" style="width:50%;height:20px;font-size: 15px" id="shaixuan1" >
<option value=3>-医疗机构-</option>
<?php
$sql= "select name from hospital";//sql语句
$result = mysql_query($sql, $db_conn);//执行sql语句
while($row = mysql_fetch_array($result)) {
$name = $row['name'];
$template = $row['name'];
echo "<option value='$template' data-name='$name' ".(isset($_SESSION['shaixuan1']) && $_SESSION['shaixuan1'] == $template ? 'selected' : '').">$template</option>";
}?>
</select>
<button type="submit" name="submit">筛选</button>
</form>

<script language="javascript">
 $('#filter-form').on('submit',function(event){
        event.preventDefault();
        var url = "http://127.0.0.1/filter.php?" + $('#filter-form').serialize(); // 获取筛选条件并拼接到URL中
        window.location.href = url; // 跳转页面到新的URL

// 其他代码略...
</script>


在上述代码中,当用户选择了筛选条件并点击筛选按钮时,会将筛选条件存储在Session中,并将筛选条件拼接到URL中,然后跳转页面到新的URL。在加载新页面时,会从Session中读取保存的筛选条件,并将其应用到查询语句中。这样就能够实现在刷新或者跳转页面时保持筛选条件的效果。

引用chatGPT作答,为了在刷新或从其他页面进入时保持筛选条件,您可以使用会话(session)来存储条件筛选变量,以便在页面刷新或从其他页面进入时仍然可以使用它们。具体来说,您可以在选择下拉框条件并点击“筛选”按钮时,将条件筛选变量存储在会话中。然后,在页面加载时,检查会话中是否存在这些变量,并使用它们来设置筛选条件。以下是示例代码:

在提交表单时将条件筛选变量存储在会话中:

session_start(); // 开始会话
if(isset($_GET['shaixuan'])){
    if($_GET['shaixuan']!='3'){
        $_SESSION['condition'] = " AND 标识='".$_GET['shaixuan']."'";
    }
}
if(isset($_GET['shaixuan1'])){
    if($_GET['shaixuan1']!='3'){
        $_SESSION['condition1'] = " AND 诊断意见2='".$_GET['shaixuan1'] . "'";
    }
}

在页面加载时使用会话中的条件筛选变量:

session_start(); // 开始会话
$condition = " 1=1 "; // 注意,前面有个空格
if(isset($_SESSION['condition'])){
    $condition .= $_SESSION['condition'];
}
$condition1 = " 1=1 "; // 注意,前面有个空格
if(isset($_SESSION['condition1'])){
    $condition1 .= $_SESSION['condition1'];
}

$query_rsdb = "SELECT * FROM dengji where 检查日期='$today' AND $condition AND $condition1";

请注意,当您取消筛选条件时,应将相应的会话变量删除:

session_start(); // 开始会话
if(isset($_SESSION['condition'])){
    unset($_SESSION['condition']);
}
if(isset($_SESSION['condition1'])){
    unset($_SESSION['condition1']);
}
该回答引用ChatGPT
您需要使用会话技术(Session)记录下拉框选择的条件,以便在页面刷新或跳转时保持条件不变。如果您使用 PHP,可以通过以下步骤来实现:

1. 在页面的开始处启用会话:使用 `session_start()` 函数。

2. 将下拉框选择的条件存储到会话中:使用 `$_SESSION` 数组,将下拉框的值存储为键值对的形式,例如,`$_SESSION['condition'] = $_GET['shaixuan'];`。

3. 在初始时加载页面时,检查是否存在会话中的条件值。如果有,则使用它来设置查询条件。在获取条件值时,您可以使用以下代码:`$condition = isset($_SESSION['condition']) ? "标识='" . $_SESSION['condition'] . "'" : "1=1";`。在这个例子中,如果会话中存在条件值,则用这个值设置标识条件,否则设置为“1=1”,即没有条件。

4. 在筛选数据后,您可能需要清除 `$_SESSION` 数组,以便能够重新开始新的筛选。将条件设置为“3”,使得下拉框中的选项显示为默认状态,同时可以通过以下代码清除会话:`unset($_SESSION['condition']);`。

这里有一些示例代码:

页面开始时启用会话:

php
session_start();


将下拉框选择的条件存储到会话中:

php
if (isset($_GET['shaixuan'])) {
if ($_GET['shaixuan'] != '3') {
$_SESSION['condition'] = $_GET['shaixuan'];
} else {
unset($_SESSION['condition']);
}
}


在页面加载时获取会话中存储的条件值和设置查询条件:

php
$condition = isset($_SESSION['condition']) ? "标识='" . $_SESSION['condition'] . "'" : "1=1";
$query_rsdb = "SELECT * FROM dengji where 检查日期='$today' AND $condition AND $condition1";


在筛选后清除会话中的条件:

php
unset($_SESSION['condition']);


希望这能帮助您解决问题。