vic4884
1/5/2020 - 10:36 AM

Pagination functions

<?php

   $limit = 3; // кол-во постов на страницу
   
   if ( isset($_GET['page']) && $_GET['page'] > 0 ) { // номер страницы
   
     $current_page = intval($_GET['page']); // -1 /-> 1 , -3 /-> 3
     
    } else {
    
            $current_page = 1;
            
    }
    
    
   $query = "select count(*) as count from posts where published = 1"; // формирование запроса
   
   $count_rows = $app['database']->getRows($query); // получить общее число записей в таблице posts
   
   $count_rows = $count_rows[0]['count']; // всего записей ~20

   $offset = ($current_page - 1) * $limit; // с какого номера строки получить посты -- (2 - 1) * 3 = 3
   
   $total_pages = intval(($count_rows - 1) / $limit) + 1; // целое число - кол-во ссылок для пагинации
   
   $query = "select * from posts where published = 1 order by id DESC LIMIT {$offset}, {$limit}";
   
   $posts = $app['database']->getRows($query);
   
   
  ?>
  
  <div class="pagination">
        <?php
        if ($current_page > $total_pages) {
            echo "<p>Запрашиваемой страницы #$current_page не существует</p>
                  <br>
                  <a href='$path'>Вернуться на главную</a>";
        } else {
            for ($i = 1; $i <= $total_pages; $i++) {
                $current_page == $i ? $attr = "class='active'" : $attr = "href='?page=$i'";
                echo "<a $attr>$i</a>";
            }
        }
        ?>
    </div>