assignments/Assignment_007
Thomas Smits 17acc6c1f5 Update of exercises 2023-12-18 14:01:56 +01:00
..
readme.md Update of exercises 2023-12-18 14:01:56 +01:00

readme.md

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 und CREATE 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:

  1. 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).
  2. Über die Methode insert_film kann man einen neuen Film einfügen. Man übergibt ihr ein Film-Objekt, das in der Datenbank persistiert wird.
  3. Die Methode read_filme liest alle Filme ein und gibt ein Array von Film-Objekten zurück.
  4. 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 / kann
  • doc: Zusätzliche Dokumentation, die Sie zur Verfügung stellen wollen
  • site: 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.