PDO::ERRMODE_EXCEPTION ]); } catch (PDOException $e) { die("فشل الاتصال: " . $e->getMessage()); } // ================== دوال ================== function escape($str) { return htmlspecialchars($str, ENT_QUOTES, 'UTF-8'); } function getLatestProducts($pdo) { return $pdo->query(" SELECT p.*, pv.price, vi.image_url FROM products p JOIN product_variants pv ON pv.product_id = p.id LEFT JOIN variant_images vi ON vi.variant_id = pv.id GROUP BY p.id ORDER BY p.id DESC LIMIT 8 ")->fetchAll(PDO::FETCH_ASSOC); } function getCategories($pdo) { return $pdo->query(" SELECT c.*, COUNT(p.id) as count FROM categories c LEFT JOIN products p ON p.category_id = c.id GROUP BY c.id LIMIT 6 ")->fetchAll(PDO::FETCH_ASSOC); } function getBestSellers($pdo) { return $pdo->query(" SELECT p.*, SUM(oi.quantity) as total, pv.price, vi.image_url FROM order_items oi JOIN product_variants pv ON oi.variant_id = pv.id JOIN products p ON pv.product_id = p.id LEFT JOIN variant_images vi ON vi.variant_id = pv.id WHERE oi.created_at >= NOW() - INTERVAL 30 DAY GROUP BY p.id ORDER BY total DESC LIMIT 8 ")->fetchAll(PDO::FETCH_ASSOC); } $products = getLatestProducts($pdo); $categories = getCategories($pdo); $best = getBestSellers($pdo); $cartCount = isset($_SESSION['cart']) ? count($_SESSION['cart']) : 0; ?>
= $c['count'] ?> منتج
= $p['price'] ?> جنيه
= $p['price'] ?> جنيه