Moin!
<<-| <- | 3 | -> |->>
Das mittlere Feld gibt uns die ID, welche aus der Datenbank gelesen wird.
Wenn man nun den Pfeil nach Rechts (->) klickt, dann soll die nächste ID
(aufsteigend) ausgelesen werden und in dem Mittleren Feld ausgegeben werden.
Hat man aber
den 2ten Pfeil nach Rechts (->>) geklickt, dann wird die letzte ID aus der
DB
ausgelesen. Genau das gleiche soll für die 2 anderen Pfeile die nach links
zeigen gelten.
Dein Hauptproblem ist folgendes: Die nächste ID nach 3 muß nicht 4 heißen, die vorhergehende ID muß nicht 2 heißen, die erste ID muß nicht 1 heißen - und die letzte ID kannst du logischerweise auch nicht bestimmen, sie ist aber ebenfalls garantiert nicht identisch mit "Zahl der Datensätze", sondern eher größer. Das gilt jedenfalls, wenn du die Datensatz-IDs "vernünftig" anlegst, nämlich sie einmal beim erstellen des Datensatzes vergibst und dann nie wieder änderst, bis der Datensatz gelöscht wird - und sie dann auch nicht neu vergibst.
Dein Problem läßt sich wohl nur mit mehreren Datenbankzugriffen lösen.
Die Problematik "Nächste/Vorhergehende ID" ist recht simpel mit nur einem Zugriff lösbar: Du selektierst einfach immer drei Datensätze aus deiner Sortierung, verwirfst außer der ID alles vom ersten und letzten Datensatz (die IDs sind die vom vorhergehenden und nächsten Datensatz) und gibst den mittleren Datensatz aus:
SELECT felder FROM tabelle ORDER BY id LIMIT 3,offset
Für Offset mußt du dir merken, welchen Datensatz gerade ausgelesen hast, und ihn bei "nächste ID" um eins erhöhen, bei "vorige ID" um eins erniedrigen. Startwert ist "-1" - was etwas zu Problemen führt, wenn du den ersten Datensatz, der keinen Vorgänger hat, auslesen willst.
Um festzustellen, welche ID die erste ist, und welche die letzte, benötigst du zwei weitere Zugriffe, wie Julian schon erwähnt hat.
Insgesamt sehe ich deine Vorgehensweise nicht unbedingt als ideal an. In Datenbanken gibt es eigentlich keinen "nächsten" oder "vorigen" Datensatz. Die Datenbank ist so gebaut, dass man schnell auf jeden beliebigen Datensatz zugreifen kann. Und es ist beim Bearbeiten von Datensätzen auch eher ungewöhnlich, wenn man jeden Datensatz einzeln durchklicken muß, nur um den zu finden, den man ändern möchte. Mach das mal bei 100.000 Datensätzen - da geht eher die Maustaste kaputt, außerdem dauert es viel zu lange.
Was du wirklich brauchst, ist ein System, das dem Benutzer schnell und zielgerichtet zum gewünschten Datensatz führt, indem eine effektive Suchfunktion eingebaut ist.
Und wenn du vom Listen-Ansatz nicht abkommen willst, dann benutze wirklich echte Listendarstellung mit mehreren Datensätzen auf einer Seite. Außerdem mußt du dir dann noch überlegen, nach welchem Feld die Datenbanktabelle sortiert werden soll - denn nur aufgrund der Sortierung gibt es ein sinnvolles "nächstes" und "voriges" Element. Und bedenke auch, dass der Benutzer die Sortierung vielleicht ändern möchte.
- Sven Rautenberg
Signatur oder nicht Signatur - das ist hier die Frage!