Простая навигация по страницам

$max - сколько максимально возможно страниц, это можно выяснить методом в скобках ( $max = общее число объектов / кол-во объектов на страницу ) я не ставил этот просчёт в класс, так как его лучше выяснять ДО навигационных ссылок, для вывода сообщений что СТРАНИЦА ПУСТА, если запрашиваемая страница больше данного числа, а навигация как известно ставится после вывода объектов или не ставится вообще.

$str - данная страница, которую получаем через ГЕТ ($str = intval($GET['str']))

$path = '' - это переменная при использовании ($pars = parse_url('http://example.com/index.php?str=6') после этого, в переменной $pars['path'] будет строка '?str=6' ) это нам поможет указать нужный блок или подблок, который вы используете в своём коде, если нет, для этого есть значение по умолчанию или можете просто снести его...

// определяем функцию 
function navigator($max, $str, $path = '') {
    echo 'бла бла бла'; // верхнее оформление блока навигации 
    $ssil = $str - 3; // 3 это кол-во страниц, которые показывать ДО данной страницы (можете менять или добавить var) 
    $link = $str + 4; // 4 наоборот, сколько страниц показывать за данной
    // запускаем цикл который будет действовать 7 раз или меньше если максимально страниц меньше чем $link  
    while ($ssil < $link and $max >= $ssil) {
        if ($ssil > 0) { // тут прикрываем отрицательные числа 
            if ($ssil == $str) echo '=' . $ssil . '='; // номер данной страницы (если актуально) 
            else echo '<a href=".' . $_SERVER['PHP_SELF'] . '?' . $path . 'str=' . $ssil . '">[' . $ssil . ']</a>'; // остальные ссылки 
        }
        ++$ssil; // воронка цикла 
    }
    if ($str > 1)
        echo '<br/><a href=".' . $_SERVER['PHP_SELF'] . '?' . $path . '">[в начало]</a>'; // ссылка на начало 
    if ($str < $max) {
        echo '<br/><a href=".' . $_SERVER['PHP_SELF'] . '?' . $path; // ссылка на конец 
        if ($path !== '') echo '&';
        echo 'str=' . $max . '">[в конец]</a>';
        echo 'бла бла бла'; //нижнее оформление 
    }
}

Записи