Willkommen in der Webstatt Zum Webstatt Blog und Stories
Christian am 04.09.06 18:15

Mir is kein besserer Titel eingefallen :(

Also die Sache: Ich habe eine Bildergalerie, die einfach die Ordner und die darin befindlichen Bilder ausliest. Wenn man auf ein Bild klickt, kommt man auf eine Detail/Beschreibungsseite (z.b. hier). Die Beschreibungen und Kommentare speicher ich in ner Datenbank.
Was ich jetzt will, dass man in der Detail/Beschreibungsseite die Möglichkeit hat, das vorherige bzw vorrangende Bild anzeigen zu lassen.

Wenn jemand eine konkrete Idee oder Anregungen hat, raus damit :)

netcup.de Warum gibt es hier Werbung?
Neals am 04.09.06 18:26

Naja, verteile ID's an die Bilder und dann ID++ oder ID-- und per GET oder POST übertregen... so hab ichs gemacht.

Michael Michael am 04.09.06 18:48

Genau. Aller Wahrscheinlichkeit nach haben die Bilder in der Datenbank ja schon eine ID. Oder speicherst du die Kommentare über den Dateinamen?

Christian am 04.09.06 21:17

Hm so ist es, ich speichere die Kommentare über den Dateinamen.
Die Bilder tauchen erst in der DB auf, wenn ein Kommentar zu Ihnen geschrieben wird, und dann wird eine ID vergeben, die richtet sich nach der reihenfolge der Kommentare und nicht nach dem erscheinen in der galerie

Michael Michael am 04.09.06 21:22

Dann mache doch enfach eine zuätzliche Tabelle mit 2 Feldern

DATEINAME VARCHAR(255) PRIMARY KEY
BILD_POSITION INT

Und dann über die BILD_POSITION auf den Dateinamen davor/danach zuzugreifen

Christian am 05.09.06 07:43

wenn du mir jetzt noch sagen könntest wie ich dann die bilder eines ordner da rein bekomme (kenne mich leider mit diesen sachen noch sehr wenig aus :()

wie ist es eigentlich wenn ich ein bild lösche, gibt es da was komfortableres, als das bild und dessen bild_position von hand zu löschen?

danke für eure mühen!

Michael Michael am 05.09.06 12:52

Du könntest den Bildern auch einheitliche namen geben, beispielsweise geburtstag1,jpg usw dann könntest du aus dem Dateinamen das nächste/vorherige Bild ermitteln.

Zu der Datenbanklösung:
Die Bilder müsstest du natürlich einlesen, beispielsweise mit [dok]read_dir[/dok]

Jaein, also beim Eintrag den dazugehörigen Datenbankeintrag ebenfalls zu löschen ist eigentlich sehr sinnvoll. Alternativ kannst du ja auch jedes Mal abfragen ob das Bild existiert. Wenn ja zeigst du es an wenn nein löschst du den Eintrag und probierst es mit der wiederrum nächst-größeren position

Christian am 06.09.06 17:35

hm vielen dank soweit

Quote
Du könntest den Bildern auch einheitliche namen geben, beispielsweise geburtstag1,jpg usw dann könntest du aus dem Dateinamen das nächste/vorherige Bild ermitteln.

So hab ich das eigentlich schon gemacht, allerdings wieder das problem, wenn ein bild gelöscht wird...

Michael Michael am 06.09.06 17:45

nö gar nicht, Nehmen wir an $i sei die ID und alle Bilder heissen "bild_ID.jpg"
Dann kannst du einfach in einer Schleife solange hochzählen, bis das nächste Bild gefunden wird

++$i;
while(!file_exists("bild_$i.jpg")) {
++$i;
}

Das gibt bei dem letzten Bild in einer Richtung zu einer Endlosschleife. Dies kann man aber ganz simpel pragmatisch lösen, indem man einen "Maximalabstand" definiert. Also die Differenz zweier IDs darf maximal 20 sein.

$j=0;
++$i;
while((!file_exists("bild_$i.jpg")) && ($j<20)) {
++$i;
++$j;
}

Michael

Creative Commons Lizenzvertrag
Alle Inhalte des Webstatt-Archivs stehen unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.

Impressum & Kontakt