Как работать с $ _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
Пока что так хорошо, но при просмотре на другие страницы это может быть до тех пор, пока: отношение.php? Sort_name = adres & sort = asc & page = 2 & page = 3 & page = 14 & page = 23 & page = 27
Возраст продолжает появляться из-за $ _SERVER ['QUERY_STRING'], как я могу очистить свой url только с сохранением последней страницы и? Sort_name = adres & sort = asc.
Или вы предлагаете другое решение для упорядочения и разбивки на страницы?
Вместо повторного использования 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
, но можете добавлять или заменять записи новыми значениями. И это гарантирует, что каждый появляется только один раз.
Создайте компоновщик ссылок (простой php whitch make array ("a" => "b", "c" => "d") в? A = b & c = d и перестраивайте его каждый раз (например, добавьте «sort_name» = > …, "sort" => …, "page" => …)
Если вы все еще хотите использовать QUERY_STRING – проверьте, содержит ли он & page = … и заменит его (оба сделаны regexp)
Не используйте QueryString, просто создайте переменную в начале вашего скрипта:
$pagerUrl = $_SERVER['PHP_SELF'].'?sort_name='.$_GET['sort_name']&sort=$_GET['sort'];
И используйте его в своей ссылке:
echo '<a href="'.$pagerUrl.'&page='.$i.'">'.$i.'</a> ';