Funktion erweitern. Blättern Limitieren!

Hannibal

Erfahrenes Mitglied
Ich habe bei mir nun die Blätter Funktion aus dem Tutorial eingebunden und das geht damit, doch sind mir dies zuviele Seiten.

Ich würde diese Funktion gerne erweitern oder austauschen. Und zwar das die Funktion die Seiten so aufzählen könnte:

« 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 .... 37 »

Anstelle von dieser Methode, welche mir die Tabellen verschiebt:
« 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 »

Ich rede von dieser Funktion:

PHP:
function createPages($input = 0, $perpage = 25) {
    global $page, $_SERVER;
    if (empty($input))
        die("createPages(<b>\$input = $input</b>, \$perpage = $perpage"); // Sollte kein gesamtwert übergeben werden bricht die Funktion mit einer fehlermeldung ab.
    if ($input <= $perpage) // Sollten es zu wenig Einträge für mehrere Seiten sein, gibts halt nur eine.
        return "« <b>1</b> »"; // HTML-Rückgabe
    if (!$page || $page < 1) {
        $page = 1; // Sollte man an der URL rumspielen oder sollte $page noch nicht gesetzt sein wir $page auf 1 gesetzt.
    }
    $pages = ceil($input / $perpage); // Die Anzahl der Seiten errechnet sich aus dem aufgerundeten Ergebnis von dem Bruch [ANZAHL EINTRÄGE] / [PRO SEITE]
    $html = ""; // Der Rückgabestring wird geleert.
    if ($page > 1) { // Sollte die aktuell angewählte Seite größer als Eins sein kann man zurück Blättern, der linke Pfeil wird aktiviert. Wenn nicht wird er deaktiviert.
        $html .= "<a href=\"".$_SERVER["PHP_SELF"]."?page=".($page-1)."&kategorie=".$_GET[kategorie]."\">«</a> ";
    } else {
        $html .= "« ";
    }
    for($i = 1; $i <= $pages; $i++) { // Solange $i kleiner oder gleich der Anzahl der Seiten ist wird eine Seitenzahl hinzugefügt.
        if ($i == $page) { // Ist man auf der aktuellen Seite wird der Link deaktiviert und die Zahl bold gedruck.
            $html .= "<b>".$i."</b> ";
        } else {
            $html .= "<a href=\"".$_SERVER["PHP_SELF"]."?page=".$i."&kategorie=".$_GET[kategorie]."\">".$i."</a> ";
        }
    }
    if ($page <= $pages-1) { // Ist die aktuelle Seite kleiner oder gleich der gesamtseiten - 1?
        $html .= "<a href=\"".$_SERVER["PHP_SELF"]."?page=".($page+1)."&kategorie=".$_GET[kategorie]."\">»</a> "; // Ja, "Vorwärtsblätterlink" erstellen.
    } else {
        $html .= "» "; // Nein
    }
    return $html; // Den String zurückgeben.
}

Gruss Hannibal
 
du könntest es aufspalten

for(i=1; i<=10;i++) und dann mach das

for(i=11; i<=$pages-10;i++) schreib mir bitte Punkte

for(i=$pages-9; i<=$pages; i++) mach wieder normal weiter


Ergebnis: Er zeigt die ersten und letzten 10 an, für die anderen macht er Punkte
 
Also ich habe mir übergangsweise mal einen Umbruch bei 30 Seiten gemacht, so verschiebt die Funktion jedenfalls nicht mein Design.

Danke erstmals
 
Zuletzt bearbeitet:
Original geschrieben von Hannibal
Hmm ich glaub ich mach da Grundsätzlich etwas falsch.
Das glaub ich auch: Welcher User klickt sich denn durch 37! Seiten? ;)

Was hältst Du von der Lösung?
PHP:
    for($i = 1; $i <= $pages; $i++) { // Solange $i kleiner oder gleich der Anzahl der Seiten ist wird eine Seitenzahl hinzugefügt.
        if ($i == $page) { // Ist man auf der aktuellen Seite wird der Link deaktiviert und die Zahl bold gedruck.
            $html .= "<b>".$i."</b> ";
        } elseif(floor($i/10) == floor(($page)/10)) {
            $html .= "<a href=\"".$_SERVER["PHP_SELF"]."?page=".$i."&kategorie=".$_GET[kategorie]."\">".$i."</a> ";
        } elseif($i%10 == 0 || $i==1) {
            $html .= "<a href=\"".$_SERVER["PHP_SELF"]."?page=".$i."&kategorie=".$_GET[kategorie]."\">".$i."</a>..  ";
        }
    }
 
Zurück