1. Ile ogólnie jest elementów pobierasz po to, żeby wyświetlić odsyłacze do wszystkich podstron (ten fragment, który usunąłeś) i tylko do nich, oraz po to, żeby na ostatniej stronie zrobić ograniczenie (np, masz 15 elementów, wyświetlasz po 10, więc na drugiej stronie powinno być tylko 5, przy dobrze sformułowanym zapytaniu nie jest to konieczne).
<?php
$o=120; //liczba przedmiotow ogolnie
...
else
for($i=1;$i<=$is;$i++)
echo '<a href="index.php?p='.$i.'">['.$i.']'.'</a>'.' '; ?>
2. Ten skrypt, który wkleiłem służy przedstawieniu idei paginacji. Jeśli chcesz pracować na bazie danych a nie na tablicy najwygodniej jest wyliczyć min i max rekord do wyświetlenia na stronie. Już pokazuję.
<?php
/*
liczbę przedmiotów trzeba pobrać z bazy danych, nie jest to kosztowna operacja,
zamiast tworzyć zmienną można użyć define(), a jeśli nie będziesz niegdzie więcej
z tej liczby korzystał, to wrzuć wartość bezpośrednio do wyświetlania odnośników
stron
*/
$o=120;
/*
liczba przedmiotow na strone, tu też powinno być define()
*/
$ile=7;
/*
pobranie numeru strony
zabezpieczenie przed pustym, tekstowym i niedodatnim p
*/
$n=$_GET['p'];
if($n<1)
$n=1;
/*
obliczenie minimalnego i maksymalnego rekordu,
który ma być wyświetlony
(przy zalożeniu, że kolumna identyfikatorów rekordów
jest ciągiem liczb naturalnych),
tu podaję zmienne, ale najwygodniej wstawić do zapytania do bazy
*/
$max=$n*$ile;
$min=($n-1)*$ile+1;
/*
W tym miejscu wysyłasz zapytanie dla minimalnej i maksymalnej
wartości, zwróć uwagę na obsługę tego czy min i max nie przekraczają
ogólnej ilości rekordów.
Tutaj też wyświetlasz rekordy.
*/
/*
Wyświetlenie odnośników do podstron paginacji
*/
$is=(int
)(ceil($o/$ile)); if(!$is)
else
for($i=1;$i<=$is;$i++)
echo '<a href="index.php?p='.$i.'">['.$i.']'.'</a>'.' '; ?>
Edycja: teraz zwróciłem uwagę, że nie chcesz mieć odnośników do podstron. W takim razie ilość rekordów w tabeli nie jest potrzebna, a ten fragment, który wyrzuciłeś też.