/PHP Bildergalerie mit Zusatzinfos
PaSt
- programmiertechnik
Guten Abend!
Bei einem kleinen Projekt soll ich eine Bildergalerie erstellen.
Für die Datenhandhabung ergeben sich für mich folgende Varianten.
Bild als Datei in (Album)-Ordner.
Zusatzinformationen im Exifformat.
Vorteil:
Nachteil:
Bild als Datei in (Album)-Ordner.
Zusatzinformationen in (SQL)-Datenbank.
Vorteil:
Nachteil:
Alle Daten in SQL-Datenbank. Bild als BLOB. Hier hab ich aber keine Erfahrung. Was heisst das bezüglich Performance
Vorteil:
Nachteil:
Was habt ihr da so für Erfahrungen gemacht?
Grüsse
Hi,
Variante A
Bild als Datei in (Album)-Ordner.
Zusatzinformationen im Exifformat.
Weiterer Nachteil: PHP muss jedes Bild bei jeder Auslieferung öffnen und die Daten rauslesen.
Variante B
Bild als Datei in (Album)-Ordner.
Zusatzinformationen in (SQL)-Datenbank.
Way to go.
Nachteil:
- Zusätzliche Datenquelle
Wieso soll das ein Nachteil sein?
- Eindeutige Zuordnung zwischen Zusatzinfos und Bild muss gewährleistet werden (Bsp wenn zwei Bilder gleich benannt sind)
Inkl. des Pfades können sie gar nicht gleich benannt sein.
Variante C
Alle Daten in SQL-Datenbank. Bild als BLOB.
Wird allgemein als die schlechteste Variante bewertet.
Insb. was BackUps/Dumps angeht sehr schlecht,
auch die Verbindung PHP <-> DB kann schnell zum Engpass werden, wenn da bei jedem Seitenabruf mehrere fette Bilder durchgequetscht werden,
und ums Caching musst du dich dann auch noch selber kümmern, was bei Ablage im Dateisystem iaR. der Webserver schon automatisch für dich übernehmen kann.
MfG ChrisB
Grüss dich ChrisB
Variante B
Bild als Datei in (Album)-Ordner.
Zusatzinformationen in (SQL)-Datenbank.Way to go.
Danke für den Kommentar. So werd ichs wohl machen!
Mein Datenbanklayout wird ungefähr so aussehen:
Tabelle Album
album_id (INT) | bezeichnug (VARCHAR) | position (INT/NULL) | sichtbar (INT 0/1) ->BOOL
Tabelle Bilder
bild_id (INT) | album_id (INT) | pfad (VARCHAR) | kommentar (TEXT) | position (INT/NULL) | sichtbar (INT 0/1) ->BOOL
ich glaube so sollten redundanzen ausgeschlossen sein.
Ordnerstruktur:
/#ALBUM_NR#/#BILDNAME#
grüsse
Hi,
Tabelle Album
album_id (INT) | bezeichnug (VARCHAR) | position (INT/NULL) | sichtbar (INT 0/1) ->BOOLTabelle Bilder
bild_id (INT) | album_id (INT) | pfad (VARCHAR) | kommentar (TEXT) | position (INT/NULL) | sichtbar (INT 0/1) ->BOOLich glaube so sollten redundanzen ausgeschlossen sein.
Ordnerstruktur:
/#ALBUM_NR#/#BILDNAME#
Wenn #ALBUM_NR# an der Stelle mit der album_id aus der Tabelle Bilder identisch ist - dann ist das Feld pfad in dieser Tabelle doch sehr wohl redundant.
MfG ChrisB
Hi
Wenn #ALBUM_NR# an der Stelle mit der album_id aus der Tabelle Bilder identisch ist - dann ist das Feld pfad in dieser Tabelle doch sehr wohl redundant.
hmm, stimmt natürlich.
Tabelle Album
album_id (INT) | bezeichnug (VARCHAR) | position (INT/NULL) | sichtbar (INT 0/1) ->BOOL
Tabelle Bilder
bild_id (INT) | album_id (INT) | dateiname (VARCHAR) | titel (VARCHAR) | kommentar (TEXT) | position (INT/NULL) | sichtbar (INT 0/1) ->BOOL
so kann ich aus album_id und dateiname auf den Pfad schliessen (#ALBUM_ID#/#DATEINAME#).
super, danke.
grüsse
Mahlzeit PaSt,
kleine ketzerische Frage:
Tabelle Bilder
bild_id (INT) | album_id (INT) | dateiname (VARCHAR) | titel (VARCHAR) | kommentar (TEXT) | position (INT/NULL) | sichtbar (INT 0/1) ->BOOLso kann ich aus album_id und dateiname auf den Pfad schliessen (#ALBUM_ID#/#DATEINAME#).
Warum überhaupt eine Spalte "dateiname"? album_id und bild_id sind auch eindeutig und Du könntest daraus einen Pfad #ALBUM_ID#/#BILD_ID# gewinnen - und die Bilder natürlich entsprechend benennen. Weiterer Vorteil: Du musst Dich nicht mit Sonderzeichen im Dateinamen herumärgern.
MfG,
EKKi
Grüss dich EKKi
Warum überhaupt eine Spalte "dateiname"? album_id und bild_id sind auch eindeutig und Du könntest daraus einen Pfad #ALBUM_ID#/#BILD_ID# gewinnen - und die Bilder natürlich entsprechend benennen. Weiterer Vorteil: Du musst Dich nicht mit Sonderzeichen im Dateinamen herumärgern.
Das hab ich mir auch überlegt. Die Frage stellte sich ob ich die Bilder nach dem Upload mit einer uniqid() ausstatte (Bsp Bild_4b3403665fea6.jpg). Ich fand aber, dass "echte/wahre" Dateinamen schöner respektive ausagekräftiger sind.
Mich persönlich nervt es meistens, wenn ich eine Datei mit nichtssagendem Dateiname runterlade.
Aber die Vorteile sind für die serverseitige Logik klar ersichtlich:
Nun weiss ich noch nicht genau wie ichs handhaben soll.
grüsse
Hello,
Warum überhaupt eine Spalte "dateiname"?
Oft möchte man doch einen Bezug zum Namen des Bildes auf dem Client behalten. Da ist eine Spalte "Dateiname", die ja genau diesen Dateinamen auf dem Client beinhalten könnte, doch sinnvoll, oder?
Bei erneutem Hochladen könnte man so kontrollieren lassen, ob es schon ein gleichnamiges Bild gibt. Außerdem wäre dies auch beim Wiederherunterladen von Vorteil.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg