0

我的菜单栏顶部有一个快速搜索选项卡。它有一个输入文本框(用于搜索的内容)和一个按钮。当该用户当前填写框并单击按钮时,用户将被带到实际的搜索页面。

在此搜索页面上,页面顶部会显示一组更高级的搜索过滤器(带有提交按钮),然后搜索结果将显示在下方。

我想要做的是在搜索页面加载时显示基本搜索的结果(从任何其他页面,使用菜单栏),而用户没有按下该页面上的提交按钮。这有望为用户节省时间(也许不需要高级搜索)。注意:当单击基本搜索按钮并将用户带到搜索页面时,有关要搜索的文本的高级过滤器文本框由基本搜索文本框中的内容自动填充。

但是,因为我没有按下提交按钮,所以我不能使用 $_POST["searchText"] 作为我的 if 条件的参数(如果用户在文本框中输入文本,它只会显示搜索结果)来显示搜索结果. 相反,我宁愿使用类似的东西:

!is_null(searchText.value)

但显然这是不正确的语法/不存在。有没有人有建议的解决方案将 HTML 输入 searchText 中的内容转换为 PHP $variable?

4

3 回答 3

1

我不太明白为什么不能使用 POST/GET。当用户在页面 X 上并在菜单栏中输入搜索值时,他们将被带到搜索页面,搜索查询通过 GET/POST 传递。

更改服务器端逻辑以立即在此查询上执行搜索并显示结果,而不是显示更高级的搜索过滤器选项(或显示搜索结果之外的高级选项),这完全取决于您。您不需要从搜索页面到服务器的第二次通信来启动搜索功能。

于 2013-11-08T16:49:21.883 回答
0

因此,在您的高级搜索页面上,您正在考虑执行以下操作:

<input type='text' name='searchText' value='<?php echo (isset() ? htmlentities($_POST['searchText'], ENT_QUOTES) : ''; ?>' />

我认为 htmlentities 在那里是正确的,但我可能是错的。

回声实际上是三元的。我相信isset()可能是您正在寻找的等价物。基本上,它会检查是否$_POST['searchText']已设置,并且要么回显其内容,要么什么都不回显。

$_POST并且$_GET是全局变量,因此您只需使用isset(). 但是,对于您自己的数组,您需要在检查 witharray_key_exists('key', $array)之前检查 with isset($array['key'])

于 2013-11-08T16:51:24.067 回答
0

$_REQUEST["name"]替换两者POSTGET

<form action="#" method="POST">
<input type="text" name="one">
<input type="submit" />
</form>
<form action="#" method="GET">
<input type="text" name="one">
<input type="submit" />
</form>

<?php
if(isset($_REQUEST["one"])){echo $_REQUEST["one"];}
?>
于 2013-11-08T17:04:30.887 回答