условия кнопки далее не работают для разбиения на страницы с помощью PHP

#php #pagination #navigation

Вопрос:

У меня проблема с разбиением на страницы с помощью PHP с помощью кнопки «Предыдущий» и «Следующий». Мой код работает для кнопки «Предыдущая» (когда вы находитесь на первой странице, вы не можете перейти на предыдущую страницу. Но я хочу остановить разбиение на страницы, когда статей больше не будет. Но в моем коде по-прежнему можно открывать новые страницы, даже если они пусты.

$toto-это динамическая переменная, которая изменяется вместе с базой данных. Поэтому я не могу назвать только номер.

     <?php $previousPpage; $nextPage; $toto;

        // CODE A EXTERNALISER ET METTRE EN PAGE N° DE PAGE
        $pdoStatement = $pdo->prepare('SELECT COUNT(*) AS totalMessages FROM messages');

        if ($pdoStatement->execute()) {
            $totalMessages = $pdoStatement->fetch(PDO::FETCH_ASSOC);
        
        function getPreviousPage()
        {     
            if (isset($_GET['page']) amp;amp; $_GET['page'] > 1) {
                $previousPage = $_GET['page'] - 1;
            } else {
                $previousPage = 1;
            }
            return $previousPage;
        }  

        $toto = ceil($totalMessages['totalMessages']);
        $toto = intval($toto);
        var_dump($toto); // RETURN a int

        function getNextPage()
        { 
            if (isset($_GET['page']) amp;amp; $_GET['page'] < $toto) { // code error undefined variable $toto
                $nextPage = $_GET['page']   1;
            } else {
                $nextPage = $_GET['page'];
            }
            return $nextPage;
        } 

            echo '<nav aria-label="Page navigation example">
                    <ul class="pagination justify-content-center">
                        <li>
                            <a class="page-link" href="?page=' . getPreviousPage() . '" aria-label="Previous">
                            <span aria-hidden="true">amp;laquo;</span>
                            </a>
                        </li>';

                        for ($i = 1; $i <= ceil($totalMessages['totalMessages'] / 10); $i  ) {
                                echo '<li><a class="page-link" href="?page='.   $i . '">' . $i . '</a></li>';
                        }                       

                        echo '<li>
                            <a class="page-link" href="?page=' . getNextPage() . '" aria-label="Next">
                            <span aria-hidden="true">amp;raquo;</span>
                            </a>
                        </li>
                    </ul>
                </nav>';
        }
    ?>
 

Когда я делаю var_dump между getPreviousPage() и функцией getNextPage (), она возвращает мне значение int, так что это хорошо.
Но когда я вызываю функцию getNextPage() в эхе, она не работает, и это говорит мне

 Warning: Undefined variable $toto inC:xampphtdocscopy-twitterview.php on line 76
 

Строка 76 соответствует

  if (isset($_GET['page']) amp;amp; $_GET['page'] < $toto)
 

Я попытался поставить глобальный перед инициализацией, но безуспешно

У кого-нибудь есть идея ?

Комментарии:

1. Вы пробовали добавить global $toto; функцию getNextPage() внутри? Или просто измените свою функцию на function getNextPage($toto) { } и передайте $toto в качестве аргумента в функции, getNextPage($toto) ?