Jörg Reinholz: Linkleiste für Pager

Beitrag lesen

Moin!

ganz Glücklich bin ich noch nicht, eigentlich wollte ich so eine Auflistung erreichen

Alternativ-Text

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