做了一个按条件筛选显示数据库列表的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']);
}
该回答引用ChatGPTphp
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']);