Добавить Эллипсис в разбиении на страницы PHP

. //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]

Любая помощь будет оценена.

Solutions Collecting From Web of "Добавить Эллипсис в разбиении на страницы PHP"

Этого должно быть более чем достаточно, чтобы начать работу по крайней мере

 $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-код):

Как выполнять навигацию по страницам для многих, многих страниц? Логарифмическая навигация по страницам