Задать вопрос
@LikeSD
Системный администратор

Как поставить лимит на кол-во ссылок в пагинации?

Есть скрипт вывода всех пользователей из БД с пагинацией.

spoiler
public static function getUsers() {
$perpage = 15;
        $page = (!empty($_GET['p']))? intval($_GET['p']): 1;
        $res =  $db->query("SELECT COUNT(*) FROM users WHERE status_id!=100");
        $count = $res->fetchColumn();
        $pages_count = ceil($count / $perpage);
        if ($page > $pages_count) $page = $pages_count;
        $start_pos = ($page - 1) * $perpage;
        
        $sth = $db->prepare("SELECT id_user, name_user FROM user LIMIT :start, :limit");
        $sth->bindParam(':start', $start_pos, PDO::PARAM_INT);
        $sth->bindParam(':limit', $perpage, PDO::PARAM_INT);
        $sth->execute();
            while($row = $sth->fetch(PDO::FETCH_ASSOC)) {
            $user_info[] = $row;
        }
        return $user_info;

public function Pager($page, $pages_count) {
        global $page, $pages_count;
        for ($j = 1; $j <= $pages_count; $j++) {
            if ($j == $page) {
                echo ' <li class="active"><a href=/users/main/?p='.$j.'>'.$j.'</a></li> ';
            } else {
                echo ' <li><a href=/users/main/?p='.$j.'>'.$j.'</a></li> ';
            }
            if ($j != $pages_count) echo ' ';
        } 
        return true;
    }



Код работает, но при большом кол-ве пользователей выводятся все ссылки на переключения страниц.
То есть при 1500 пользователей покажет 150 ссылок на переключение страниц.

Как сделать, что бы показывалось, например только так < << ... 5 6 7 ... >> >

Знаю, что надо как-то ограничить, но как не могу сообразить.
  • Вопрос задан
  • 157 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 3
mashletov
@mashletov
Math.random()
Ну что сложного-то, я не пойму?
for ($j = 1; $j <= $pages_count; $j++) {
вот есть цикл вывода всех ссылок. Измените его на как-то так:
for ($j = $current_page - 1; $j <= $current_page + 1; $j++)


Конечно же нужна проверка на начало или конец, чтобы лишние точки не выводить.
Ответ написан
Комментировать
kawabanga
@kawabanga
Можете просто поразмыслить.

1) У вас есть count и размер страницы.
2) у вас есть текущая страница, или страница 0 при ее отсутствии.
3) Считаете кол-во страниц, и выводите виджет страницы по правилу, с учетом открытой страницы.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы