我使用带有下拉列表的表单制作了一个过滤器。过滤器用于过滤来自 mySQL 数据库的结果。表单与结果在同一页面上处理。我想让过滤器下拉列表在过滤结果后保留过滤器参数。
我过去通过使用会话来完成此操作,但是那是我使用另一个页面来处理查询的时候。我试图应用同样的理论,但它不起作用。我已经搜索了这个网站以及谷歌,我只找到了与一个单独的页面相关的答案以进行处理。
目前,我拥有的代码只会在提交两次后才预填充表单。第一次提交时,它显示“选择...”的默认设置
以下是我的代码的相关部分:
session_start();
if(isset($_SESSION['submitted_filter_values']))
{
extract($_SESSION['submitted_filter_values']);
}
<form action="#filter" method="post" name="filter">
<table>
<tr>
<td>
<select name="prefix">
<option value="">Select...</option>
<option <?php if(isset($prefix) && $prefix == "PDM"){echo "selected=\"selected\"";} ?> value="PDM">PDM</option>
<option <?php if(isset($prefix) && $prefix == "TB"){echo "selected=\"selected\"";} ?> value="TB">TB</option>
<option <?php if(isset($prefix) && $prefix == "JNL"){echo "selected=\"selected\"";} ?> value="JNL">JNL</option>
</select>
</td>
</tr>
<tr align="center">
<td colspan="2"><input type="submit" class="btn_150x30" name="submit" value="Filter Results"></td>
</tr>
</table>
</form>
$_SESSION['submitted_filter_values'] = $_REQUEST;
我曾尝试将会话变量放在不同的位置,但没有奏效。我认为刷新页面可能会起作用,但后来我认为它会像我两次提交表单时一样有效地删除过滤器。需要注意的有趣的一点是,它非常一致,因为它在我每第二次提交时都会正常工作,所以每一次奇数提交它都不会填充,而每一个偶数提交它都会填充。