'; echo '

Zugriff verweigert

'; echo '

Du hast keine Berechtigung, Angebote hinzuzufügen.

'; echo '
'; include 'footer.php'; exit; } /** * @brief Datenbankverbindung herstellen und Initialisierung von Statusvariablen. * * @var mysqli $conn Die aktive Datenbankverbindung. * @var string $message Eine Nachricht an den Benutzer (Erfolg oder Fehler). * @var string $messageType Der Typ der Nachricht ('success' oder 'error'). */ $conn = db_connect(); $message = ''; $messageType = ''; /** * @brief Verarbeitung von POST-Anfragen zur Angebotsverwaltung. * * Überprüft, ob das Formular abgesendet wurde und eine spezifische 'action' gesetzt ist. * Unterstützte Aktionen sind 'add_offer' (Angebot hinzufügen) und 'delete_offer' (Angebot löschen). */ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action'])) { /** * @brief Aktion: Neues Angebot hinzufügen. * * Liest die übermittelten Formulardaten aus, validiert diese (Produkt-ID, Shop-ID und * gültiger Preis) und fügt sie durch ein Prepared Statement in die Tabelle `offers` ein. */ if ($_POST['action'] === 'add_offer') { $productID = (int)$_POST['product_id']; $shopID = (int)$_POST['shop_id']; $price = (float)$_POST['price']; $shippingCost = isset($_POST['shipping_cost']) && $_POST['shipping_cost'] !== '' ? (float)$_POST['shipping_cost'] : 0.00; $inStock = isset($_POST['in_stock']) ? 1 : 0; $offerURL = trim($_POST['offer_url']); if ($productID > 0 && $shopID > 0 && $price >= 0) { /** * @brief Einfügen in die Datenbank. * Bereitet das SQL-Statement vor und bindet die Parameter sicher, um SQL-Injection zu verhindern. */ $stmt = $conn->prepare("INSERT INTO offers (productID, shopID, price, shippingCost, inStock, offerURL) VALUES (?, ?, ?, ?, ?, ?)"); $stmt->bind_param("iiddis", $productID, $shopID, $price, $shippingCost, $inStock, $offerURL); if ($stmt->execute()) { $message = 'Angebot erfolgreich hinzugefügt!'; $messageType = 'success'; } else { $message = 'Fehler beim Hinzufügen des Angebots.'; $messageType = 'error'; } $stmt->close(); } else { /** * @brief Fehlerbehandlung bei ungültigen Eingaben. */ $message = 'Bitte alle Pflichtfelder korrekt ausfüllen.'; $messageType = 'error'; } } elseif ($_POST['action'] === 'delete_offer') { /** * @brief Aktion: Existierendes Angebot löschen. * * Überprüft die übermittelte Angebot-ID und löscht den entsprechenden Eintrag * sicher per Prepared Statement aus der Datenbank. */ $offerID = (int)$_POST['offer_id']; if ($offerID > 0) { $stmt = $conn->prepare("DELETE FROM offers WHERE offerID = ?"); $stmt->bind_param("i", $offerID); if ($stmt->execute()) { $message = 'Angebot erfolgreich gelöscht!'; $messageType = 'success'; } else { $message = 'Fehler beim Löschen des Angebots.'; $messageType = 'error'; } $stmt->close(); } } } /** * @brief Abrufen aller Produkte für das Dropdown-Feld. * * Führt eine Query aus, um alle verfügbaren Produkte (IDs und Modelle) * alphabetisch geordnet aus der Datenbank zu laden. * * @var array $products Enthält die geladenen Produkte. */ // Get all products for dropdown $productsResult = $conn->query("SELECT productID, model FROM products ORDER BY model ASC"); $products = []; if ($productsResult) { while ($row = $productsResult->fetch_assoc()) { $products[] = $row; } } /** * @brief Abrufen aller Shops für das Dropdown-Feld. * * Führt eine Query aus, um alle verfügbaren Shops (IDs und Namen) * alphabetisch geordnet aus der Datenbank zu laden. * * @var array $shops Enthält die geladenen Shops. */ // Get all shops for dropdown $shopsResult = $conn->query("SELECT shopID, name FROM shops ORDER BY name ASC"); $shops = []; if ($shopsResult) { while ($row = $shopsResult->fetch_assoc()) { $shops[] = $row; } } /** * @brief Filterlogik für die Anzeige existierender Angebote. * * Überprüft, ob über GET ein Filter für eine bestimmte Produkt-ID gesetzt wurde. * Ist dies der Fall, werden nur Angebote für dieses Produkt angezeigt. * * @var int $filterProductID Die ID des zu filternden Produkts (0, wenn kein Filter gesetzt ist). * @var string $offersQuery Die dynamisch generierte SQL-Abfrage für die Angebote. */ $filterProductID = isset($_GET['filter_product_id']) ? (int)$_GET['filter_product_id'] : 0; $offersQuery = " SELECT o.offerID, p.model AS productName, s.name AS shopName, o.price FROM offers o JOIN products p ON o.productID = p.productID JOIN shops s ON o.shopID = s.shopID "; if ($filterProductID > 0) { /** * @brief Anwenden des Filters auf die SQL-Query, falls notwendig. */ $offersQuery .= " WHERE o.productID = " . $filterProductID; } $offersQuery .= " ORDER BY o.offerID DESC"; /** * @brief Ausführen der Angebot-Abfrage und Speichern in ein Array. * * @var array $existingOffers Enthält die geladenen Angebote inkl. Shop- und Produkt-Namen, * die zur Anzeige in der Tabelle verwendet werden. */ // Get existing offers to manage $offersResult = $conn->query($offersQuery); $existingOffers = []; if ($offersResult) { while ($row = $offersResult->fetch_assoc()) { $existingOffers[] = $row; } } /** * @brief Einbinden des HTML-Headers, der Navigation und Stile. */ include 'header.php'; ?>

Angebot verwalten

Bestehende Angebote verwalten

0): ?> Filter zurücksetzen
0): ?>
Produkt Shop Preis Aktion

Keine Angebote vorhanden.