diff --git a/README.md b/README.md index c9e2e9c..efdef4d 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,7 @@ Habit Tracker ist eine PHP-Webanwendung, mit der Benutzer eigene Gewohnheiten an - Habits erstellen, bearbeiten, loeschen und fuer heute abhaken - Kategorien und Statusfilter im Dashboard - Tagesprotokoll ueber `habit_logs` +- Wochenfortschritt im Dashboard gegen das persoenliche Wochenziel - Responsive Oberflaeche fuer Desktop und Smartphone - Serverseitige Validierung und klare Fehlermeldungen - Schutz gegen SQL-Injection durch PDO Prepared Statements @@ -67,8 +68,9 @@ Die Datenbank besteht aus 5 Tabellen: 3. Habit mit Kategorie und Wochenziel erstellen. 4. Habit im Dashboard filtern. 5. Habit fuer heute abhaken. -6. Habit bearbeiten und loeschen. -7. Seite auf Smartphone-Breite pruefen. +6. Wochenfortschritt im Dashboard kontrollieren. +7. Habit bearbeiten und loeschen. +8. Seite auf Smartphone-Breite pruefen. ## Bewertungsbezug diff --git a/app/Controllers/HabitController.php b/app/Controllers/HabitController.php index 3db81a5..1a0efef 100644 --- a/app/Controllers/HabitController.php +++ b/app/Controllers/HabitController.php @@ -119,6 +119,16 @@ class HabitController if ($title === '') { $errors['title'] = 'Bitte gib einen Namen fuer den Habit ein.'; + } elseif (mb_strlen($title) > 120) { + $errors['title'] = 'Der Name darf maximal 120 Zeichen lang sein.'; + } + + if (mb_strlen($description) > 1000) { + $errors['description'] = 'Die Beschreibung darf maximal 1000 Zeichen lang sein.'; + } + + if ($categoryId !== '' && !Category::exists((int) $categoryId)) { + $errors['category_id'] = 'Bitte waehle eine gueltige Kategorie aus.'; } if ($targetPerWeek < 1 || $targetPerWeek > 7) { @@ -134,4 +144,3 @@ class HabitController ]; } } - diff --git a/app/Models/Category.php b/app/Models/Category.php index 8982b81..c984432 100644 --- a/app/Models/Category.php +++ b/app/Models/Category.php @@ -1,4 +1,4 @@ -query('SELECT id, name, color FROM categories ORDER BY name') ->fetchAll(); } + + public static function exists(int $id): bool + { + $statement = Database::connection()->prepare('SELECT id FROM categories WHERE id = :id LIMIT 1'); + $statement->execute(['id' => $id]); + + return (bool) $statement->fetch(); + } } diff --git a/app/Models/Habit.php b/app/Models/Habit.php index 77808ec..53f0289 100644 --- a/app/Models/Habit.php +++ b/app/Models/Habit.php @@ -1,4 +1,4 @@ -

| - Ziel: x pro Woche + Woche: / erledigt @@ -64,4 +64,3 @@ - diff --git a/app/Views/habits/form.php b/app/Views/habits/form.php index f12b11c..6b6ac43 100644 --- a/app/Views/habits/form.php +++ b/app/Views/habits/form.php @@ -14,6 +14,7 @@ id="title" name="title" type="text" + maxlength="120" class="" value="" required @@ -24,10 +25,13 @@ - + + + + - + + + -