Linkleiste für Pager
bearbeitet von Jörg ReinholzMoin!
> 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
<?php
# Konfiguration mit Konstante
define ('JNNBO_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=\"Pager\">$i</button></a>";
} else {
$ar[] = "<button class=\"Pager\">$i</button>";
}
}
return $ar;
}
function Pager ($anzahlPages, $aktuellePage) {
## Erzeugt den Pager
$firstPage=0;
$lastPage=$anzahlPages;
## erster Fall: SHOW_PAGES <= $anzahlPages
if ( JNNBO_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 - JNNBO_SHOW_PAGES / 2 );
$max = floor ( $aktuellePage + JNNBO_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