如何使用$ _SERVER ['QUERY_STRING']

时间:2011-01-31 21:43:55

标签: php

如何使用$ _SERVER ['QUERY_STRING']和分页?

当我的表按此链接排序时:

<a href="'.$_SERVER['PHP_SELF'].'?sort_name=name&sort=asc" title="'.$lang['sorteer_asc'].'"></a>

我的网址变为:relation.php?sort_name = adres&amp; sort = asc

我使用分页链接:

echo '<a href="'.$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'].'&page='.$i.'">'.$i.'</a> '; 

并且网址变为:relation.php?sort_name = adres&amp; sort = asc&amp; page = 2

到目前为止一直很好,但在浏览其他页面时,它可以是: relation.php sort_name = ADRES&安培;排序= ASC&安培;页= 2及页= 3及页= 14&安培;页= 23&安​​培;页= 27

由于$ _SERVER ['QUERY_STRING'],年龄不断出现,如何只保留最后一页并清理我的网址?sort_name = adres&amp; sort = asc。

或者您是否建议其他订购和分页解决方案?

3 个答案:

答案 0 :(得分:32)

您应该使用http_build_query()重新组装QUERY_STRING,而不是重复使用// Merge $_GET with new parameter $QS = http_build_query(array_merge($_GET, array("page"=>2))); // You should apply htmlspecialchars() on the path prior outputting: echo "<a href='" . htmlspecialchars("$_SERVER[PHP_SELF]?$QS") . "'> $i </a>";

$_GET

因此,您包含了所有当前{{1}}参数,但可以使用新值添加或替换条目。并且确保每个只出现一次。

答案 1 :(得分:0)

创建一个链接构建器(简单的php whitch make array(“a”=&gt;“b”,“c”=&gt;“d”)到?a = b&amp; c = d 并且每次重建它(例如,放在那里“sort_name”=&gt; ...,“sort”=&gt; ...,“page”=&gt; ...)

如果您仍想使用QUERY_STRING - 请检查它是否包含&amp; page = ...并替换它(均由regexp制作)

答案 2 :(得分:0)

不要使用QueryString,只需在脚本的开头创建一个变量:

$pagerUrl = $_SERVER['PHP_SELF'].'?sort_name='.$_GET['sort_name']&sort=$_GET['sort'];

并在您的链接中使用它:

echo '<a href="'.$pagerUrl.'&page='.$i.'">'.$i.'</a> ';