Как работать с $_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> ';