Nachträgliche Nummerierung von MySQL-Daten

benurb

Mitglied
Hallo
Ich möchte eine Bildergalerie in PHP realisieren. Jetzt hab ich nur folgendes Denkproblem. Wenn ich für jedes Bild einen eigenen MySQL Datensatz machen (wo Kommentar usw. von mir rein kommt) dann gibt es ja das Problem, dass die IDs aufeinanderfolgen müssen, damit man ohne Unterbrechung zum nächsten Bild springen kann. Wenn ich jetzt aber ein Bild nachträglich lösche ist ja ein Sprung drin und ich kann nicht mehr von einem Bild zum nächsten Schalten. Wie kann ich das lösen? Kann man vielleicht bei den MySQL Daten die ID vernächlässigen und mit PHP eine fortlaufende Nummerierung erzeugen?

Danke im Voraus
Benni
 
Hallo,

ich würde zu Beginn alle Ids, die in der DB vorhanden sind, in ein Array speichern und dann über dieses Array laufen.

So bekommst du gültige Werte für das aktuelle, das vorherige und das nächste Bild.

Wenn du bei jedem Aufruf vorher das Array aktualisiert, kann sogar ein Bild gelöscht werden, während die Galerie betrachtet wird...

Gruß.
 
In dem Fall solltest du die Datensätze der ID nach sortieren und mit der LIMIT-Klausel arbeiten, um die ausgewählten Datensätze zu begrenzen:
Code:
SELECT
        …
  FROM
        …
  ORDER BY
        `id`
  LIMIT
        <Versatz>, <auszuwählende Datensatzanzahl>
 
Ich glaub ich hab immer noch nen Denkfehler. Wie komm ich dann zum nächsten bzw. vorherigen Bild. Könntest du mir da ne Beispielabfrage geben ;)
 
Angenommen, das 15. Bild wird gerade angezeigt („LIMIT 14, 1“), kann das vorherige mit „LIMIT 13, 1“ und das nächste mit „LIMIT 15, 1“ ausgewählt werden.
 
die werte (13,14,15) kannst du auch in variablen packen, dann hast du eine dynamische seite

also sieht die abfrage z.b. aus
SELECT * FROM bilder LIMIT $bildnr, 1

eins nach vorne:
vorher $bildnr--;

eins weiter
vorher $bildnr++;
 
ok das hab ich soweit verstanden, aber ich spreche ja die bilder mit den ids an. d.h. ich hab eine übersicht und wenn ich auf ein einzelnes bild klicke (zum vergrößern) dann übergebe ich die id und er holt sich auf der nächsten seite wieder die entsprechenden daten aus der db. jetzt ist aber doch die id nicht gleich dem Versatz bei LIMIT
Wie ist das zu lösen?
 
Angenommen die Id des aktuellen Bildes ist $id.

Id des nächsten Bild:
SQL:
SELECT `id` FROM `bilder` WHERE `id` > '$id' ORDER BY `id` LIMIT 1

Id des vorherigen Bildes:
SQL:
SELECT `id` FROM `bilder` WHERE `id` < '$id' ORDER BY `id` DESC LIMIT 1
 
Zuletzt bearbeitet von einem Moderator:

Neue Beiträge

Zurück