Kontext
Erstellen Sie eine einfache PHP-Anwendung zur Verwaltung eines
Lauftagebuchs mit folgenden Eigenschaften:
- Für jeden Kalendertag gibt es höchstens eine Eintragung.
- Eine Eintragung besteht aus: Datum, gelaufene Strecke (in km) und
gelaufene Zeit (in Sekunden)
- Die Daten sollen in einer einzelnen Text-Datei auf dem Webserver
gespeichert werden, auf dem auch die PHP-Skripte liegen (sodass man die
Datei einfach herunterladen kann).
- Verschiedene Nutzer oder Authorisierung brauchen Sie nicht zu
unterstützen, d.h. es ist in Ordnung, wenn verschiedene Nutzer auf die
gleichen Daten zugreifen.
Allgemeine Hinweise:
- Deployen Sie Anwendung auf Heroku; hinterlegen Sie Ihr Projekt auf dem
f4
-Server.
- Nutzen Sie keine PHP-Bibliotheken außer Twig.
- Sie können beliebige Ihnen vertraute Frontend-Technologien einsetzen
(also CSS- und JavaScript-Bibliotheken).
1. Basisfunktionalität
Schreiben Sie eine Anwendung in PHP, die Folgendes realisiert:
- Detailansicht: Auflistung der bisherigen Lauftage mit Datum,
gelaufener Strecke, gelaufener Zeit und errechneter (und sinnvoll
gerundeter) Durchschnittgeschwindigkeit; aufsteigend sortiert nach Datum.
- Eingabe: Formular zur Eintragung eines neuen Lauftages.
Wird dabei ein Tag angegeben, für den es schon einen Eintrag gibt, wird
der existierende Eintrag überschrieben.
Eingabeformate:
- Datum:
JJJJ-MM-TT
(das ist der interne Standard von input type=date
)
- Strecke:
nn
(ganzzahlig) oder nn.n
(Dezimalstelle hinter einem Punkt)
- Zeit:
hh:mm:ss
- Gesamtansicht: Anzeige der Anzahl der Lauftage und die Anzahl der
Gesamttage die zwischen dem ersten und letzten Lauftag liegen;
außerdem Gesamtlaufzeit und Gesamtkilometer.
Es ist Ihnen überlassen, wie viele PHP-Dateien und wie viele
HTTP-Request-Ziele Sie anlegen (möglich wäre z.B. eine einzige
Webseite/Skript mit allen drei Funktionen, oder auch zwei oder drei separate
Webseiten/Skripte).
Das Datenformat für die Speicherung dürfen Sie frei wählen.
Bei den Formulareingaben dürfen Sie zunächst von gültigen und sinnvollen
Eingaben ausgehen.
2. Fehlerbehandlung bei der Eingabe
Ihre Anwendung soll nun folgende Eingabefehler behandeln:
- Falsches Datumsformat (d.h. etwas anderes als
JJJJ-MM-TT
, z.B. für
alte Browser, die input type=date
nicht kennen)
- Datum in der Zukunft
- Ungültiges Streckenformat (keine Zahl)
- Negative Strecke oder Strecke der Länge 0
- Ungültiges Zeitformat
- Negative Zeit oder Zeit der Länge 0
Grundlegende Behandlung:
Wenn einer der o.g. Fehlerfälle auftritt, soll kein neuer Eintrag auf dem
Server gespeichert werden und dem Nutzer soll eine Fehlermeldung angezeigt
werden.
Erweiterte Behandlung:
Zusätzlich zur grundlegenden Behandlung soll dem Nutzer nun im Fehlerfall
genau mitgeteilt werden, was alles schief gelaufen ist.
D.h. wenn mehrere Fehler aufgetreten sind, sollen davon auch alle berichtet
werden.
3. Ergänzende Funktionalität: Einträge Löschen
In der Detailansicht der Lauftage soll neben jedem Eintrag ein Lösch-Link
angezeigt werden.
Beim Klick auf diesen Link wird der Eintrag aus der Server-Datei gelöscht.
4. Templates
Benutzen Sie Twig
um die Erzeugung von HTML-Code und Verarbeitungslogik von einander zu
trennen.
Binden Sie Twig in Ihr Projekt über Composer ein.