我試過谷歌很多,并在其他類似的stackoverflow帖子中搜索,但我真的找不到對我有幫助的東西-.-
我正在嘗試重繪 我的站點并更新我的表值,并且只顯示與下拉選單相同的值。When i enter the page i want it to show everything like it does now, and then update the site and my SQL statement, when choosing CustomerCountryCode I only want to show the 'DK', when choosing from the dropdown menu
此處顯示的選單
History.php(WHERE 應該類似于 $_POST['SelectedValue'] 而不是 'DK')
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" >
<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 的幫助和想法下
歷史.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";
}
歷史控制元件.js
$(document).ready(function () {
$("#FilterSelect").change(function () {
var value = $("#FilterSelect").val();
$.ajax({
url: "../Model/History.php",
type: "POST",
data: { SelectedValue: value }, // remove the '=' character
success: function (data) {
//alert(data)
location.reload();
}
});
});
});
當我這樣做時,它正在作業,但我需要它來清除 $_SESSION 變數,我遇到了很多麻煩,最后得到了清除我 historyPage.php 中的會話的解決方案
<?php
include "../Model/History.php";
session_unset();
?>
uj5u.com熱心網友回復:
據我了解,您正在經歷:
- 下拉串列(國家/地區過濾器)
- 一個資料顯示表。
當下拉串列中選擇一個值時,表格中的資料將按所選下拉串列的值進行過濾。
如果我理解正確,那么我有一些想法給你如下:
歷史.php
我看到它有兩個與它無關的獨立部分:
在第一個中
if / else,您依靠 $_POST['SelectedValue'] 變數來定義一個查詢來獲取表中顯示的資料。其余代碼用于獲取下拉串列的資料。我認為這段代碼應該在另一個檔案中。
歷史控制元件.js
我覺得這個代碼不是很正確的:data: {'SelectedValue =': value}。因為當你喜歡當Ajax呼叫History.php檔案,變數名稱將是分配資料$_POST['SelectedValue='],以便于if (isset($_POST['SelectedValue']))將始終回傳false。這會導致意想不到的結果。
像這樣編輯它:
$.ajax({
url: "../Model/History.php",
type: "POST",
data: { 'SelectedValue': value }, // remove the '=' character
success: function () {
location.reload();
}
});
uj5u.com熱心網友回復:
您如何使用 PHP 會話變數,如下所示:
if (isset($_POST['SelectedValue'])) {
$_SESSION['SelectedValue'] = $_POST['SelectedValue'];
$sql = "SELECT * FROM [CampaignModule].[dbo].[RetailCampaign] WHERE CampaignNo <> '' AND
CustomerCountryCode like 'DK' ORDER BY ID DESC"
}else {
$_SESSION['SelectedValue'] = "";
$sql = "SELECT * FROM [CampaignModule].[dbo].[RetailCampaign] WHERE
CampaignNo <> '' ORDER BY
ID DESC";
}
然后您可以使用會話變數來預選該選項:
echo '<select name="Filter" id="FilterSelect" >
<option>Choose Country Filter</option>';
while ($row = sqlsrv_fetch_array($stmtFilter, SQLSRV_FETCH_NUMERIC)) {
if($row[0] == $_SESSION['SelectedValue']){
echo "<option value='$row[0]' selected>$row[0]</option>";
}else{
echo "<option value='$row[0]'>$row[0]</option>";
}
}
echo '</select>';
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/370780.html
