A2: PHP
Termin: Do 5.11.
Erreichbare Punkte: 10
Einzelaufgabe
Diese Aufgabe setzt auf der HTML/CSS Aufgabe auf. Das Ziel ist nun, dem Benutzer zu ermöglichen, sämtliche Informationen zum Album (Titel, Interpret, Trackliste, Bild) über ein Formular einzugeben. Die Tracklist-Seite wird dann nicht mehr statisch in HTML kodiert sondern über ein PHP Script dynamisch erzeugt mit den zuvor eingegebenen und in einer Datei am Server gespeicherten Album-Informationen.
Aufgabe
- Legen Sie sich für diese Aufgabe ein eigenes Verzeichnis unterhalb public_html an (Überschreiben Sie nicht die alte HTML/CSS).
- Erstellen Sie ein Web Formular zur Eingabe der Album Informationen (Sie können meinetwegen annehmen dass maximal 10 Tracks pro Album eingegeben werden können; schöner wärs natürlich wenn man schrittweise die Tracks hzinzufügen kann)
- Repräsentieren Sie alle Album Informationen in einer Klasse "Album" (eine weitere Klasse "Track" wäre auch gut…)
- Die Formulareingaben sollen persistent am Server in einer Datei gespeichert werden.
- Die gespeicherten Album-Informationen sollen auf einer separaten Tracklist-Script ausgegeben werden, dabei können Sie das HTML / CSS der ersten Aufgabe wiederverwenden, müssen aber PHP Kommandos zum Auslesen der Album-Infos aus der Datei am Server einbauen.
- Falls bereits Album-informationen gespeichert sind, soll das Eingabeformular mit diesen Daten vorbelegt werden (damit man nicht immer alles neu eingeben muss).
- Speichern Sie keinen Hyperlink zum Bild mit dem Album-Cover, sondern lassen Sie den Benutzer über das Album-Eingabeformular ein Bild hochladen, dass Sie in Ihrem Verzeichnis dann abspeichern und in der Tracklist-Anzeige verlinken.
- Fleissaufgabe für Interessierte (freiwillig, aber ich nehme an das sind viele!): Erlauben Sie das Speichern mehrerer verschiedener Alben, und in der Tracklist Seite soll über ein Dropdown Feld auswählbar sein, welches der gespeicherten Alben angezeigt wird.
Anforderungen für Bewertung
- Es gibt mind. zwei Seiten: eine für die Eingabe und Speicherung der Daten (Formular) und eine für die Anzeige des Albums.
- Es gibt eine weitere Datei in welche die Albumdaten am Server abgelegt werden, und eine Datei in der das Bild (Album Cover) gespeichert wird
- Man kann Titel, Interpret, mehrere Tracks angeben und ein Bild (Album-Cover) hochladen
- Keine "Testausgaben" mit print_r() oder var_dump() und ähnlichem!! – Es wird die Formattierung (CSS) aus der Aufgabe 1 verwendet (kann natürlich noch zusätzlich gepimpt werden)
- Falls bereits Album-Informationen gespeichert sind, werden die Felder in der Eingabeformular-Seite vorbelegt mit den bereits gespeicherten Daten
- Die Album-Daten und die Tracks werden objektorientiert verarbeitet (mit Klassen!)
Abgabe
- Laden Sie (ähnlich wie bei Aufgabe 1) eine HTML Seite im Abgabebereich hoch, in der vier Links stehen sollen: (1) Link zur Formular-Seite, (2) Link zum Quelltext der Formular-Seite, (3) Link zur Anzeige-Seite, (4) Link zum Quelltext der Anzeige-Seite. Wie kann ich einen Link zum PHP Quelltext machen?
- Bloggen nicht vergessen.
Hinweise
- Das Serialisieren (=Umwandeln in einen String) und Deserialisieren (=Erzeugen eines Objekts aus der String-Repräsentation) der Album-Informationen (Klasse Album) kann mit den PHP Funktionen «serialize» und «unserialize» erreicht werden (siehe auch die Vorlesung zu PHP). Das serialisierte Objekt soll in einem File in Ihrem Verzeichnis abgelegt werden.
Also wir brauchen mal eine Klasse Album:
class Album {
// ...
}
Dann wollen wir (nachdem die Instanzvariablen gesetzt wurden entsprechend den Benutzereingaben im Formualar) das Album serialisieren. Dafür benötigen wir einige Datei-Operationen, also «fopen» (Öffnen einer Datei), «frwite» (Schreiben in eine Datei), «fclose» (Schliessen der Datei)
$album = new Album;
... // setzen der Album Infos gemäss Eingaben im Formular
$f = fopen("album.txt", "w"); // öffnen der Datei album.txt für Schreiben ("w" = write)
fwrite($f, serialize($album)); // Speichern des serialisierten Albums in der Datei
fclose($f); // Schliessen der Datei
Das Auslesen funktioniert analog:
$f = fopen("album.txt", "r"); // Öffnen der Datei album.txt für Lesen ("r" = read)
$album = unserialize( fread($f, filesize("album.txt")) ); // Deserialisieren des Albums aus der Datei
fclose($f);
... // allerhand Dinge mit $album anstellen
Wichtig: Damit das Schreiben in Ihrem Verzeichnis funktioniert, braucht die PHP Laufzeitumgebung schreibenden Zugriff auf das Verzeichnis. Am einfachsten ist dies, indem Sie auf der Konsole in dieses Verzeichnis wechseln und dort Vollzugriff geben durch dieses Kommando:
chmod 777 .
Letzte Änderung: 20.10.2009, 15:21 | 640 Worte