"We are back" « oc.at

PHP Help gesucht!

LTD 25.09.2008 - 18:47 7530 68
Posts

fatmike182

Agnotologe
Registered: Oct 2005
Location: VIE
Posts: 4223
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)...

COLOSSUS

Administrator
GNUltra
Avatar
Registered: Dec 2000
Location: ~
Posts: 12135
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! :)

LTD

frecher fratz
Avatar
Registered: Feb 2001
Location: is where it is
Posts: 6334
Zitat von COLOSSUS
Kurz: KISS! :)

*rofl* Danke, das werde ich gleich in die random-Spruch-Liste der Intro-Page werfen!

Ich habe nach wie vor nicht verstanden wie ihr das ID-Problem lösen wollt, die Pfade sind zwar absolut, aber ich muss das Zeug irgendwie ordnen!
Das mit dem Text löse ich wohl mit den Dateinamen bzw. ner TXT-File
CSS haut im IE einfach nicht hin, bin zu blöde
Random-Spruchtexte auf Intro-Page fehlen =)
Bearbeitet von LTD am 02.10.2008, 23:12

fatmike182

Agnotologe
Registered: Oct 2005
Location: VIE
Posts: 4223
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

LTD

frecher fratz
Avatar
Registered: Feb 2001
Location: is where it is
Posts: 6334
also persönlich finde ich ne DB overengineered. Das ist für mich auch der Overkill zu machen.
Habe nun das random-Sprucheladescript fertig =)!

COLOSSUS

Administrator
GNUltra
Avatar
Registered: Dec 2000
Location: ~
Posts: 12135
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 :D ;) Darueberhinaus ist es Perl, also eh nicht unbedingt das lesbarste Beispiel...

LTD

frecher fratz
Avatar
Registered: Feb 2001
Location: is where it is
Posts: 6334
@Colossus - jetzt fehlt nurmehr der Text =)

COLOSSUS

Administrator
GNUltra
Avatar
Registered: Dec 2000
Location: ~
Posts: 12135
Kannst du analog zu den Kommentaren handhaben. Thumbnails uebrigens genauso.

LTD

frecher fratz
Avatar
Registered: Feb 2001
Location: is where it is
Posts: 6334
So, hab noch last/next Pfeilchen eingebaut =).

Wenn ich jetzt nurnoch dieses verflixte CSS hinbekomme!
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz