Пагинация из БД PHP

Подскажите, пожалуйста, как можно сделать пагинацию из этого, чтобы ссылки на страницы выводились не все сразу, а например 1,2,3,4,5....30 или стрелочками <- 1,2,3,4,5 ->. Сейчас выводиться очень большой список ссылок при большом объеме данных.

<?php

$per_page = 30;
$cur_page = 1;

if (isset($_GET['page']) && $_GET['page'] > 0)
{
    $cur_page = $_GET['page'];
}
$start = ($cur_page - 1) * $per_page;


$sql  = "SELECT SQL_CALC_FOUND_ROWS, * FROM album ORDER BY `date` DESC LIMIT ?i, ?i ";

$data = $db->getAll($sql, $start, $per_page);

$rows = $db->getOne("SELECT FOUND_ROWS()");
    if (!empty($rows)) {
        echo "";
    } else {
        echo "<p class='text-error'>Фотографий нет.</p>";
    }


$num_pages = ceil($rows / $per_page);

$page = 0;

?>




<? foreach ($data as $row): ?>

  <div class="photo__item">
    <img class="photo__image" 
    src="content/gallery/<?=$row['image']?>" width="420" height="420" alt="<?=$row['alt']?>" />
  </div>
  
<? endforeach ?>


<br/>

<p class="">
<? while ($page++ < $num_pages): ?>
<? if ($page == $cur_page): ?>
<b><?=$page ?></b>
<? else: ?>
<a href="?page=<?=$page?>"><?=$page?></a>

<? endif ?>
<? endwhile ?>


Ответы (0 шт):