From 397c899115beb5703129a559f9745746f3962560 Mon Sep 17 00:00:00 2001 From: Andrea Fiorencis Date: Fri, 10 Apr 2026 11:39:37 +0200 Subject: [PATCH] Implementata pagina gestione ordini --- src/admin/manageOrders.php | 163 +++++++++++++++++++++++++++++++++++++ src/assets/style.css | 66 +++++++++++++++ 2 files changed, 229 insertions(+) create mode 100644 src/admin/manageOrders.php diff --git a/src/admin/manageOrders.php b/src/admin/manageOrders.php new file mode 100644 index 0000000..c6e4a6b --- /dev/null +++ b/src/admin/manageOrders.php @@ -0,0 +1,163 @@ +prepare($sql_role); +$stmt_role->bind_param("i", $user_id); +$stmt_role->execute(); +$stmt_role->bind_result($role); +$stmt_role->fetch(); +$stmt_role->close(); + +if ($role !== 'admin') { + http_response_code(403); + die("Accesso negato. Solo gli amministratori possono accedere a questa sezione."); +} + +// Gestisci azioni (cambio stato, eliminazione) +if ($_SERVER['REQUEST_METHOD'] === 'POST') { + $action = $_POST['action'] ?? ''; + $order_id = $_POST['order_id'] ?? 0; + + if ($action === 'update_status') { + $new_status = $_POST['status'] ?? ''; + if (in_array($new_status, ['pending', 'completed', 'cancelled'])) { + $sql_update = "UPDATE Orders SET Status = ? WHERE OrderID = ?"; + $stmt_update = $conn->prepare($sql_update); + $stmt_update->bind_param("si", $new_status, $order_id); + $stmt_update->execute(); + $stmt_update->close(); + } + } elseif ($action === 'delete_order') { + // Elimina gli items dell'ordine prima di eliminare l'ordine + $sql_delete_items = "DELETE FROM OrderItems WHERE OrderID = ?"; + $stmt_delete_items = $conn->prepare($sql_delete_items); + $stmt_delete_items->bind_param("i", $order_id); + $stmt_delete_items->execute(); + $stmt_delete_items->close(); + + // Elimina l'ordine + $sql_delete = "DELETE FROM Orders WHERE OrderID = ?"; + $stmt_delete = $conn->prepare($sql_delete); + $stmt_delete->bind_param("i", $order_id); + $stmt_delete->execute(); + $stmt_delete->close(); + } +} + +// Query per ottenere tutti gli ordini con dettagli utente +$sql = "SELECT o.OrderID, o.UserID, u.Name, u.Surname, u.Email, o.OrderDate, o.Total, o.Status, + GROUP_CONCAT(p.ProductName SEPARATOR ', ') AS Products + FROM Orders o + LEFT JOIN Users u ON o.UserID = u.UserID + LEFT JOIN OrderItems oi ON o.OrderID = oi.OrderID + LEFT JOIN Products p ON oi.ProductID = p.ProductID + GROUP BY o.OrderID + ORDER BY o.OrderDate DESC"; +$result = $conn->query($sql); + +if ($result === false) { + die("Errore nella query: " . $conn->error); +} +?> + + + + + + + Dashboard amministratore - TechStore + + + + +
+ +
+ + + + Benvenuto, + + + +
+
+ + +
+ +
+

Gestione Ordini

+ + num_rows > 0): ?> + + + + + + + + + + + + + + + fetch_assoc()): ?> + + + + + + + + + + + + +
ID OrdineClienteEmailProdottiDataTotaleStatoAzioni
# +
+ + + +
+
+
+ + + +
+
+ +

Nessun ordine trovato.

+ +
+
+ + + + + close(); ?> + + diff --git a/src/assets/style.css b/src/assets/style.css index 5a66723..4b3d3e5 100644 --- a/src/assets/style.css +++ b/src/assets/style.css @@ -319,4 +319,70 @@ form button:hover { .order-details p { margin: 5px 0; color: #666; +} + +/* Stili per la pagina admin di gestione ordini */ +.admin-table { + width: 100%; + border-collapse: collapse; + margin-top: 20px; + background-color: #fff; +} + +.admin-table th, +.admin-table td { + border: 1px solid #ddd; + padding: 12px; + text-align: left; +} + +.admin-table th { + background-color: #f2f2f2; + font-weight: bold; +} + +.admin-table tbody tr:hover { + background-color: #f9f9f9; +} + +.status-select { + padding: 5px 8px; + border: 1px solid #ddd; + border-radius: 4px; + cursor: pointer; +} + +.status-select.status-pending { + background-color: #fff3cd; + color: #212529; +} + +.status-select.status-completed { + background-color: #d4edda; + color: #155724; +} + +.status-select.status-cancelled { + background-color: #f8d7da; + color: #721c24; +} + +.btn-delete { + padding: 5px 10px; + background-color: #dc3545; + color: white; + border: none; + border-radius: 4px; + cursor: pointer; + font-size: 12px; +} + +.btn-delete:hover { + background-color: #c82333; +} + +.admin-table td form { + display: contents; + margin: 0; + padding: 0; } \ No newline at end of file