Sprawdź nieujemność i czy jest liczbą, a potem puść moim skryptem autorskim

Mój gotowiec robi pełnego paginatora, który na bank nie wyjedzie poza stronę, bo w przypadku 40 podstron nie zrobi 40 linków

$per_page = 10;//tu ilość rekordów na stronę
$ile = 120; //tu ilość rekordów wszystkich, może być count z bazy
$pages = ceil($ile/$per_page); if($pages > 1) {
$where = 'nazwa_strony'; //tu wpisz jaka ma być ta część niezmienna w linku
}
if($page >=0 AND $page < $pages) {
if($page > 0) {
echo '<a href="'.$where.'.html">Pierwsza</a> <a href="'.$where.','.($page-1).'.html">Poprzednia</a>';
}
for($i=$page-3; $i<$page+4; $i++) {
if($i<0 OR $i>=$pages)
continue;
elseif($i == $page)
echo '<a class="chosen" href="'.$where.','.$i.'.html">'.($i+1).'</a>'; else
echo '<a href="'.$where.','.$i.'.html">'.($i+1).'</a>'; }
if($page < $pages-1) {
echo '<a href="'.$where.','.($page+1).'.html">Następna</a> <a href="'.$where.','.($pages-1).'.html">Ostatnia</a>';
}
}
}
Dlaczego tak a nie inaczej? Bo w ten sposób łatwo się generuje linki SEO w moim wypadku

$where = 'artykuły-o-programowaniu'
a skrypt dokłada resztę i ostatecznie moge uzyskać link
artykuły-o-programowaniu,4.html
Przy czym manipulując wartością startową i warunkiem wykonania w pętli:
for($i=$page-3; $i<$page+4; $i++)
ustalam sobie "szerokość" ewentualnego paginowania od mojej strony. W tym wypadku będę miał widoczne +/- 3 strony po obu od aktualnej, oprócz "Następna", "Poprzednia". Do tego od 2 podstrony mam link "Pierwsza", a do przedostatniej strony włącznie mam widoczny link "Ostatnia"

By było weselej całość sobie styluję i ustawiam na aktualnej stronie klasę CSS chosen i całość bloczku ładnie do div o id "pagin" który sobie styluję wedle woli. Po prostu gotowiec na funkcję Paginator. Wystarczy jako parametr podać string z linkiem, liczbę wszystkich rekordów, liczbę rekordów na stronie i otrzymujemy w wynik string jeśli wrzucimy to do zmiennej a nie jako echo. Do tego skrypt nie wyświetla paginatora niepotrzebnie, gdyż dla 1 strony wyników nie uruchamia się nawet.
W efekcie będąc na stronie 4 spośród 5 możliwych paginator wygląda tak (zależnie od stylu oczywiście jeszcze

):
Pierwsza Poprzednia 1 2 3
4 5 Następna Ostatnia
Na ostatniej tak:
Pierwsza Poprzednia 2 3 4
5Na pierwszej tak:
1 2 3 4 Następna Ostatnia
Czyli idealnie tak, jak paginator ma się zachowywać

Nie generuje głupot i stron ujemnych a linki są poprawne

Dostosuj go sobie do własnych potrzeb zmieniając tylko w zasadzie linki w znacznikach A i będzie Ci hulało jak ta lala. Nie będziesz się musiał niczym przejmować poza wywołaniem mysql z parametrami $page i $per_page, czyli
mysql_query('SELECT [...] LIMIT '.( $page * $per_page).', '.$per_page );
Weź i sobie przetestuj

Tu masz screen z poglądowego widoku strona 4/5
