Пагинация из БД 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 ?>