Bilderverwaltung in Anzeigenmarkt

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Bilderverwaltung in Anzeigenmarkt

    Hallo,

    Ich programmiere gerade einen Anzeigenmarkt. Bis auf die Bilderverwaltung ist alles soweit fertig.

    Es sollen max. 5 Bilder / Anzeigen möglich sein.
    Zu allen Bildern gibt es Thumbnails. Kleine Bilder werden einfach als Thumbnail gespeichert, es gibt dann keine große Version.

    Das einmalige Speichern von max. 5 bildern wäre nicht das Problem, aber das Löschen einzelner Bilder und erneutes Uploaden macht die Sache etwas komplizert.

    Nun habe ich 2 Ansätze:


    1) ohne DB:

    Als Speicherpfade nehme ich

    Thumbs:
    /bilder/<inserat_id>/th_<bild_id>.<endung>
    große Version (optional):
    /bilder/<inserat_id>/<bild_id>.<endung>

    Die Bilder müssen eine fortlaufende Nummer (bild_id) haben. Nach jedem Löschen müssten alle bilder neu benannt werden, damit die Nummerierung durchgehend ist. Bei erneuten Hochladen von Bildern müsste die letzte Nummer ermittelt werden. Zur Ausgabe müsste das Verzeichnis ausgelesen werden. Das ermitteln der Bildanzahl und v.a das umbenennen wäre ein recht langer Code, da ich a) die Dateiendung nicht kenne und b) nicht zu jedem Thumb auch eine große Version vorhanden ist.


    2) mit DB: (wobei die Bilder selbst _nicht_ in die DB gespeichert werden)

    Es könnte eine Tabelle 'bilder' geben mit den Feldern:

    id | anzeige_id | dateiname | groß

    wobei das Feld 'groß' ein ja/nein (0/1) Feld ist (großes bild vorhanden/nicht vorhanden).

    Der Dateiname könnte beliebig gewält werden (am besten Timestamp+fortlaufende Zahl). Durch COUNT() könnte die Bilderanzahl leicht ermittelt werden.


    So, soweit meine Ideen. Irgenwelche Denkfehler? Welche Version ist besser? Habt ihr bessere Vorschläge?

    Gruß,
    Syco



    (wähend des Schreibens viel mir ein/auf, dass ich auch bei der ersten Variante mit zufälligen Dateinamen arbeiten könnte, was die Sache aber auch nicht unbdingt einfacher macht.)
    [COLOR=darkblue].: 1+1=23 :.[/COLOR]

  • #2
    Ganz auf die Schnelle hätte ich folgenden Ansatz:

    Ordernstruktur:
    1. bilder/[inserat_id]/thumbs/
    2. billder/[inserat_id]/

    In 1. kommen die Vorschaubilder in 2. die großen Bilder. Beide werden jeweils genau gleich benannt. Am einfachsten Originalnamen - musst halt überlegen, ob bei gleichem Namen das alte Bild überschrieben oder zum Beispiel das neue umbenannt werden soll.

    Auslesen kannst du dann einfach der Reihe nach, alle Löschen ebenfalls. Wenn du nur ein einziges Löschen willst, hast du nicht das Problem mit der Nummierung - bzw. musst nicht extra überprüfen.

    Eine extra Datenbanktabelle würde ich in diesem einfachen Fall nicht machen. Ob ein großes Bild vorliegt, kannst du ja auch über "file_exists()" prüfen...

    gruss Markus
    Simploo CMS - das einfache Webseiten-Bearbeitungsprogramm

    Kommentar


    • #3
      Und warum nicht eine Tabelle pics mit den Spalten:
      pic_id
      anzeige_id
      pic_name
      pic_fullsize
      pic_sort

      pic_id ist die eindeutige ID eines Thumbnails
      anzeige_id die ID der Anzeige, zu der es gehört
      pic_name der Name des Bildes
      pic_fullsize enthält entweder ein X oder nichts,je nachdem, ob eine große Version verfügbar ist
      pic_sort gibt die Reihenfolge an, in der die Bilder zu einer Anzeige ausgegeben werden sollen

      Dazu einen Ordner pictures mit den Dateien
      1
      2
      3
      4
      4x
      5
      6
      6x
      7
      7x
      ...

      Die Zahlen entsprechen den pic_ids und 4x wäre die große Version des Thumbnails mit pic_id = 4
      Ich denke, also bin ich. - Einige sind trotzdem...

      Kommentar


      • #4
        Danke für eure Tipps.

        Ich habe das ganze jetzt so umgesetzt und es funktioniert prima:

        Tabelle bilder mit

        id (int 4) | inserat (int 4) | dateiname (varchar 17) | gross (int 1)

        Pfade:

        pix/inserate/<inserat_id>/<dateiname>
        und
        pix/inserate/<inserat_id>/gross/<dateiname>

        Dateiname:
        <timestamp>-<counter>.<endung>

        Gruß,
        Syco
        [COLOR=darkblue].: 1+1=23 :.[/COLOR]

        Kommentar

        Lädt...
        X