Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
86 / 86 / 30
Регистрация: 12.08.2014
Сообщений: 1,129

Сделать правильный адрес для страниц в постраничной навигации

05.08.2017, 21:03. Показов 1236. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Столкнулся с такой проблемой, что не могу вывести правильные ссылки для страниц. Суть в том, что у меня есть страница с выводом пользователей, она может иметь,а может не иметь $_GET['sort_type'] для сортировки, но там может также быть $_GET['page'] для постраничной навигации. В зависимости от этого, я делаю ссылки вида ?page и &page (если нет sort_type и есть sort_type соответственно). Но проблема заключается в том, что адрес у может быть например такой users?page=1&page=2&page=3, хотя мне нужен адрес только users?page=3.
делаю я все так:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
        // проверяем, нужно ли кнопки 'назад'
            $current_url=$_SERVER['REQUEST_URI'];
            if(strlen($current_url)>6){//длина в 6 симв это адрес страницы с пользователями без каких-либо параметров
                $current_url.="&"; // если не сортировки по параметрам
            }else{
                $current_url.="?";// если  уже есть сортирока по параметрам
            }
            if($page != 1) $firstpage = '<a class="page-link" href='.$current_url.'>«</a> | <a class="page-link" href='.$current_url.'page='.($page - 1).'><</a> | ';
            if($page != $total) $nextpage = ' | <a class="page-link" href='.$current_url.'page='. ($page + 1) .'> > </a> | <a class="page-link" href='.$current_url.'page=' .$total. '>»</a>';
            if($page - 2 > 0) $page2left = ' <a class="page-link" href='.$current_url.'page='. ($page - 2) .'>'. ($page - 2) .'</a> | ';
            if($page - 3 > 0) $page3left = ' <a class="page-link" href='.$current_url.'page='. ($page - 3) .'>'. ($page - 3) .'</a> | ';
            if($page - 1 > 0) $page1left = '<a class="page-link" href='.$current_url.'page='. ($page - 1) .'>'. ($page - 1) .'</a> | ';
        // проверяем, нужно ли кнопки 'вперед'
            if($page + 3 <= $total) $page3right = ' | <a class="page-link" href='.$current_url.'page='. ($page + 3) .'>'. ($page + 3) .'</a>';
            if($page + 1 <= $total) $page1right = ' | <a class="page-link" href='.$current_url.'page='. ($page + 1) .'>'. ($page + 1) .'</a>';
            if($page + 2 <= $total) $page2right = ' | <a class="page-link" href='.$current_url.'page='. ($page + 2) .'>'. ($page + 2) .'</a>';
            if($total > 1){
                $current_page = "<a href=index/page/$page class='selected-page'>".$page."</a>";
                //оборажение кол-ва страниц и текущей
                        echo $firstpage.$page3left.$page2left.$page1left.'<b>'.$current_page.'</b>'.$page1right.$page2right.$page3right.$nextpage;
            }
        echo "</div>";
    }
Надеюсь, понятно объяснил. Скажите, как исправить эту проблему? Заранее спасибо!
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.08.2017, 21:03
Ответы с готовыми решениями:

Неправильно отображается количество страниц в постраничной навигации
Всем доброго времени суток! Столкнулся с такой проблемой, что количество страниц не соответствует действительности. &lt;?php //...

Как избавится от дублирования страниц в постраничной навигации в PHP
Здравствуйте. Подскажите как избавиться от дублирования тегов &quot;title&quot;, &quot;meta_d&quot;, &quot;meta_k&quot; в постраничной навигации. Адрес ссылки имеет...

Вопрос с постраничной навигации
Здравствуйте, Помогите разобраться с постраничной навигации,написал код,проблема в следующем,я вывожу товары на страницу по 5 штук,а мой...

9
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
05.08.2017, 21:53
Лучший ответ Сообщение было отмечено paskalnikita как решение

Решение

PHP
1
2
3
4
5
list($current_url) = explode('?', $_SERVER['REQUEST_URI'], 2);
$query = $_GET;
$query['page'] = 10;
 
var_dump(sprintf('%s?%s', $current_url, http_build_query($query)));
1
86 / 86 / 30
Регистрация: 12.08.2014
Сообщений: 1,129
05.08.2017, 22:02  [ТС]
при таком адресе :/users?sort_by_username
Цитата Сообщение от Jewbacabra Посмотреть сообщение
var_dump
выдает такое:
/users?sort_by_username=&page=10
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
05.08.2017, 22:04
Цитата Сообщение от paskalnikita Посмотреть сообщение
выдает такое:
Что не так?
0
86 / 86 / 30
Регистрация: 12.08.2014
Сообщений: 1,129
05.08.2017, 22:07  [ТС]
Цитата Сообщение от Jewbacabra Посмотреть сообщение
Что не так?
Цитата Сообщение от paskalnikita Посмотреть сообщение
=&
вот этот кусочек ^
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
05.08.2017, 22:08
Цитата Сообщение от paskalnikita Посмотреть сообщение
вот этот кусочек ^
Это полностью корректная строка запроса
0
86 / 86 / 30
Регистрация: 12.08.2014
Сообщений: 1,129
05.08.2017, 22:15  [ТС]
Цитата Сообщение от Jewbacabra Посмотреть сообщение
Это полностью корректная строка запроса
ну, получается , что не сомвсем
Я скопировал все это:
Цитата Сообщение от Jewbacabra Посмотреть сообщение
list($current_url) = explode('?', $_SERVER['REQUEST_URI'], 2); $query = $_GET; $query['page'] = 10; var_dump(sprintf('%s?%s', $current_url, http_build_query($query)));
и на странице
Code
1
/users
я получаю вот это
Code
1
string(14) "/users?page=10"
НО! на странице
Code
1
/users?sort_by_id
я получаю вот это
Code
1
string(26) "/users?sort_by_id=&page=10"
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
05.08.2017, 22:21
Цитата Сообщение от paskalnikita Посмотреть сообщение
я получаю вот это
Цитата Сообщение от Jewbacabra Посмотреть сообщение
Это полностью корректная строка запроса
...
http_build_query создает 100% валидную строку запроса, огромное количество разработчиков может это подтвердить
0
86 / 86 / 30
Регистрация: 12.08.2014
Сообщений: 1,129
05.08.2017, 22:26  [ТС]
Цитата Сообщение от Jewbacabra Посмотреть сообщение
...
да, вы правы, все работает НО! вот этот кусочек: =& это ведь не совсем правильно?! ведь вместо такого /users?sort_by_id=&page=10 должно быть такое /users?sort_by_id&page=10 (без первого '='). Можно ли это как-то убрать(используя например substr)?
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
05.08.2017, 22:28
Цитата Сообщение от paskalnikita Посмотреть сообщение
вот этот кусочек: =& это ведь не совсем правильно?!
Это совсем правильно
Цитата Сообщение от paskalnikita Посмотреть сообщение
едь вместо такого /users?sort_by_id=&page=10 должно быть такое /users?sort_by_id&page=10 (без первого '=').
Браузеру все равно есть там = или нет
Цитата Сообщение от paskalnikita Посмотреть сообщение
Можно ли это как-то убрать(используя например substr)?
Как в том анекдоте - "Вам шашечки или ехать?"
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.08.2017, 22:28
Помогаю со студенческими работами здесь

Скрипт постраничной навигации
Проблемка такая-задался мыслью переделать свой сайт...в том числе и навигацию постраничную...так как она была написана не мной и случайно...

Многоточие в постраничной навигации
Здравствуйте. Есть небольшой скрипт игровой статы. Количество инфы увеличилось, и страниц стало так много, что не помещается в 22&quot;...

Посздание постраничной навигации
Подскажите плиз ! Нужна постраничная навигация след вида : Есть например комментарии нужно выодить по 10 штук на страницу и по пять...

Апгрейд постраничной навигации...
Здраствуйте, вобщем такая ситуация.... есть постраничная навигация 1,2,3,4,5,6,7,8,9.... и так дофига... вобщем дело в том, что ее нужно...

Скрипт постраничной навигации
Здрасте всем!! Полазил по форуму и в поиске, нашел кучу всяких тем, но не одна не помогла, поэтому хочу попросить вас о помощи. Я новичок...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru