query("SELECT * FROM categories WHERE status = 1 ORDER BY name ASC"); $categories = $catStmt->fetchAll(PDO::FETCH_ASSOC); } catch (Exception $e) { $categories = []; } // --- 4. ADD PRODUCT LOGIC --- if(isset($_POST['add_product'])) { $title = trim($_POST['title']); $category = $_POST['category']; $price = $_POST['price']; $desc = $_POST['description']; $upload_dir_img = "../uploads/products/"; $upload_dir_file = "../uploads/files/"; if (!is_dir($upload_dir_img)) { @mkdir($upload_dir_img, 0777, true); } if (!is_dir($upload_dir_file)) { @mkdir($upload_dir_file, 0777, true); } $img_name = time() . '_' . basename($_FILES['image']['name']); $file_name = time() . '_' . basename($_FILES['file']['name']); // DB Paths $img_target = $upload_dir_img . $img_name; $file_target = $upload_dir_file . $file_name; $db_file_path = "uploads/files/" . $file_name; if (move_uploaded_file($_FILES['image']['tmp_name'], $img_target) && move_uploaded_file($_FILES['file']['tmp_name'], $file_target)) { $sql = "INSERT INTO products (title, category, description, price, image, file_path) VALUES (?, ?, ?, ?, ?, ?)"; try { if($pdo->prepare($sql)->execute([$title, $category, $desc, $price, $img_name, $db_file_path])) { $msg = "Product Added Successfully!"; $msg_type = "success"; } } catch(PDOException $e) { $msg = "DB Error: " . $e->getMessage(); $msg_type = "danger"; } } else { $msg = "Upload Failed! Check folder permissions."; $msg_type = "danger"; } } // --- 5. DELETE PRODUCT LOGIC --- if(isset($_GET['delete'])) { $id = $_GET['delete']; $stmt = $pdo->prepare("SELECT image, file_path FROM products WHERE id = ?"); $stmt->execute([$id]); $p = $stmt->fetch(); if($p) { if(file_exists("../uploads/products/".$p['image'])) { @unlink("../uploads/products/".$p['image']); } if(file_exists("../".$p['file_path'])) { @unlink("../".$p['file_path']); } $pdo->prepare("DELETE FROM products WHERE id = ?")->execute([$id]); $msg = "Product deleted successfully!"; $msg_type = "warning"; } } ?>