Как я могу скрыть некоторые номера страниц на странице результатов?

Вот код, который я использую для печати количества страниц в моей странице результатов.

<?PHP
echo '<div style="clear:both;display:block;bottom:0;float:right;margin-right:20px;">';
for($i=1; $i<=$page_count; $i++) {
    if($i == $requested_page) {
        echo "<span class='pagenumberSelected'><b>$i</b></span> ";
    } else {
        echo '<a href="index.php?page='.$i.'" class="pagenumber"><b>'.$i.'</b></a> ';
    }
}
echo '</div><br>';
?>

Теперь это выглядит так:

[1] [2] [3] [4] [5] [6] [7] [8] [8] [10] [11] [12] [13] [14] [15]

Я хочу спросить, как я могу скрыть некоторые номера страниц на странице результатов, чтобы они выглядели так:

[First] [Back] [1] [2] [3] [4] [5] ..... [10] [11] [12] [13] [14] [15] [Next] [Show Last]

Так что я должен изменить, чтобы это выглядело так: я хочу показать 5 страниц из текущего открытого и последние 5 страниц из всех результатов.

2 ответа

Вам нужно применить некоторую логику к этому:

$currPage = 3;
$totalPages = 10;

echo '[First] [Back] ';

for($i=1; $i<=$totalPages; $i++) {
    if ($i > 3 && $i< 8) {
       echo ' . . . ';
    } else {
       echo '[<a href="your_link.php?page='.$i.'">' . $i . '</a>] ';
    }
}

echo '[Next] [Last] ';

каждая страница должна иметь ссылку на какую страницу она ссылается.

$next  = $currPage + 1;
$prev  = $currPage - 1;
$first = 1;
$last  = $totalPages;

чтобы избежать выхода за границы ошибки:

if ($next > $totalPages) $next = $totalPages;
if ($prev < 1) $prev = 1;

Над отпечатками:

[First] [Back] [1] [2] [3] . . . . . . . . . . . . [8] [9] [10] [Next] [Last]

Это способ:

$page_count = 15;
$limit = 8;

for($i=1; $i<=$page_count; $i++) {
    if ($i <= ($limit / 2) || $i > ($page_count - ($limit / 2))) {
        echo "[$i] ";
    } else {
        echo '. ';
    }
}
Другие вопросы по тегам