如何使用$ _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。
或者您是否建议其他订购和分页解决方案?
答案 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> ';