在搜索引擎中的PHP代码编写问题

时间:2015-01-09 13:10:13

标签: php mysql pagination search-engine

尝试使用搜索查询创建分页。一切正常,此处出现错误,我无法使用$page进行搜索。 想在浏览器中这样:

search.php?page=what+i+search where it equals to searched query

代码正常工作(无查询):

for ($b=1;$b<=$a;$b++)
{
?><a href="search.php?page=<?php echo $b; ?>" style="text-decoration:none"><?php echo $b." ";?></a> <?php
}
?>

试过这样:

for ($b=1;$b<=$a;$b++)
echo " <a href='search.php?page=“.stripslashes($page).”'> </a>";
?>

并且像这样:

for ($b=1;$b<=$a;$b++)
echo " <a href='search.php?page=$page&submit=$b'> </a>";
?>

此处$page是简单html格式的名称,请参阅:

<form action="search.php" method="GET">
<b>Enter Search Term:</b> <input type="text" name="page" >
    <br>
<input type="submit" value="Search">
</form>

请帮助,我想在分页中包含搜索查询。

2 个答案:

答案 0 :(得分:1)

使用PHP内置函数urlencode正确编码$ page值。

或者,您可以使用http_build_query动态构建查询字符串:

$searchTerm = 'foo bar'; // it can be empty 

$queryData = $searchTerm ? ['search' => $searchTerm] : [];

for ($i = 1; $i <= $maxPages; $i++) {
    $queryData['page'] = $i;
    $href = 'search.php?' . http_build_query($queryData);
    echo " <a href='$href'>$i</a>";
}

答案 1 :(得分:0)

您需要跟踪两个变量:

  • 您目前在哪个页面
  • 搜索字词

这意味着您的最终网址应如下所示:

search.php?search=words&page=2

如果您循环浏览$_GET个变量,则会看到$_GET['search']$_GET['page']的条目。如果未设置,您的代码也应该具有指定页面1的内容。

您的表单可以保持不变。但是,在构建页面链接时,您应该执行以下操作:

for($p=1;$p<=$maxPages;$p++) {
    echo '<a href="search.php?search=';
    echo urlencode($_GET['search']);  // urlencode() escapes spaces and other special characters
    echo '&page=' . $p;
    echo '">' . $p . '</a>';
}