我在網站上每個頁面的標題中有一個搜索表單,該表單在通過表單的屬性進行搜索查詢時將資訊提交到另一個頁面action,即一個名為的頁面search.php,它獲取搜索<input>欄位的值并將其存盤為一個名為的變數searchQuery. 使用 PHP 搜索 MySQL 資料庫。所有這些都按預期作業。
我希望將搜索輸入欄位的值放置在處理搜索的頁面的 URL 中,即search.php.
我從其他關于 SO 的問題中了解到,您不能將變數添加到表單的action屬性中。如果我在 action 屬性中添加查詢字串的鍵,表單仍然可以正常作業:
action="search.php?keyword="
由此我認為我可以使用以下方法在頁面上設定$_GET值:search.php
if(isset($_POST['search-submit'])) {
// make this variable available before HTML output
$searchQuery = htmlspecialchars($_POST['search']);
$_GET['keyword'] = $searchQuery;
}
然而,這不起作用,盡管它不會在我的 PHP 錯誤日志中引發任何錯誤。
因為我在 action 屬性分配的特定頁面上運行腳本,我認為我不需要使用$_SESSION變數?
HTML 表單
這是標題中每一頁上的表格
<form action="search.php?keyword=" method="POST">
<label for="search">Enter Search</label>
<input type="search" name="search" id="search">
<button type="submit" name="search-submit" id="search-submit">Search</button>
</form>
uj5u.com熱心網友回復:
在您的表單中將方法設定為GET,從屬性中洗掉查詢字串,action使其只是search.php,將搜索輸入欄位上的名稱更改為keyword并洗掉按鈕name上的。submit
<form action="search.php" method="GET">
<label for="search">Enter Search</label>
<input type="search" name="keyword" id="search">
<button type="submit" id="search-submit">Search</button>
</form>
然后在您的search.php頁面中,將您的初始代碼更改為以下內容:
if(isset($_GET['keyword'])) {
// make this variable available before HTML output
$searchQuery = htmlspecialchars($_GET['keyword']);
} else {
header("Location: index.php"); // use whatever page is your home page or preferred page to redirect to
}
然后在您的搜索查詢中確保設定了該$_GET值:
if(isset($_GET['keyword'])) {
// run your search query using the $searchQuery variable
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/471043.html
上一篇:無法為谷歌地圖距離矩陣設定模式
下一篇:重新加載不會改變POST狀態
