You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

选择下拉菜单选项后刷新页面加载更新后SQL查询结果的实现问题

我已在谷歌及StackOverflow平台搜索大量同类帖子,但未找到可落地的解决方案。我需要实现如下功能:页面首次进入时默认展示全部数据,在下拉菜单选择CustomerCountryCode后,页面自动刷新,同步更新SQL查询语句,仅展示与下拉选项匹配的表格数据。

History.php(当前WHERE条件写死为'DK',需要替换为$_POST['SelectedValue'])

if (isset($_POST['SelectedValue'])) {
    $sql = "SELECT * FROM [CampaignModule].[dbo].[RetailCampaign] WHERE CampaignNo <> '' AND 
    CustomerCountryCode like 'DK' ORDER BY ID DESC";
}else {
    $sql = "SELECT * FROM [CampaignModule].[dbo].[RetailCampaign] WHERE 
    CampaignNo <> '' ORDER BY 
    ID DESC";
}

$sqlFilter = "SELECT DISTINCT CustomerCountryCode FROM [CampaignModule].[dbo].[RetailCampaign]";
$params = array();
$options =  array("Scrollable" => SQLSRV_CURSOR_KEYSET);
$stmt = sqlsrv_query($conn, $sql, $params, $options);
$stmt2 = sqlsrv_query($conn, $sqlColumns, $params, $options);
$stmtFilter = sqlsrv_query($conn, $sqlFilter, $params, $options);

echo '<select name="Filter" id="FilterSelect" class="form-control">
<option>Choose Country Filter</option>';
while ($row = sqlsrv_fetch_array($stmtFilter, SQLSRV_FETCH_NUMERIC)) {
    echo "<option value='$row[0]'>$row[0]</option>";
}
echo '</select>';

HistoryControl.js - 我尝试编写POST请求提交选中值,在菜单更新后重载页面,也测试过其他多种实现逻辑

$(document).ready(function () {
    $("#FilterSelect").change(function () {
        var value = $("#FilterSelect").val();
        $.ajax({
            url: "../Model/History.php",
            type: "POST",
            data: { 'SelectedValue=': value },
            success: function () {
                location.reload();
            }
        });
    });
});

欢迎提供各类优化方案及最佳实践指导,如需更多信息或代码可随时告知。

更新 - 最终解决方案

感谢@Lam Tran Duc 与 @Manashree Shah提供的思路与帮助

History.php

if (isset($_SESSION['SelectedValue'])) {
    $_POST['SelectedValue'] = $_SESSION['SelectedValue'];
}

if (isset($_POST['SelectedValue'])) {
    $_SESSION['SelectedValue'] = $_POST['SelectedValue'];
    $sql = "SELECT * FROM [CampaignModule].[dbo].[RetailCampaign] WHERE 
    CampaignNo <> '' 
    AND CustomerCountryCode='" . $_POST["SelectedValue"] . "'";
} else {
    unset($_SESSION['SelectedValue']);
    $sql = "SELECT * FROM [CampaignModule].[dbo].[RetailCampaign] WHERE 
    CampaignNo <> '' 
    ORDER BY ID DESC";
}

HistoryControl.js

$(document).ready(function () {
    $("#FilterSelect").change(function () {
        var value = $("#FilterSelect").val();
        $.ajax({
            url: "../Model/History.php",
            type: "POST",
            data: { SelectedValue: value }, // 移除键名末尾的'='符号
            success: function (data) {
                //alert(data)
                location.reload();
            }
        });
    });
});

上述代码可正常运行,此前我遇到$_SESSION变量无法清除的问题,最终通过在historyPage.php中新增会话清除逻辑解决,代码如下:

<?php
include "../Model/History.php";
session_unset();
?>

内容的提问来源于stack exchange,提问作者Bjarke Skriver Villadsen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 02:36:04