From 9f2dbb29d0a78148e9ac8c309ec07b27957d6a6e Mon Sep 17 00:00:00 2001 From: Fabian Schieder Date: Mon, 6 Apr 2026 20:47:18 +0000 Subject: [PATCH] shopAdder.php aktualisiert --- shopAdder.php | 111 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 109 insertions(+), 2 deletions(-) diff --git a/shopAdder.php b/shopAdder.php index 81fd287..71b6f15 100644 --- a/shopAdder.php +++ b/shopAdder.php @@ -1,11 +1,25 @@ prepare("INSERT INTO shops (name, website, logoPath, shippingTime) VALUES (?, ?, ?, ?)"); $stmt->bind_param("ssss", $name, $website, $logoPath, $shippingTime); @@ -76,8 +134,18 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action'])) { $messageType = 'error'; } } elseif ($_POST['action'] === 'delete_shop') { + /** + * @brief Löschen eines bestehenden Shops + */ $shopID = (int)$_POST['shop_id']; if ($shopID > 0) { + /** + * @brief Überprüfung auf verknüpfte Angebote + * + * Bevor ein Shop gelöscht wird, muss sichergestellt werden, dass + * keine Angebote (Offers) mehr mit diesem verknüpft sind, um die + * referenzielle Integrität zu wahren. + */ // First check if the shop has associated offers $checkStmt = $conn->prepare("SELECT COUNT(*) AS offerCount FROM offers WHERE shopID = ?"); $checkStmt->bind_param("i", $shopID); @@ -88,9 +156,15 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action'])) { $checkStmt->close(); if ($offerCount > 0) { + /** + * @brief Löschen verhindern, wenn Angebote existieren + */ $message = "Der Shop kann nicht gelöscht werden, da er noch $offerCount verknüpfte Angebote hat."; $messageType = 'error'; } else { + /** + * @brief Führt das Löschen des Shops aus der Datenbank durch + */ $stmt = $conn->prepare("DELETE FROM shops WHERE shopID = ?"); $stmt->bind_param("i", $shopID); if ($stmt->execute()) { @@ -106,6 +180,13 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action'])) { } } +/** + * @brief Abrufen aller bestehenden Shops zur Verwaltung + * + * Es wird eine Liste aller Shops inklusive der Anzahl ihrer zugeordneten Angebote + * (über einen LEFT JOIN mit der Tabelle offers) abgerufen, um diese in der Tabelle + * im Frontend anzuzeigen. + */ // Get existing shops to manage $shopsResult = $conn->query(" SELECT s.shopID, s.name, s.website, s.logoPath, s.shippingTime, COUNT(o.offerID) AS offerCount @@ -114,6 +195,9 @@ $shopsResult = $conn->query(" GROUP BY s.shopID, s.name, s.website, s.logoPath, s.shippingTime ORDER BY s.name ASC "); +/** + * @var array $existingShops Speichert die aus der Datenbank abgerufenen Shops + */ $existingShops = []; if ($shopsResult) { while ($row = $shopsResult->fetch_assoc()) { @@ -121,21 +205,31 @@ if ($shopsResult) { } } +/** + * @brief Einbinden des globalen Headers + */ include 'header.php'; ?> +
+

Shop verwalten

+

+
@@ -155,6 +249,7 @@ include 'header.php';
+
@@ -170,6 +265,7 @@ include 'header.php';
+
@@ -177,10 +273,12 @@ include 'header.php';
+

Bestehende Shops verwalten

0): ?> +
@@ -194,6 +292,7 @@ include 'header.php'; +
@@ -215,6 +314,7 @@ include 'header.php'; 0): ?> + +
@@ -240,9 +341,15 @@ include 'header.php';
+

Keine Shops vorhanden.

- +