Kiedyś zmontowałem taką klasę, która tworzy taką paginację, o którą dokładnie ci chodzi. Właściwie jest to moja pierwsza klasa. Pamiętam że trochę wzorowałem się na klasie @nospora. Kod możesz znaleźć pod adresem:
https://gist.github.com/1926421Używanie:
<?php
require '/path/to/Pagination.class.php';
$tablica = glob ("*.*g"); $razem = count($tablica1);
$pag = new Pagination();
$pag->setTotalCount(count($tablica)); $pag->setCurrentPage(empty($_GET['page']) ? 0
: $_GET['page']);
for($i = $pag->indexStart(); $i <= $pag->indexEnd(); $i++)
{
echo $tablica[$i].'<br>'.PHP_EOL
; }
Samo utworzy ci linki, możesz zmienić ilość "stron" pomiędzy kropkami w taki sposób:
$pag->setRange(5);
Domyślnie jest to 3. Możesz zmienić ilość wyświetlanych wierszy, domyślnie 40, a możesz to zrobić tak:
$pag->setPerPage(10);
Możesz zmyślnie pobawić się linkami, np w twoim przypadku zrobić to "start":
$pag->setUrl('stronicowanie.php?start=#PAGE#');
Dodatkowo masz podane przykładowe style css, dzięki czemu możesz je sobie gdzieś do swoich styli dorzucić i zmienić według swoich potrzeb. Możliwości jest znacznie więcej, podałem tylko ich część. Wszystkie metody zwracają obiekt, dzięki czemu można się bawić w method chining, jeżeli ktoś tak woli:
$pag = new Pagination();
$pag->setTotalCount(count($tablica))->setCurrentPage(empty($_GET['page']) ? 0
: $_GET['page']);
Ważne abyś sobie w tej klasie usunął lub wymienił jedną linijkę:
throw
new NotFoundHttpException
(sprintf('Wartość "%s" jest większa od całkowitej liczby stron, lub jest równa zeru.', $val));
Jest to dokładnie linia 61. Możesz cały warunek w metodzie setCurrentPage, wymienić na taki:
if($val === 0 || $val > $this->totalPages())
{
$this->currentPage = 0;
} else
{
$this->currentPage = $val;
}
I cała metoda wyglądała by tak:
public function setCurrentPage($val)
{
$val = (int) $val;
if($val === 0 || $val > $this->totalPages())
{
$this->currentPage = 0;
} else
{
$this->currentPage = $val;
}
return $this;
}
jeżeli nie odpowiada ci używanie klasy, ale chciałbyś nadal mieć tą paginacje oddzieloną "kropkami", to możesz podpatrzeć w metodzie getHtml, jak ja to robię, i podobnie wykonać u siebie.

EDIT: zapomniałem wspomnieć, przypisanie danych musi odbywać się w kolejności: najpierw ustawiasz ile masz wszystkich "rekordów", następnie ustawiasz na jakiej jesteś stronie.