从先前定义的变量设置$_GET值- PHP



我在网站的每个页面的标题中都有一个搜索表单,当通过表单的action属性进行搜索查询时,将信息提交给另一个页面,即一个名为search.php的页面,它将搜索<input>字段的值存储为一个名为searchQuery的变量。使用PHP搜索MySQL数据库。

我希望将搜索输入字段的值放置在处理搜索的页面的URL中,即search.php

我从其他问题上了解到,你不能将变量添加到表单的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>

在您的表单中设置方法为GET,从action属性中删除查询字符串,因此它只是search.php,将搜索输入字段的名称更改为keyword,并删除submit按钮上的name

<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
}

最新更新