dedlfix: brauche Hilfe bei Aufzählung von Seitenlinks

Beitrag lesen

Hi!

ich krieg das selber aber nicht hin

Dann fang doch wenigstens einmal damit an, zeig uns deine Versuche, sag uns deine konkreten Stellen mit Verständnisproblemen. Für den Anfang nehmen wir mal an, du hast zwischen 31 und 35 Datensätze, also 7 Seiten.

1  2  3  4  5  6  7

Das einfachste Beispiel fängt in der Mitte an, also bei 4.

1  2  3 _4_ 5  6  7

Angezeigt werden sollen Seiten 2..6, also ist 2 der Wert für das Delta.

1 .2..3._4_.5..6. 7

Der untere Grenzwert berechnet sich nun aus 4 - Delta (=2) und der obere aus 4 + Delta (=6). Also läuft die Seitenlinksgenerierschleife von jeweils inklusive 2 bis 6.

Die Fälle 3 und 5 müssen wir nicht weiter betrachten, die sind analog zu 4. Nehmen wir mal Seite 2.

.1._2_.3..4. 5  6  7

Mit der bisherigen Rechnung kommt der untere Grenzwert auf den Wert 0, was aber kleiner als 1 ist und somit ungültig. Im einfachsten Fall wird der untere Grenzwert auf 1 gesetzt. Der obere Grenzwert hat kein Problem. Aber: nun werden nicht fünf Seiten angezeigt sondern nur vier. Und - das hast du wieder nicht beantwortet - ist deine Designentscheidung gefordert. In dem Fall könnte man stattdessen die Seiten 1..5 anzeigen, also die eine vom unteren Grenzwert "abgeschnittene" Seite dem oberen Grenzwert zuschlagen.

-0-.1._2_.3..4.+5+ 6  7

Analog bei Seite 1.

-1--0-.1._2_.3.+4++5+ 6  7

Bei Seite 6 und 7 ist das ganz ähnlich.

Und nun noch der Fall, dass weniger als 25 Datensätze angezeigt werden sollen, also weniger als fünf Seiten zu sehen sind. Das ist dann der Fall, wenn oberer und unterer Grenzwert aus dem Rahmen fallen. Dann muss man sie einfach nur auf die Grenzen zurückholen und nicht noch am anderen Ende das überzählige Delta draufschlagen (falls das bei mehr als fünf Seiten gemacht werden soll).

Man kann diesen Sonderfall auch anders angehen, indem man ihn zunächst ignoriert. Man errechnet im ersten Schritt den oberen und untereren Grenzwert. Dann ermittle man für jeweils oben und unten die Differenz zum jeweils zulässigen Minimal-/Maximalwert und schlage sie am anderen Ende drauf. Zum Schluss holt man gegebenenfalls die Grenzwerte in ihre Grenzen zurück.

Lo!