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

<?php
/*постраничная навигация
*автор: nc_soft
*25.08.07
*/

/*предположим, что у нас есть следующие данные:
$page=номер страницы
$all=общее количество выводимых единиц*/

$all=50; //для примера

//определяем номер страницы (если не задано, то естественно 1)
$page=(isset($_GET['page'])) ? (int)$_GET['page'] : 1;

//высчитываем общее число страниц (пусть разбивка по 5 элементов на страницу)
$num_pages=ceil($all/5);

//высчитываем с какой позиции надо выводить данные
$start=$page*5-5;

//обработка "дурацких" номеров страниц
if ($page > $num_pages || $page < 1)
{
    $page=1;
    $start=0;
}

//печатаем
echo '<p>';

for($pr = '', $i =1; $i <= $num_pages; $i++)
{
    echo $pr=(($i == 1 || $i == $num_pages || abs($i-$page) < 2) ? ($i == $page ? " [$i] " : ' <a href="'.$_SERVER['SCRIPT_NAME'].'?page='.$i.'">'.$i.'</a> ') : (($pr == ' ... ' || $pr == '')? '' : ' ... '));
}
echo '</p>';

//вот такая вот жесть :)

?>