[MySQL] 'Nächste' Zeile lesen

SirGimli

Grünschnabel
Folgende Ausgangssituation:
Ich habe ein Tabelle in der ich Bilder speichere, die vereinfacht so aussieht:
ID INT NOT NULL auto_increment,
filepath VARCHAR NOT NULL,
filename VARCHAR NOT NULL


Dann habe ich zwei PHP-Dateien:
album.php - Thumbnailübersicht
pic.php - Ein Bild in Originalgröße

Der Benutzer soll die Bilder entweder nach ID, filename/filepath oder filepath/filename sortieren können.

Mein Problem ist, dass ich für die Navigation in pic.php (nächstes/letztes Bild) immer die nächste und vorherige ID in der aktuellen Sortierung brauche.
Bei der ID-Sortierung ist das noch einfach, weil ich so vorgehen kan:
WHERE ID > {aktuelleID} LIMIT 1
WHERE ID < {aktuelleID} LIMIT 1

Aber bei den Dateinamen bekomme ich Probleme da filepath und filename nicht einzigartig sind. So können in zehn Ordnern jeweils zehn Bilder mit den Namen 0-9.jpg liegen.

Ich grübele schon den ganzen Tag und bekomme es nich hin (liegt vermutlich an der Hitze unterm Dach).
Aber wie das so ist, je länger die Lösung auf sich warten lässt, desto weniger kommt man drauf.
Ich hoffe es gibt jemanden der durch meinen Text durchsteigt und mir helfen kann.

Auf jeden Fall schon mal danke an alle die bis hierher gekommen sind ;)
 
Sorry wenn mein Text etwas wirr is.
Bei der ID is mir klar wie mans macht, aber wenn ich
ORDER BY filename ASC, filepath ASC
benutze und nicht
ORDER BY ID ASC
sind die IDs dureinander und ich kann nicht ID+1 benutzen.
Ich brauche eine Abfrage die mir die ID des Bildes holt das mit
ORDER BY filename ASC, filepath ASC
als nächstes/vorheriges kommt.
 
Erstmal grundsätzlich...id+1 und id-1 ist auch keine wirklich optimale lösung. Weil was passiert, wenn zwischendurch mal ein Eintrag aus der Datenbank gelöscht wird? Dann sind die ids nicht mehr lückenlos durchnummeriert...und dann gibts Probleme!

Ich nehme an, dass Du folgendes meinst. Wenn Du auf der Seite mit einem Bild in Originalgrösse bist, dann willst Du noch ein Vorwärts- und einen Rückwärtslink haben.

Mein Vorschlag ist, in dem Moment wo Du die Id für ein Bild in Originalgrösse von der Thumbnailseite übergibst, musst Du auch die Ids für vor und zurück mit übergeben. Oder aber Du übergibst die Sortierparameter mit an die Seite und musst eben nochmal neu abfragen, um an die Bildids zu kommen.

Vielleicht ist es günstig, wenn Du eine extra Datenbankabfrage machst, wo Du nur die ids in der richtigen Reihenfolge abfragst. Die speicherst Du dann alle in einem Array. Und wenn Du deine aktuelle Bildid hast, dann kommst Du auch leicht an den Arrayeintrag davor und dahinter.

So ungefähr mein Prinzip. Vielleicht denke ich grad auch n bisschen quer. Ich hoffe, Du kannst meine Gedanken ein wenig nachvollziehen. Obs die optimale Lösung ist...keine Ahnung. Aber das lesen wir ja dann hoffentlich hier in den Beiträgen und Meinungen anderer :)
 
THX für Deine Antwort
Ich hab mittlerweile ne Lösung für mein Problem. Wie das so ist muss man manchmal ne Nacht drüber schlafen und dann packt man sich an den Kopf weil es einem nicht eingefallen ist. Saß wohl gestern einfach etwas zu lange davor.
 
Zurück