Нужен алгоритм вот такой пагинации:
Вариант реализации, но он не очень красив:
$count_entrys = 148; // количество записей
$entry_on_page = 15; // количество записей на странице
$current_page = 5; // текущая страница
$max_pages_list = 5; // сколько номеров страниц показывать
$count_pages = ceil($count_entrys / $entry_on_page);
$first_page = $current_page - (int) ($max_pages_list / 2);
if ( $first_page <= 1 )
$first_page = 1;
else {
if ( $count_pages - $first_page < $max_pages_list ){
$first_page = $count_pages - $max_pages_list + 1;
if ( $first_page <= 1 )
$first_page = 1;
}
}
$last_page = $first_page + $max_pages_list - 1;
if ( $last_page > $count_pages )
$last_page = $count_pages;
if ( $first_page != 1 )
echo '< |';
for ( $i = $first_page; $i <= $last_page; $i++ ){
echo ' ', $i, ' |';
}
if ( $last_page < $count_pages )
echo ' >';