studyklar
IProg · Klausur 1 · Aufgabe 4

Terminkalender mit MVC: Ordner, Dateien, DB-Methoden

Kein Code, sondern ein Bauplan: Welche Ordner und Dateien braucht ein Terminkalender nach MVC, und welche Methoden greifen auf die Datenbank zu? Rechts wächst der Ordnerbaum Schritt für Schritt. Mit Weiter kommt der nächste Teil dazu.

Die Aufgabe

Aufgabe 4: MVC mit PHP

Die klassische „Baue eine Ordner- und File-Struktur“-Aufgabe. Diesmal ist es eine Terminkalenderverwaltung.

Es gibt eine Tabelle RUBRIKEN(rid, rubrik), die die buchbaren Rubriken enthält. Diese Rubriken werden auch auf der Startseite gelistet.

Man kann auf der Liste eine Rubrik anklicken und kommt dann auf eine Seite aller aktuellen (zukünftigen) Termine zu dieser Rubrik, welche aus einer Tabelle TERMINE(tid, datum, txt, rid) geladen werden.

User können sich einloggen – geprüft über eine Tabelle USER(uid, pwd) – und dann in einer Bearbeitungsmaske neue Termine anlegen oder angelegte Termine bearbeiten.

Es soll kein Code geschrieben werden, sondern eine MVC-konforme Datenstruktur angegeben werden. Für die Methoden, die auf die DB zugreifen, sollen bei der jeweiligen Tabelle Methoden angegeben werden. Alles muss kurz begründet werden.

Diese Aufgabe steht im Gedächtnisprotokoll vollständig, nur Punkte fehlen. Gefragt ist dieselbe Art Aufgabe wie in Klausur 2, Aufgabe 4: Ordner, Dateien und die Methoden der DB-Klassen, jeweils mit kurzer Begründung.

MVC heißt Model, View, Controller: Die Anwendung wird in drei Schichten geteilt. Das Modell greift auf die Datenbank zu. Die View zeigt Seiten an. Der Controller nimmt Anfragen an, ruft das Modell auf und wählt die View.

In eigenen Worten: Drei Tabellen, vier Seiten (Startseite mit Rubriken, Termine einer Rubrik, Login, Bearbeitungsmaske). Daraus folgt: eine DB-Klasse je Tabelle, ein Template je Seite, ein Controller für alles.

Aus Klausur 2, Aufgabe 4 („MVC mit PHP und Smarty: Ordner und Dateien für Kochrezepte“): Dort für Kochrezepte: controller.php, ein Ordner für das Modell mit SpeisenDB.php, ZutatDB.php, ConnectDB.php, ein Ordner für die Templates und html/.
Merke: Im Modell steht jeder Datenbankzugriff, in der View keiner. Üblich ist eine DB-Klasse je Tabelle; ihre Methoden heißen findBy… zum Lesen und insert, update, delete zum Ändern.
  1. Der Controller.
  2. Der Ordner für das Modell und die Verbindung.
  3. Je Tabelle eine DB-Klasse mit Methoden: RUBRIKEN, TERMINE, USER.
  4. Die Templates der View.
  5. Der Ordner für feste Dateien.

Der Controller

controller.php nimmt jede Anfrage des Browsers an: Startseite, Klick auf eine Rubrik, Login, Speichern eines Termins. Er ruft die passende Methode im Modell auf und gibt die Daten an das passende Template.

Er merkt sich auch den Login: Nach erfolgreicher Prüfung legt er die uid in der Session ab, den Daten, die der Server für einen Besucher über mehrere Seiten behält. Die Bearbeitungsmaske zeigt er nur, wenn dort ein Nutzer steht.

Aufs Blatt: controller.php – nimmt alle Anfragen an, ruft das Modell, wählt das Template, prüft den Login über die Session.

Aus Skript 07, Folie 12: Der PHP-Controller enthält kein HTML, führt die Anwendungslogik aus, greift dazu bei Bedarf auf die Datenbank zu und leitet an die Ausgabe weiter.

Der Ordner für das Modell

Alle Klassen mit Datenbankzugriff kommen in einen eigenen Ordner model/. So sieht man auf einen Blick, wo die Datenbank angesprochen wird.

Die Musterlösung von 2023 schreibt db/model und template/; der Name ist frei.

ConnectDB.php baut die Verbindung auf und wieder ab. Die Zugangsdaten stehen dann an genau einer Stelle, nicht in jeder Klasse.

Aufs Blatt: model/ – DB-Zugriffsklassen; ConnectDB.php – Verbindungsauf- und -abbau.

Noch 6 Schritte bis zum Ergebnis
Den ganzen Lösungsweg sehen Studierende und Lehrende der HS KL. Registriere dich mit deiner Adresse @stud.hs-kl.de oder @hs-kl.de, dann geht es hier direkt weiter.

Abbildung 1

terminkalender/

noch leer

LegendeDer Ordner der Anwendung ist noch leer.