Просмотр страницы в php - PullRequest
1 голос
/ 14 февраля 2020

Я должен сделать небольшую настройку на сайте, проблема возникает на странице.

Например, у меня есть страница с кнопкой 11, эти 1 Мне не нужно показывать их сразу, но Я, например, должен показать первые 5, а затем страница должна двигаться, но мне никогда не нужно прекращать показывать 5 результатов на странице.

Я оставляю эталонные изображения:

Это это то, как страница НЕ должна выглядеть :

This is the way the page does NOT have to look

Так должна выглядеть страница :

This is the way the page should look

например, если я доберусь до 7, то 3 больше не отображается и показывает мне 8

Это мой код

    <nav>

    <ul class="pagination">
        <?php if ($pagina == 1) : ?>
            <li class="page-item disabled">
                <a class="page-link" href="">
                    <span class="ti-arrow-left"></span>
                </a>
            </li>
        <?php else : ?>
            <li class="page-item">
                <a class="page-link" href="?pagina=<?php echo $pagina - 1 ?>">
                    <span class="ti-arrow-left"></span>
                </a>
            </li>
        <?php endif; ?>

        <!---------------------------------------------------------------------->

        <?php
        for ($i = 1; $i <= $numeroDePaginas; $i++) {
            if ($pagina == $i) {
                echo "<li class='page-item active'>
        <a class='page-link' href='?pagina=$i'>$i</a>
    </li>";
            } else {
                if (($i + 2) < $pagina || ($i - 2) > $pagina) {
                    echo "<li class='page-item'>
        <a class='page-link' href='?pagina=$i'>$i</a>
        </li>";
                }
            }
        }
        ?>

        <!---------------------------------------------------------------------->

        <?php if ($pagina == $numeroDePaginas) : ?>
            <li class='page-item disabled'>
                <a class='page-link' href=''>
                    <span class='ti-arrow-right'></span>
                </a>
            </li>
        <?php else : ?>
            <li class='page-item'>
                <a class='page-link' href="?pagina=<?php echo $pagina + 1 ?>">
                    <span class='ti-arrow-right'></span>
                </a>
            </li>
        <?php endif; ?>

    </ul>
</nav>

1 Ответ

3 голосов
/ 14 февраля 2020

Вот ты go. Я добавил переменную next_pages и переменные previous_pages, которые обязательно получат pagina - 2 и pagina + 2, если они существуют. Дайте мне знать, если вам нужна помощь, чтобы понять это.

    <nav>

    <?php
    $next_pages = ($pagina + 2) <= $numeroDePaginas ? $pagina + 2 : $numeroDePaginas;
    $previous_pages = ($pagina - 2) >= 1 ? $pagina - 2 : 1;
    ?>
    <ul class="pagination">
        <?php if ($pagina == 1) : ?>
            <li class="page-item disabled">
                <a class="page-link" href="">
                    <span class="ti-arrow-left"></span>
                </a>
            </li>
        <?php else : ?>
            <li class="page-item">
                <a class="page-link" href="?pagina=<?php echo $pagina - 1 ?>">
                    <span class="ti-arrow-left"></span>
                </a>
            </li>
        <?php endif; ?>

        <!---------------------------------------------------------------------->

        <?php
        for ($i = $previous_pages; $i <= $next_pages; $i++) {
            if ($pagina == $i) {
                echo "<li class='page-item active'>
    <a class='page-link' href='?pagina=$i'>$i</a>
</li>";
            } else {
                     echo "<li class='page-item'>
    <a class='page-link' href='?pagina=$i'>$i</a>
    </li>";
             }
        }
        ?>

        <!---------------------------------------------------------------------->

        <?php if ($pagina == $numeroDePaginas) : ?>
            <li class='page-item disabled'>
                <a class='page-link' href=''>
                    <span class='ti-arrow-right'></span>
                </a>
            </li>
        <?php else : ?>
            <li class='page-item'>
                <a class='page-link' href="?pagina=<?php echo $pagina + 1 ?>">
                    <span class='ti-arrow-right'></span>
                </a>
            </li>
        <?php endif; ?>

    </ul>
</nav>

Изменить с дополнительными пояснениями:

Я добавил переменную с именем next_pages, эта переменная проверяет, меньше ли текущая страница (например, 9) + 2 больше или равно переменной "NumberroDePaginas", я сделал это, чтобы убедиться, что мы никогда не показываем никаких страниц, превышающих количество страниц, которые у нас есть, в случае, если 9 + 2 больше, чем "NumberroDePaginas", мы устанавливаем переменную, равную "NumberroDePaginas"

Для переменной previous_pages мы гарантируем, что текущая страница (например, 3) - 2 никогда не будет меньше 1, (например, она не показывает 0 или отрицательные страницы), в случае

3-2 меньше 1, мы установили переменную на 1.

Теперь я отредактировал для l oop, чтобы убедиться, что он начинается с переменной previous_pages и заканчивается с переменной next_pages.

Вот тестовый пример:

$pagina = 7;
$numeroDePaginas = 9;

//$next_pages will be = 9  (i.e 7+2)
//$previous_pages will be = 5 (i.e 7-2) 

для l oop будет печатать страницы с 5 по 9.

...