dedlfix: Seitenzahlen mit mysql Datensätzen

Beitrag lesen

Hi!

Übrigens: Eingangsparameterprüfungen solltest du auch nicht vergessen. $_GET[p] kann alles mögliche und unmögliche enthalten. Damit es im gültigen Wertebereich landet, kann man wiederum mit min/max arbeiten. Nebeneffakt ist, dass es nun auch garantiert eine Zahl ist, zur Not 0.

$p = max(0, min($pnb, $_GET['p'])); // 0 <= $_GET['p'] <= $pnb

Da du nicht darauf eingegangen bist, nehme ich mal an, dass du von 0 zu zählen beginnst, schon weil es einfacher zu rechnen ist.
Und: p soll ein String sein und keine Konstante, also notiere ihn lieber wie einen String in Anführungszeichen.

Ich habe es jetzt genauso gemacht wie du es gesagt hast.

Nö, nicht ganz.

$start = min(3, $pnb - $_GET[p]);

Damit rechnest du erst die Differenz zum rechten Rand aus. Der Korrekturwert für die linke Seite ergibt sich erst aus 3 minus der Differenz. Zusammen mit dem rechten Korrekturwert wäre das:

$korrektur_links = 3 - min(3, $pnb - $p);  
$korrektur_rechts = max(0, 3 - $p);

Die Korrekturwerte sind jeweils zu den 3 nach links und rechts dazuzurechnen. Dann erst hast du den Anfangs- und Endwert beim Blättern.

Nun kann es noch den Fall von weniger als 7 Seiten geben, bei dem die aktuelle sich so in einer mittleren Position befindet, dass inklusive der Korrkturwerte am Ende die Seiten von kleiner als 0 bis größer als $pnb gehen. Dieses Problem lässt sich lösen, indem du mit dem min/max-Trick den linken und rechten Rand wieder einfängst.

Lo!