gpt4 book ai didi

php - 在同一页面上提交表单时如何预填充下拉列表?

转载 作者:太空宇宙 更新时间:2023-11-04 14:42:35 25 4
gpt4 key购买 nike

我使用带有下拉列表的表单制作了一个过滤器。过滤器用于过滤来自 mySQL 数据库的结果。表单与结果在同一页面上处理。我想让过滤器下拉列表在过滤结果后保留过滤器参数。

我过去曾使用 session 来完成此操作,但那是我使用另一个页面来处理查询的时候。我曾尝试应用相同的理论,但没有奏效。我搜索了这个网站以及谷歌,我只找到了与单独页面相关的答案进行处理。

目前,我的代码只会在提交两次后预填充表单。第一次提交时显示默认设置“选择...”

以下是我的代码的相关部分:

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;

我曾尝试将 session 变量放在不同的位置,但没有奏效。我想也许刷新页面会起作用,但后来我想它会像我两次提交表单时那样有效地删除过滤器。需要注意的有趣一点是,它非常一致,因为它在我每次提交时都有效,所以每次奇数提交都不会填充,而每个偶数提交都会填充。

最佳答案

试试这个:

<?php 
session_start();

if(isset($_POST['prefix'])){
// if the form has been posted use it
$prefix = $_POST['prefix']; // <------ RUN SOME VALIDATION HERE!!!!!!!
$_SESSION['submitted_filter_values'] = $prefix; // update the session var

}elseif(isset($_SESSION['submitted_filter_values'])){
// if the form hasn't been posted then look in the $_SESSION
$prefix = $_SESSION['submitted_filter_values']; // <------ RUN SOME VALIDATION HERE (trust no one!)!!!!!!!
}



?>
<form action="#filter" method="post" name="filter">
<table>

<tr>
<td>
<select name="prefix">
<option value="">Select...</option>
<option<?php if($prefix == "PDM"){echo " selected=\"selected\"";} ?> value="PDM">PDM</option>
<option<?php if($prefix == "TB"){echo " selected=\"selected\"";} ?> value="TB">TB</option>
<option<?php if($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>

关于php - 在同一页面上提交表单时如何预填充下拉列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13217440/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com