Mailinglisten-Archive |
Hallo Matthias, Matthias Stierli wrote: > Aber trotzdem noch die Frage aus Interesse, wie würde denn eine > SQL-Abfrage aussehen, bei welcher ich als Ergebnis den vorherigen und > nachfolgenden Datensatz des von mir ausgewählten Satzes bekäme, > natürlich inkl. den Bedingungen, oder müsste ich da das gesamte > Ergebnis nachher mit PHP durchsuchen?? Wahrscheinlich gäbe es ja > keine direkte SQL-Abfrage.. Die Bedingung (WHERE) sowie die Sortierreihenfolge (ORDER) sollte beim Blättern konstant bleiben. Was du mit jeder neuen Query übergibst, ist Position und Offset (LIMIT) des aktuellen Ausschnittes. z.B. 30 Datensätze pro Page, 100 Datensätze gesamt, aktuelle Seite 2 d.h. der erste Datensatz der aktuellen Page 2 hat die Position 30, offset addieren für die Position des ersten Datensatzes der nächsten Page, offset subtrahieren für Position des ersten Datensatzes der vorigen Page, ggf noch gegen die Grenzen der Gesamtmenge prüfen, weil die Position nicht kleiner 0 und nicht größer als die Gesamtmenge werden darf. Die Query für die Page 3 könnte also folgendermaßen aussehen: SELECT fields FROM table WHERE condition=0 ORDER BY fields LIMIT 60,30 // hole 30 Datensätze ab Position 60 der Ergebnismenge Eine kleine Hürde bei der Verarbeitung der Position ist die Tatsache, dass man gern mit 1 anfängt zu zählen, in MySQL das LIMIT aber mit 0 beginnt. Mit diesem System kannst du aus der aktuellen Position heraus und anhand des Offset - die Anzahl der Seiten bestimmen, - die aktuelle Seite, - die Positionen jeder einzelnen Seite direkt, - die Position der vorigen und der nächsten Seite - die Positionen der ersten und letzten Seite Bau dir am besten eine function oder class, welche genau diese Berechnungen erledigt. Dann kannst du mit den Informationen aus der Klasse deine Seiten-Blättern-Navigation füttern. regards, Ringo
php::bar PHP Wiki - Listenarchive