URL: https://www.overclockers.at/coding-stuff/php_help_gesucht_200031/page_5 - zur Vollversion wechseln!
was meint du jez: Datenbank oder .txt-file?
Bei einer Datenbank würde ich (mangels weiterer Erfahrung, der COLO wird dir da sicher was gaaaanz anderes Empfehlen) die zu MySQL raten. Die meisten Anbieter haben das so oder so drauf (phpmyadmin). Für Spielerein würd ich mir generell daheim am PC XAMPP installieren.
XAMPP is ein Paket das einen Server spielt -- deine Datein kommen in den folder htdocs und werden nicht mit der typischen Abslutadresse (C:\Dokumente und Einstellungen\LTD\...) angesprochen sondern über http://localhost/.
Um apache, php, mysql musst du dich nicht kümmern, das ist alles in XAMPP drinnen.
Dann überleg dir eine Datenbankstruktur.
Welche Tabellen wirst du brauchen.. ich schätz mal:
- images: id, filename, title, date, album_id
- albums: id, name, tag, date
- comments: id, comment, date, image_id
für ids nimmst du den Datentyp int oder so mit 4 Stellen (also bis max 9999 Einträge), date sollt Datetime oder so haben (lass das für den Anfang weg, oder lies dir genau durch in welchem Datenformat die Tabelle das Datum braucht, weil wenn das inkorrekt ist würde der Datensatz niht gespeichert werden), alles andere sind dann varchars mit so vielen Zeichen wie du willst.
Primärschlüssel werden für die IDs gegeben, ebenso auto_increment (id wird aufsteigend automatisch vergeben). alle felder auf NOT NULL setzen
In den Tabellen speicherst du dann eben 1) Alben, 2) Bilder (jedem bild ist die Album_id zugewiesen, also wenn du das album "FKK Ministrantenferien" anklickst, das Album die id 5 hat suchst du dann in einer Abfrage nach allen Bildern in der Tabelle "images" nach _allen_ Bildern mit der album_id 5) und 3) Kommentare.
vllt find ich ein einfaches Tut für solche Sachen (Eintragen/Auslesen in Datenbank)...
Imho ist hier auf eine Datenbank zurueckzugreifen ein eindeutiger Fall von OVerengineering
Prinzipiell hast du alle Daten, die du (dann redundant) in den DB-Tabellen ablegst, schon im Filesystem "for free" zur Verfuegung:
ID - wird nicht gebraucht; die Pfade der Bilder muessen ohnehin eindeutig sein.
Album - ergibt sich aus dem Verzeichnis, in dem das jeweilige Bild liegt.
Title - Entweder aus EXIF-Informationen, XATTRs, oder - meine persoenliche Lieblingsvariante - dem Dateinamen.
Date - mtime || ctime der Bilder (oder EXIF-info).
Sollte ein Bild in mehreren Gallerien auftauchen sollen -> hardlinken.
Kommentare? Dateinamen (bzw. ganzen Pfad dorthin), .txt dranhaengen, Plaintext speichern. Wuerde ich aber ganz weglassen, man muss ja nicht zu jedem Furz im Web seinen Senf dazugeben muessen.
Kurz: KISS!
Zitat von COLOSSUSKurz: KISS!
jo wie gesagt, der COLO wird was anderes sagen
wie ist das dann mit "nächstes" oder "letztes" bzw Ordnen möglich?
btw: findest du die DB-Lösung generell schlecht oder nur overengineered
also persönlich finde ich ne DB overengineered. Das ist für mich auch der Overkill zu machen.
Habe nun das random-Sprucheladescript fertig =)!
Ich finde die Loesung mit DB im Hintergrund ehrlich gesagt in dem Fall einfach nicht gut, weil du unbewusst mehr Moeglichkeiten fuer Fehler schaffst (wie immer, wenn du die Komplexitaet von Software erhoehst), auszerdem Datenredundanz hineinbringst (wenn du z. B. ein Bild umbenennen willst, musst du das auch wieder in der DB reflektieren), und zu guter Letzt die Anforderungen an den Webhost betraechtlich steigerst (PHP kriegt man ja oft wo nachgeschmissen; MySQL ist nicht immer eine absolute Selbstverstaendlichkeit).
Ich persoenlich wuerde die Namen der Bilder numerisch prefixen, und zwar in der Reihenfolge, in der ich sie geordnet haben moechte (fuer eine Ordnung muesstest du dich in der DB ja ohnehin auch entscheiden). Wenn das Bild also "Nackte_Nymphen_am_See.jpg" heiszt, benenne ich es in "001-Nackte_Nymphen_am_See.jpg" um, und das in der sortierten Ansicht nachfolgende Bild kriegt "002-" vorangestellt (999 Bilder pro Gallerie sollten ja eigentlich genuegen ). Dann reicht ein sort() ueber die Dateinamen, und alle sind gluecklich.
Fuer seitenweises Paging brauchst du nichts anderes zu machen, als
#) alle Dateinamen in ein Array zu werfen und zu sortieren
#) Anzahl_Bilder_pro_Seite * Nummer_der_angezeigten_Seite Bilder am Anfang des Arrays unbehandelt lassen
#) dann Anzahl_Bilder_pro_Seite Einträge so behandeln, dass sie im HTML mittels <img>-Tag eingebunden werden
fertig.
Ich wuerde ja mein Perl-Script posten, aber ich schaeme mich zu sehr fuer die grausliche Spaghettiness des Codes
Darueberhinaus ist es Perl, also eh nicht unbedingt das lesbarste Beispiel...
@Colossus - jetzt fehlt nurmehr der Text =)
Kannst du analog zu den Kommentaren handhaben. Thumbnails uebrigens genauso.
So, hab noch last/next Pfeilchen eingebaut =).
Wenn ich jetzt nurnoch dieses verflixte CSS hinbekomme!
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025