Bilder verwalten

  • Zur Problemstellung: Ich möchte in einer selbstgestrickten FAQ-Datenbank die Möglichkeit einbauen, ein oder mehrere Bilder zu einem Beitrag anzuhängen. Dieses sollte mit PHP geschehen und mit MySQL verwaltet werden. Beim Löschen des Beitrags sollen auch die Bilder auf der Festplatte gelöscht werden. Beim Ändern des Beitrags (der Bilder) sollen die nicht mehr benötigten Bilder gelöscht und die neuen Bilder hochgeladen werden.


    Wie lässt sich das mit dem geringsten Aufwand realisieren? Damit meine ich so einfach wie möglich, so komplex wie nötig :roll:


    Schonmal danke im Voraus für alle Ideen und Vorschläge.

  • Bei deinen Vorstellungen, bleibt der Aufwand nicht mehr gering. ;)


    Möglichkeit 1:
    Im Datensatz des Beitrages, der eine unique-ID hat, erstellst du ein Feld "bilder" Ja/Nein (1/0).
    Wird z.B. der Beitrag 128 aufgerufen, wird auch der Wert von Bilder abgefragt. Ist dieser 1, wird ein Script gestartet, welches Beispielsweise unter "gif/bilder/128/" alle enthaltenen Bilder auflistet.
    Das Löschen des Beitrages müsstest du ebenfalls selbst programmieren, wenn PHP die Bilder löschen soll.


    Möglichkeit 2:
    Du programmierst eine Importfunktion für Bilder.
    Du legst also z.B. einen Beitrag an, der die ID 128 erhält. Nun rufst du die Importfunktion mit dem Parameter ID=128 und Aktion=upload auf. Nun beginnt das Script, alle Bilder, die z.B. im Verzeichnis "Upload" liegen, auszulesen, die Anzahl der Bilder festzustellen, die Bilder umzubenennen (z.B. in 128_0, 128_1, 128_2 etc.) und in das Verzeichnis "gif/bilder" zu kopieren.
    Auch hier musst du das Löschen des Beitrags selbst programmieren, damit die Bilder gelöscht werden.


    Möglichkeit 3:
    Du legst den Beitrag über ein selbst erstelltes Script an und gibst optional dazu die Möglichkeit, Bilder per Browser hochzuladen. Hier würde das Script, welches die Bilder auf den Server lädt, die Bildnamen in ein DB-Feld schreiben. Damit würdest du dir das Umbenennen sparen.
    Das Löschen des Beitrages muss trotzdem selbst programmiert werden. ;)


    Da ein Kunde von uns soetwas in Form einer Autobörse haben wollte, stecke ich da noch recht gut in der Materie und den Möglichkeiten, die sich ergaben. Er kopiert mittlerweile nur noch eine Textdatei und alle Bilder der Autos in ein Verzeichnis auf seinem Server und schiebt dann ein FTP-Script an. Dies löscht alle alten Bilder auf dem Webserver, kopiert die neuen hoch, legt die Textdatei in ein anderes Verzeichnis und startet dann ein Importscript, welches die Datenbank neu schreibt.


    Hoffe, dir etwas geholfen zu haben ;)


    Gruß
    Christian Löchner

  • "c.loechner" schrieb:

    Möglichkeit 1: Im Datensatz des Beitrages, der eine unique-ID hat, erstellst du ein Feld "bilder" Ja/Nein (1/0). Wird z.B. der Beitrag 128 aufgerufen, wird auch der Wert von Bilder abgefragt. Ist dieser 1, wird ein Script gestartet, welches Beispielsweise unter "gif/bilder/128/" alle enthaltenen Bilder auflistet. Das Löschen des Beitrages müsstest du ebenfalls selbst programmieren, wenn PHP die Bilder löschen soll.


    So oder so ähnlich habe ich es gelöst. Hier meine Vorgehensweise:


    Beim Speichern des Beitrags wird ein ImageFlag in der Datenbank gesetzt (0 oder 1). Zusätzlich wird in der Datenbank ein Timestamp (PHP Date-Funktion) gespeichert. Dieser Timestamp ist auch gleichzeitig der Ordnername. Beim Aufrufen des Beitrags werden alle Dateien dieses Ordners aufgelistet und können per Klick angezeigt werden.


    Beim Löschen des Beitrags wird der Timestamp wieder aus der Datenbank ausgelesen und der entsprechende Ordner gelöscht. Danach wird der Beitrag aus der Datenbank entfernt.


    Das Ändern der Bilder habe ich momentan umgangen, indem ich es einfach deaktiviert habe. Wenn man andere Bilder möchte muss der Beitrag entfernt und neu eingestellt werden.

  • Wobei das Ändern der Bilder den geringsten Arbeitsaufwand darfstellt.


    Einfach einen kleinen Dateimanager mit Vorschaufunktion programmieren, Bilder per klick löschen (unlink) und neue Bilder entweder Browsergesteuert oder per FTP hochladen. Da du ja den Timestamp aus der DB lesen kannst, weißt du ja auch, wo die Bilder hingespeichert werden müssen.
    Kommt es dazu, dass zwei Bilder den gleichen Namen tragen (if_exists), einfach das hochzuladende Bild per script namentlich ändern.