Moin!
ganz Glücklich bin ich noch nicht, eigentlich wollte ich so eine Auflistung erreichen
Gehe mal davon aus, hat wieder etwas mit Mathematik aus der 3. Klasse zu tun?
Aber ja doch!
<?php
# Konfiguration mit Konstante
define ('FTX_SHOW_PAGES', 5);
### dein Skript
## Test:
echo implode( "<br>\n", Pager(3,2) );
function mkButtons ($min, $max, $aktuellePage) {
## Erzeugt die eigentlichen Button, wird von
## Funktion Pager aufgerufen.
$ar=array();
for ($i=$min; $i<=$max; $i++) {
# Link oder nicht?
if ( $i != $aktuellePage ) {
$ar[] = "<a href=\"?seite=$i\"><button class=\"FTX_Pager\">$i</button></a>";
} else {
$ar[] = "<button class=\"FTX_Pager\">$i</button>";
}
}
return $ar;
}
function Pager ($anzahlPages, $aktuellePage) {
## Erzeugt den Pager
$firstPage=0;
$lastPage=$anzahlPages;
## erster Fall: SHOW_PAGES <= $anzahlPages
if ( FTX_SHOW_PAGES >= $anzahlPages ) {
return mkButtons( 1, $anzahlPages, $aktuellePage );
}
## Zweiter Fall, genug Seiten:
# Ermittellen der Mitte
# Wenn gerade Zahl, damm links der Mitte:
$min = ceil( $aktuellePage - FTX_SHOW_PAGES / 2 );
$max = floor ( $aktuellePage + FTX_SHOW_PAGES / 2 );
# Es kann sein, der Ausschnitt muss gerückt werden, wenn die
# aktuelle Seite nahe am Anfang oder Ende ist:
while ( $min < 1 ) {
$min ++;
$max ++;
}
while ( $max > $anzahlPages ) {
$min --;
$max --;
}
#die ("Min: $min Max: $max");
return mkButtons( $min, $max, $aktuellePage );
}
Jörg Reinholz