. //Prev . for($number = 1; $number <= $num_pages; $number++) { if($page == $number) { $navigator .= "<b>[$number]</b> "; } else { $navigator .= "<a href='?c=".$_SESSION['cID']".&rows=".$per_page."&page=$number'>$number</a> "; } } . //Next .
Это фрагмент, который печатает количество страниц.
Пример вывода:
Предыдущая 1 2 3 4 [5] 6 7 8 9 10 Следующая
5 – текущая страница.
Проблема: номера страниц отображаются в последовательности без ограничений. Если у меня 100 страниц, отображаются все номера.
Вопрос: Мне нужно, чтобы мои номера подкачки отображались следующим образом …
Предположим, что у нас есть только 7 ($ num_pages) страниц:
Предыдущая 1 2 [3] 4 5 6 7 Следующая
Предположим, у нас есть 90 страниц:
[1] 2 3 4 5 6 7 … 90 Далее
Предположим, что пользователь нажал на 7-ю страницу:
Предыдущая 1 … 5 6 [7] 8 9 10 11 … 90 Следующая
Предположим, что пользователь нажал 11-ю страницу:
Предыдущая 1 … 9 10 [11] 12 13 14 15 … 90 Следующая
Предположим, что пользователь нажал 15-ю страницу:
Предыдущая 1 … 13 14 [15] 16 17 18 19 … 90 Следующая
Предположим, что пользователь нажал 90-ю страницу:
Предыдущий 1 … 84 85 86 87 88 89 [90]
Любая помощь будет оценена.
Этого должно быть более чем достаточно, чтобы начать работу по крайней мере
$count = 7; // number to show // start at half threshold down from the current location. $number = $current - round($count/2); if( $number > 1 ) echo '...'; else $ // increase to have number start at 1. for( $number; $number < $number + $count; $number++) { // your for loop as normal } if( $number < $total ) echo '...';
$radius = 3; for($i = 1; $i <= $total; $i++){ if(($i >= 1 && $i <= $radius) || ($i > $current - $radius && $i < $current + $radius) || ($i <= $total && $i > $total - $radius)){ if($i == $current) echo "<b>".$i."</b>"; } elseif($i == $current - $radius || $i == $current + $radius) { echo "... "; } }
Элегантным решением для такого рода вещей является использование «логарифмической навигации по страницам». См. Мой ответ на этот вопрос (включая PHP-код):
Как выполнять навигацию по страницам для многих, многих страниц? Логарифмическая навигация по страницам