постраничная навигация в скриптах на файлах

<?php
/*
*постраничная навигация в скриптах на файлах
*автор: nc_soft
*18.09.07
*/

/*сгенерируем массив (для гостевой этот массив может быть получен как
file('gb.dat') )
в данном случаи проэмулируем его массивом 1,2,3...100 */
$arr=range(1,100);

//всего сообщений
$all=count($arr);

//число сообщений на странице
$pnumber=5;

echo '<p>всего элементов: '.$all.'</p>';

//номер страницы
$page=(isset($_GET['page'])) ? (int)$_GET['page'] : 1;

//число страниц
$num_pages=ceil($all/$pnumber);

//начальная позиция
$start=$page*$pnumber-$pnumber;

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

if ($all)
{
    //элементы выводятся в обратном порядке!!
    for ($i=$all-$start-1; $i>=$all-$start-$pnumber; $i--)
    {
        if (!isset($arr[$i])) break;
        echo '<p>';
        echo $arr[$i];
        echo '</p>';
    }

    //навигация
    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>';
}
else 
{
    echo '<p>элементов нет</p>';
}

?>