Добавить многоточие в разбивку на страницы 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]
Любая помощь будет оценена по достоинству.
3 answers
Этого должно быть более чем достаточно, чтобы вы хотя бы начали
$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-код):