Chris: SQL abfrage über mehrere Seiten

Hallo,

ich arbeite momentan einer einer SQL abfrage, weis aber nicht so recht weiter...

momentan bekomme ich alle datensätze auf einer seite ausgegeben, und ich würde es gerne auf 100 einträge pro seite begränzen...

weis da jemand rat für mich? danke im vorraus...

  1. momentan bekomme ich alle datensätze auf einer seite ausgegeben, und ich würde es gerne auf 100 einträge pro seite begränzen...

    meine glaskugel sagt, du verwendest mysql - sie sagt auch du suchst nach LIMIT

  2. Hallo,

    ich arbeite momentan einer einer SQL abfrage, weis aber nicht so recht weiter...

    momentan bekomme ich alle datensätze auf einer seite ausgegeben, und ich würde es gerne auf 100 einträge pro seite begränzen...

    Deine DB-Engine muss es einmal unterstützen, dass ein Ergebnis "fensterweise" ausgegeben werden kann, bei mysql geht das mit limit.

    Wenn das gegeben ist, ermittelst Du zuerst die Gesamtanzahl der Records und teilst Die dann auf deinen Pager, den Du noch bauen musst auf. Z.B. hast Du 225 Records im Ergebnis. Aufgeteilt ergeben sich 3 Seiten:
    1-100
    101-200
    201-225

    Für die erste Seite baust Du schon die limitKlause ein, und zeigst "101-200" sowie "201-225" als Links mit Parametern für weitere limitKlausen, die bei einem Klick dauf den Link die Abfrage "seitenweise" aus der DB holen und darstellen.

    Das Ganze ist nicht ganz trivial, wenn viele (CGI)Parameter im Spiel sind, geht leicht die Übersicht verloren. Die Parameter könnten so aussehen:

    ?pager=1-100
    ?pager=101-200
    ?pager=201-225

    Oder besser, weil leichter zu parsen:
    ?pager=1&start=101&stop=200

    Stelle das Ganze auf eine solide Kontrollstruktur, damit jeder Zustand Deines CGIs definiert ist und denke daran, dass GET-Parameter leicht zu manipulieren sind. Z.B. darf es nicht passieren, dass, wenn ein Depp eingibt:

    ?pager=1&start=0&stop=1000000000000

    mehr als 100 Einträge requestet werden.

    Viele Grüße,
    Hotte