Jeena Paradies: MySQL Bildergalerie

Hallo alle,

Ich versuche erst einmal zu beschreiben was ich vorhabe.

Ich will für meine Band eine Bildergallerie machen die dann die Jungs selber updaten können. Auch nachträgliche änderungen und das Löschen von Bildern sollen möglich sein.

Die Bilder sind in verschiedene Bilderserien aufgeteilt wie 'Auftritt in Coburg', 'Aufnahmen zur Split' usw.

Die Besucher sollen erst einmal wie auf http://www.alistapart.com/articles/imagegallery/ eine Liste mit Links haben und dann werden die Bilder per JS nachgeladen. Die Links beschreiben schon mal was auf dem Bild zu sehen sein wird. Im title Attribut ist dann noch eine längere Beschreibung dabei, die dann auch oberhalb des Bildes zu sehen sein wird wenn man JS an hat. Wenn nicht dann wird einfach nur das Bild angezeigt. Die Listen haben dann eine Überschrift die die Serie beschreibt.

Es soll aber auch eine Thumbnail Anzeige geben die man alternativ dazu auswählen kann. Wenn man dann auf die Thumbnails drückt soll man in eine Art Galery kommen bei der Jedes Bild auf einer eigenen Seite angezeigt wird. Dort soll es auch einen vorwerts und rückwerts Button in form von Thumbnails geben. Natürlich soll dann da auch die Langbeschreibung zu sehen sein. Auch diese Sollen dann die gleichen überschriften haben.

Ich will die Bildbeschreibungen in einer DB speichern. Die uniquen ids sind dann gleichzeitig die Namen der Bilder + '.jpg'. Ich sorge dafür dass die Bilder nicht zu groß sind und auch nur jpg hochgeladen werden kann. Außerdem mache ich gleich automatisch Thumbnails und speichere sie mit dem gleichen Namen in einem anderen Verzeichniss.

Die Galery ist mein Problem. Wie stelle ich es an, dass man wenn man auf ein Thumbnail drückt und das Bild in der Galery erscheint ich das nächste und vorherige Bild herausfinden kann. Vor allem wenn sie dann noch am anfang oder ende einer Serie sind.

Ich mache mir schon den ganzen Tag einen Kopf wie und was ich in der DB speichern soll außer ID, Langbeschreibung, Kurzbeschreibung, (zugehörige) Serie um das nachher so realisieren zu können wie ich mir das vorstelle aber irgendwie ist das wohl noch zu kompliziert für mich.

Ich weiß nicht was ich da abfragen soll wenn mir der Benutzer sagt: "Das Bild will ich haben". Wie kriege ich raus welches vorher ist und welches nachher?

Grüße
Jeena Paradies

--
Bambergs Fasching - nur ein großer (Werbe-)Flop?
http://jeenaparadies.de/artikel/fasching/
Jeenas Bannertauschportal; selbstgemacht ;-)
http://jeenasbannerbude.de
  1. Hallo Jeena,

    ... vieles, wozu ich mir noch keine Gedanken gemacht habe:

    Die Galery ist mein Problem. Wie stelle ich es an, dass man wenn man auf ein Thumbnail drückt und das Bild in der Galery erscheint ich das nächste und vorherige Bild herausfinden kann. Vor allem wenn sie dann noch am anfang oder ende einer Serie sind.

    Ich mache mir schon den ganzen Tag einen Kopf wie und was ich in der DB speichern soll außer ID, Langbeschreibung, Kurzbeschreibung, (zugehörige) Serie um das nachher so realisieren zu können wie ich mir das vorstelle aber irgendwie ist das wohl noch zu kompliziert für mich.

    Zwei weitere Spalten:
    vorgaenger
    nachfolger

    d.h. mit einer doppelt verketteten Liste

    Jedes Bild innerhalb einer Serie hat einen eindeutigen vorgaenger, als auch einen eindeutigen Nachfolger. Ist es das erste Bild der Serie, trägst Du bei vorgaenger NULL ein, ist es das letzte Bild, so steht in nachfolger NULL.

    Natürlich musst Du das Problem lösen, an welcher Stelle innerhalb einer Serie ein Bild eingefügt wird. D.h. zuerst ist die Serie auszuwählen, anschließend die Position innerhalb der Serie, z.B.

    • am Anfang
    • nach Bild "so und so"

    Anschliessend kannst Du so vorgehen:
    Wenn Bild am Anfang
        Setze vorgaenger von erstem Bild auf neues Bild
        Setze nachfolger von neuem Bild auf erstes Bild
        Setze vorgaenger von neuem Bild auf NULL
    Sonst
        Merke nachfolger von Bild "so und so" in merker
        Setze nachfolger von Bild "so und so" auf neues Bild
        Setze vorgaenger von neuem Bild auf Bild "so und so"
        Setze nachfolger von neuem Bild auf merker
        Wenn merker nicht NULL
            Setze vorgaenger von merker auf neues Bild
        Ende Wenn
    Ende Wenn

    Ich weiß nicht was ich da abfragen soll wenn mir der Benutzer sagt: "Das Bild will ich haben". Wie kriege ich raus welches vorher ist und welches nachher?

    Über die Einträge in vorgaenger und nachfolger:
       vorher:  Gib mir das Bild mit der ID in vorgaenger
       nachher: Gib mir das Bild mit der ID in nachfolger

    Freundliche Grüsse,

    Vinzenz

    1. Hallo Vinzenz,

      Vielen Dank dir erst mal, da muss ich mich jetzt erst einmal durchbeißen. Ich dachte nicht dass es so kompliziert wäre, aber das kriege ich jetzt hoffentlich irgendwie gebacken. Wenn nicht dann frage ich noch einmal nach. Danke!

      Grüße
      Jeena Paradies

      --
      Bambergs Fasching - nur ein großer (Werbe-)Flop?
      http://jeenaparadies.de/artikel/fasching/
      Jeenas Bannertauschportal; selbstgemacht ;-)
      http://jeenasbannerbude.de
    2. Hallo Vinzenz,

      Jedes Bild innerhalb einer Serie hat einen eindeutigen vorgaenger, als auch einen eindeutigen Nachfolger. Ist es das erste Bild der Serie, trägst Du bei vorgaenger NULL ein, ist es das letzte Bild, so steht in nachfolger NULL.

      Ein Problem bleibt aber noch und zwar das wenn ich am Ende einer Serie angelangt bin will ich ja einfach zur nächsten Serie gelangen ohne erst zum Index gehen zu müssen. Muss ich dann für die Serien noch mal extra zwei Felder machen? Sonst weiß ich ja nicht welche die nächste bzw vorherige Serie ist.

      Grüße
      Jeena Paradies

      --
      Bambergs Fasching - nur ein großer (Werbe-)Flop?
      http://jeenaparadies.de/artikel/fasching/
      Jeenas Bannertauschportal; selbstgemacht ;-)
      http://jeenasbannerbude.de
      1. Hallo Jeena Paradies

        Hallo Vinzenz,

        Ein Problem bleibt aber noch und zwar das wenn ich am Ende einer Serie angelangt bin will ich ja einfach zur nächsten Serie gelangen ohne erst zum Index gehen zu müssen. Muss ich dann für die Serien noch mal extra zwei Felder machen? Sonst weiß ich ja nicht welche die nächste bzw vorherige Serie ist.

        Wie definierst Du die Reihenfolge Deiner Serien?

        • alphabetisch nach Namen
        • nach Alter
        • nach Themen

        Wenn Du die Reihenfolge selbst beeinflussen können willst, dann benötigst Du ein Kriterium dafür.
        Hier halte ich das Vorgänger/Nachfolger-Prinzip für überdimensioniert. Es gibt ja wohl nicht soviele Serien und deswegen sollte in der Serientabelle ein Feld genügen, das die Reihenfolge bestimmt. Auf einer Adminseite kannst Du die Reihenfolge editieren.

        Du kannst übrigens auch so vorgehen, dass Du als Nachfolger des letzten Bildes von Serie A das erste Bild von Serie B einträgst und umgekehrt. Dadurch bekommst Du einen etwas aufwendigeren Vorgang beim Einfügen am Anfang und Ende einer Serie. Der Vorteil hierbei ist, dass Du auf die Felder "vorgaenger" und "nachfolger" einen unique-Index setzen kannst (ich hab' ja hier gelernt, dass der auch genau einen NULL-Wert enthalten darf), somit hast Du eine Fehlerquelle eliminiert. Weiterhin ist die Navigation dann nahezu trivial. Die einzigen Einträge mit NULL-Werten sind das erste Bild der ersten Galerie, das keinen Vorgänger hat, und das letzte Bild der letzten Serie, das keinen Nachfolger hat.

        Übrigens sollte innerhalb einer Galerie eine einfach verkettete Liste auch reichen. Dann hast Du weniger Aufwand beim Einfügen, aber mehr bei der Navigation. Deswegen würde ich doch eine doppelt verkettete Liste bevorzugen.

        Grüße
        Jeena Paradies

        Freundliche Grüsse,

        Vinzenz

        1. Hallo Vinzenz,

          Vielen Dank für deine Ausführungen.

          Übrigens sollte innerhalb einer Galerie eine einfach verkettete Liste auch reichen. Dann hast Du weniger Aufwand beim Einfügen, aber mehr bei der Navigation. Deswegen würde ich doch eine doppelt verkettete Liste bevorzugen.

          Das mit den Verkettungen kapiere ich noch überhaupt nicht aber ich sehe erst einmal zu dass ich im Netz ein paar Antworten bekomme.

          Grüße
          Jeena Paradies

          --
          Bambergs Fasching - nur ein großer (Werbe-)Flop?
          http://jeenaparadies.de/artikel/fasching/
          Jeenas Bannertauschportal; selbstgemacht ;-)
          http://jeenasbannerbude.de
        2. Hallo Vinzenz,

          Wie definierst Du die Reihenfolge Deiner Serien?

          • alphabetisch nach Namen
          • nach Alter
          • nach Themen

          Ich will sie so deffinieren dass es danach geht wann man welche Serie erstellt hat. Einfach so dass die letzt erstellte ganz oben erscheint.

          Grüße
          Jeena Paradies

          --
          Bambergs Fasching - nur ein großer (Werbe-)Flop?
          http://jeenaparadies.de/artikel/fasching/
          Jeenas Bannertauschportal; selbstgemacht ;-)
          http://jeenasbannerbude.de
          1. Hallo Jeena Paradies

            Hallo Vinzenz,

            Wie definierst Du die Reihenfolge Deiner Serien?
            Ich will sie so deffinieren dass es danach geht wann man welche Serie erstellt hat. Einfach so dass die letzt erstellte ganz oben erscheint.

            Das macht die Sache sehr einfach:
            [a] unsauber, Missbrauch: Verwende autoincrement im Feld serien_id und
                order by serien_id desc
            [b] Schreibe beim Erstellen in ein Feld z.B. erstellungszeit einen Zeitstempel
                oder by erstellungszeit desc

            Nächste Serie: nächster Datensatz
            Vorige Serie: vorhergehender Datensatz

            Freundliche Grüsse,

            Vinzenz

            1. Hallo Vinzenz,

              Das macht die Sache sehr einfach:
              [a] unsauber, Missbrauch: Verwende autoincrement im Feld serien_id und
                  order by serien_id desc
              [b] Schreibe beim Erstellen in ein Feld z.B. erstellungszeit einen Zeitstempel
                  oder by erstellungszeit desc

              Dann muss ich ja extra für die Serien eine extra Tabelle erstellen?

              Grüße
              Jeena Paradies

              --
              Bambergs Fasching - nur ein großer (Werbe-)Flop?
              http://jeenaparadies.de/artikel/fasching/
              Jeenas Bannertauschportal; selbstgemacht ;-)
              http://jeenasbannerbude.de
              1. Hallo Jeena Paradies

                Dann muss ich ja extra für die Serien eine extra Tabelle erstellen?

                Ja klar, warum denn nicht?

                Tabelle Serien
                serien_id        (Primärschlüssel, identifiziert eindeutig eine Serie)
                bezeichnung      (z.B. 'Auftritt in Coburg')
                erstellung       (Zeitpunkt der Erstellung)

                Tabelle Bilder
                bild_id          (Primärschlüssel, identifiziert eindeutig ein Bild, hilft dir evtl. beim
                                  Generieren des Dateinamens)
                serien_id        (gibt an, zu welcher Serie ein Bild gehört)
                vorgaenger
                nachfolger
                Bildbeschreibung
                ... (sonstige Daten zum Bild)

                Ist doch nicht so schlimm :-)

                Grüße
                Jeena Paradies

                Freundliche Grüsse,

                Vinzenz