@rusgayfer

Как вывести переключатели страниц правильно?

Вывожу переключатели страниц вот так:

// количество записей, выводимых на странице
$per_page=25;
// получаем номер страницы
if (isset($_GET['page'])) $page=($_GET['page']-1); else $page=0;
// вычисляем первый оператор для LIMIT
$start=abs($page*1);
// дальше выводим ссылки на страницы:
$stmNew = $db->dbStream->prepare("SELECT COUNT(*) FROM `asks` ORDER BY `group_id`");
try {
    $stmNew->execute();
} catch (PDOException $error) {
    trigger_error("Ошибка при работе с базой данных: {$error}");
}
$allsgroupss = $stmNew->fetch(PDO::FETCH_ASSOC);
$allgroupss = implode(",", $allsgroupss);
$total_rows = $allgroupss;

$num_pages=ceil($total_rows/$per_page);

for($i=1; $i<=$num_pages; $i++) {
  if ($i-1 == $page) {
  } else {
$strnum .= '<ul class="pagination"><li class="paginate_button"><a href="?page='.$i.'" aria-controls="example2" data-dt-idx="2" tabindex="0">'.$i .'</a></li></ul>';
	
  }
}


Проблема в том, что выводит все переключатели сразу, а мне нужно по 10 переключателей чтобы было вот так:
Назад 1 2 3 4 5 6 7 8 9 10 Вперед

а тут сразу выводит все от 1 до 2428 на страницу кнопок

5aa27324cb383907734863.png
  • Вопрос задан
  • 67 просмотров
Решения вопроса 1
Immortal_pony
@Immortal_pony
$minPage = $page-5 > 0 ? $page-5 : 0;
$maxPage = $page+5 < $num_pages ? $page+5 : $num_pages;

$strnum = '<ul class="pagination">';

if ($minPage > 0) {
    $strnum .= '<li class="paginate_button"><a href="?page='.($minPage-1).'" aria-controls="example2" data-dt-idx="2" tabindex="0">Назад</a></li>';
} 

foreach (range($minPage, $maxPage) as $i) {
    $currentPageClass = $i==$page ? ' active' : '';
    $strnum .= '<li class="paginate_button'.$currentPageClass.'"><a href="?page='.$i.'" aria-controls="example2" data-dt-idx="2" tabindex="0">'.$i .'</a></li>';
}

if ($maxPage < $num_pages) {
    $strnum .= '<li class="paginate_button"><a href="?page='.($maxPage+1).'" aria-controls="example2" data-dt-idx="2" tabindex="0">Вперед</a></li>';
} 

$strnum .= '</ul>';
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Barmunk
Получи первые 5 страниц, проверяй на какой странице ты находишься и сдвигай указатель, выводя следующий отрезок массива

Нашел на гитхабе простой класс, который это реализует https://github.com/lotsofcode/php-array-pagination...
Ответ написан
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы
от 2 000 до 4 000 usd.
HTML Academy Санкт-Петербург
от 130 000 до 140 000 руб.
Duotek Москва
До 120 000 руб.
14 авг. 2018, в 10:57
2400 руб./за проект
14 авг. 2018, в 10:44
3000 руб./за проект
14 авг. 2018, в 09:38
5000 руб./за проект