Как работать с $_SERVER ['QUERY_STRING']

Как работать с $_SERVER ['QUERY_STRING'] и разбиением на страницы?

Когда моя таблица сортируется по этой ссылке:

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

Мой url становится: relation.php? sort_name = adres & sort = asc

Я использую ссылку для разбивки на страницы:

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

И URL-адрес становится: relation.php? sort_name = adres & sort = asc & page = 2

До сих пор так хорошо, но при просмотре на другие страницы это может быть до тех пор, пока: relation.php sort_name = & Adres усилителя;? = сортировать по возрастанию & страница = 2 & страница = 3 & страница = 14 & страница = 23 & страница = 27

Возраст продолжает появляться из-за $_SERVER ['QUERY_STRING'], как я могу очистить свой url только с сохранением последней страницы и? sort_name = adres & sort = asc.

Или вы предлагаете другое решение для упорядочения и разбивки на страницы?

Ответы

Ответ 1

Вместо повторного использования QUERY_STRING вы должны собрать его заново с http_build_query().

// 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 включены, но могут добавлять или заменять записи новыми значениями. И это гарантировало, что каждый появляется только один раз.

Ответ 2

Создайте компоновщик ссылок (простой php whitch make array ( "a" = > "b", "c" = > "d" ) в? a = b & c = d и перестраивайте его каждый раз (например, добавьте "sort_name" = > ..., "sort" = > ..., "page" = > ...)

Если вы все еще хотите использовать QUERY_STRING - проверьте, содержит ли он & page =... и заменит его (оба сделаны с помощью регулярного выражения)

Ответ 3

Не используйте QueryString, просто создайте переменную в начале вашего script:

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

И используйте его в своей ссылке:

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