3.5 KiB
Filmdatenbank mit echter Datenbank
📆 Fällig: 07.01.2024 📆
Ziel dieser Übung ist es, bei der Filmdatenbank aus der letzten Übung eine echte Datenbank einzusetzen und somit die Session nicht länger als Datenspeicher missbrauchen zu müssen.
Lernziele
- Serverseitige Programmierung mit PHP
- Grundlegende PHP Sprach- und Kontrollstrukturen
- Verwendung des PHP-Datenbankinterfaces
- Einfache SQL-Statements (
INSERT
,DELETE
,SELECT
undCREATE TABLE
)
Teil 1: Datenbankunterstützung einbinden
Für dieses Assignment verwenden Sie SQLite3 als Datenbank, weil hierfür kein Server installiert werden muss, man aber trotzdem eine vollwertige Datenbank bekommt. SQLite3 legt die Datenbank in einer Datei ab, die vom PHP-Programm benutzt werden kann.
Kopieren Sie Ihre vorhergehende Version der Filmdatenbank und binden Sie zusätzlich PDO und SQLite3 ein, indem Sie eine entsprechende composer.json
-Datei schreiben und composer
ausführen.
{
"require": {
"twig/twig": "^3.0",
"ext-pdo": "*",
"ext-sqlite3": "*"
}
}
Laden Sie composer herunter und führen Sie dann folgendes Kommando im Verzeichnis aus, in dem auch die Datei composer.json
liegt:
$ php composer.phar install
No composer.lock file present. Updating dependencies to latest instead of installing from lock file. See https://getcomposer.org/install for more information.
Loading composer repositories with package information
Updating dependencies
...
$
Es entsteht ein neues Verzeichnis vendor
, in dem sich die Bibliotheken befinden.
Teil 2: Datenbankzugriff
Schreiben Sie eine Klasse DbFilm
, welche den Datenbankzugriff durchführt. Diese sollte folgende Eigenschaften haben:
- Falls die Datenbankdatei noch nicht existiert, legt die Klasse die Tabelle
film
an und schreibt die Klasse die Stammdaten (Standard-Film-Liste aus der vorherigen Übung in die Datenbank). - Über die Methode
insert_film
kann man einen neuen Film einfügen. Man übergibt ihr ein Film-Objekt, das in der Datenbank persistiert wird. - Die Methode
read_filme
liest alle Filme ein und gibt ein Array vonFilm
-Objekten zurück. - Die Methode
delete_film
bekommt die ID eines Films und löscht ihn aus der Datenbank.
Die SQLIte3-Datenbank wird automatisch angelegt, wenn Sie das PDO-Objekt mit new \PDO("sqlite:" . DB_FILE);
erzeugen. Die Tabellen müssen Sie über ein CREATE TABLE
erzeugen und die Stammdaten per INSERT
einfügen.
Teil 3: Dynamische Webseite
Schreiben Sie die Lösung zum vorhergehenden Assignment so um, dass nicht mehr die Session, sondern die Datenbank benutzt wird. Sie werden Ihre Film-Klasse um ein weiteres Attribut ($id
) für den Primärschlüssel aus der Datenbank erweitern wollen.
Die Sortierfunktion müssen Sie nicht implementieren, sondern können sie einfach weglassen.
Abgabe
Verwenden Sie das Ihnen zugeordnete Git-Repository und legen Sie für jedes Assignment einen Ordner an: Assignment_01
, Assignment_02
, ...
Innerhalb des Ordners für das Assignment legen Sie bitte folgende drei Ordner an:
src
: Der Source-Code, der nicht im Webroot liegen soll / kanndoc
: Zusätzliche Dokumentation, die Sie zur Verfügung stellen wollensite
: Die fertige Webanwendung. Dieser Ordner ist das Webroot der Anwendung
Legen Sie die Lösung so in Ihrem Repository ab, dass man das Repository einfach clonen kann, dann in den Ordner site
geht und dort einen Webserver (z.B. php -S localhost:8080
) starten kann. Die Seite sollte dann korrekt aufrufbar sein.