*hust* Ganz ehrlich? Das System sieht grässlich aus.
Ich habs jetzt folgendermaßen gemacht:
$blo = 9; // anzahl stets angezeigter seiten
$start = 0; // start-variable
$end = $blo; // end-variable
if(floor($s / $as) > $blo / 2) { // wenn aktuelle seite über der hälfte der anzahl angezeigter seiten liegt
$end = (floor($s / $as) + 1) + floor($blo / 2); // endwert erhöhen
}
if(floor($s / $as) + 1 >= $blo / 2) { // für die korrektur, dass der anfangswert dann auch nachzieht.
$start = (floor($s / $as)) - floor($blo / 2);
}
if($end > $seiten) { // wenn das errechnete ende über der maximal vorhandenen seitenzahl liegt.
$end = $seiten; // endwerte berechnen
$start = $end - $blo; // startwerte von endwert ableiten
}
for($i = $start;$i < $end;$i++) { // dazu brauch ich nix schreiben. ^^
if($i == floor($s / $as)) {
echo "<b>" . ($i + 1) . "</b> ";
}else{
echo "<a href=\"index.php?p=gl&s=" . $i . "\">" . ($i + 1) . "</a> ";
}
}
if(floor($s / $as) > $end) { // wenn aktuelle seite über letzter seite liegt.
echo "... <b>" . (floor($s / $as) + 1) . "</b> ";
}
floor($s / $as) ist die aktuelle seite. $s = der aktuelle SQL-Limit-Startwert. $as = die Anzahl der Einträge pro Seite.
Ergebnis: wie vorher erwähnt. ^^