diff --git a/README.md b/README.md index ba33a8f..2618a54 100644 --- a/README.md +++ b/README.md @@ -210,3 +210,4 @@ Das Projekt basiert auf bewährten Web-Standards: * Neue Kachelansicht für die Artikel-Übersicht inklusive Toggle-Button zwischen Listen- und Kachelansicht. * Bearbeiten-Funktion für bestehende ToDo-Listen Titel und deren Einträge implementiert. * Anzeige in der Haushaltsverwaltung nutzt nun den Anzeigenamen (Display Name) anstatt des Loginnamens, sofern vorhanden. + * Neuer Menüpunkt zur Verwaltung (Bearbeiten, Löschen, Hinzufügen) von Kategorien analog zu den Herstellern implementiert. diff --git a/src/articles.php b/src/articles.php index 8ae263c..3cdb40e 100644 --- a/src/articles.php +++ b/src/articles.php @@ -229,7 +229,7 @@ $conn->close(); border: 1px solid #eee; border-radius: 8px; padding: 6px; text-align: center; background: #fff; display: flex; flex-direction: column; transition: transform 0.1s, box-shadow 0.1s; - height: 250px; + height: 220px; position: relative; } .lager-card:hover { transform: translateY(-2px); box-shadow: 0 4px 8px rgba(0,0,0,0.05); } diff --git a/src/categories.php b/src/categories.php index d52e08d..76ea58d 100644 --- a/src/categories.php +++ b/src/categories.php @@ -2,7 +2,7 @@ // categories.php - Kategorienverwaltung // FINALE VERSION mit Haushaltslogik -$page_title = "Kategorien im Haushalt"; +$page_title = "Kategorien verwalten"; if (session_status() == PHP_SESSION_NONE) { session_start(); @@ -53,34 +53,85 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") { log_household_action($conn, $household_id, $current_user_id, $log_message); } $message = ''; - } else { /* ... */ } + } else { + if ($conn->errno == 1062) { + $message = ''; + } else { + $message = ''; + } + } $stmt->close(); - } else { /* ... */ } + } else { + $message = ''; + } } elseif (isset($_POST['edit_category'])) { - // ... + $category_id = intval($_POST['category_id']); + $category_name = trim($_POST['category_name']); + + if (!empty($category_name) && $category_id > 0) { + $stmt = $conn->prepare("UPDATE categories SET name = ? WHERE id = ? AND user_id = ?"); + $stmt->bind_param("sii", $category_name, $category_id, $current_user_id); + if ($stmt->execute()) { + if ($household_id) { + $log_message = htmlspecialchars($_SESSION['username']) . " hat die Kategorie '" . htmlspecialchars($category_name) . "' bearbeitet."; + log_household_action($conn, $household_id, $current_user_id, $log_message); + } + $message = ''; + } else { + $message = ''; + } + $stmt->close(); + } } } elseif (isset($_GET['action']) && $_GET['action'] == 'delete' && isset($_GET['id'])) { - // ... + $category_id = intval($_GET['id']); + + // Prüfen ob die Kategorie dem User gehört + $stmt_check = $conn->prepare("SELECT name FROM categories WHERE id = ? AND user_id = ?"); + $stmt_check->bind_param("ii", $category_id, $current_user_id); + $stmt_check->execute(); + $res_check = $stmt_check->get_result(); + + if ($res_check->num_rows > 0) { + $cat_name = $res_check->fetch_assoc()['name']; + // Optional: Vor dem Löschen prüfen, ob Artikel verknüpft sind, und auf NULL setzen (in DB per ON DELETE SET NULL gemacht) + + $stmt_delete = $conn->prepare("DELETE FROM categories WHERE id = ?"); + $stmt_delete->bind_param("i", $category_id); + if ($stmt_delete->execute()) { + if ($household_id) { + $log_message = htmlspecialchars($_SESSION['username']) . " hat die Kategorie '" . htmlspecialchars($cat_name) . "' gelöscht."; + log_household_action($conn, $household_id, $current_user_id, $log_message); + } + $message = ''; + } else { + $message = ''; + } + $stmt_delete->close(); + } else { + $message = ''; + } + $stmt_check->close(); } -$stmt_load = $conn->prepare("SELECT c.id, c.name, c.user_id, u.username as creator_name FROM categories c JOIN users u ON c.user_id = u.id WHERE c.user_id IN ($placeholders) ORDER BY c.name ASC"); -$stmt_load->bind_param($types, ...$household_member_ids); -$stmt_load->execute(); -$categories_list = $stmt_load->get_result()->fetch_all(MYSQLI_ASSOC); -$stmt_load->close(); +$categories_query = $conn->prepare("SELECT c.id, c.name, c.user_id, u.username as creator_name FROM categories c JOIN users u ON c.user_id = u.id WHERE c.user_id IN ($placeholders) ORDER BY c.name ASC"); +$categories_query->bind_param($types, ...$household_member_ids); +$categories_query->execute(); +$categories_list = $categories_query->get_result()->fetch_all(MYSQLI_ASSOC); +$categories_query->close(); $conn->close(); ?>
-
-

Kategorien im Haushalt

+
+

Kategorien im Haushalt

-
+
Neue Kategorie hinzufügen
" method="post" class="row g-3 align-items-end"> @@ -97,14 +148,14 @@ $conn->close();
Bestehende Kategorien
-
Keine Kategorien im Haushalt gefunden.
+
Keine Kategorien gefunden.
-
+
- + (von ) @@ -153,19 +204,19 @@ $conn->close(); - + \ No newline at end of file diff --git a/src/header.php b/src/header.php index fd9149d..88cfec2 100644 --- a/src/header.php +++ b/src/header.php @@ -72,6 +72,7 @@ if (isset($_SESSION['user_id'])) { +