0) { try { $pdo = db(); // Fetch product details including colors $stmt = $pdo->prepare("SELECT name, price, image_url, colors FROM products WHERE id = ?"); $stmt->execute([$product_id]); $product = $stmt->fetch(PDO::FETCH_ASSOC); if ($product) { // --- START COLOR VALIDATION --- $available_colors = []; if (!empty($product['colors'])) { $colors_raw = explode(',', $product['colors']); foreach ($colors_raw as $c) { $trimmed_c = trim($c); if ($trimmed_c) $available_colors[] = $trimmed_c; } } if (count($available_colors) > 1 && empty($color)) { // For multi-color products, a color must be selected. $_SESSION['flash_message'] = [ 'type' => 'warning', 'message' => 'برای افزودن این محصول، انتخاب یکی از رنگ‌ها الزامی است.' ]; header('Location: product.php?id=' . $product_id); exit; } // --- END COLOR VALIDATION --- // If item is already in the cart (same product ID and color), just update the quantity. if (isset($_SESSION['cart'][$cart_item_id])) { $_SESSION['cart'][$cart_item_id]['quantity'] += $quantity; } else { // Otherwise, add the new item to the cart. $_SESSION['cart'][$cart_item_id] = [ 'product_id' => $product_id, 'name' => $product['name'], 'price' => $product['price'], 'image_url' => $product['image_url'], 'quantity' => $quantity, 'color' => $color ]; } $_SESSION['flash_message'] = [ 'type' => 'success', 'message' => 'محصول با موفقیت به سبد خرید اضافه شد!' ]; } else { $_SESSION['flash_message'] = ['type' => 'error', 'message' => 'محصول یافت نشد.']; } } catch (PDOException $e) { error_log("Cart Add Error: " . $e->getMessage()); $_SESSION['flash_message'] = [ 'type' => 'error', 'message' => 'مشکلی در افزودن محصول به سبد خرید رخ داد.' ]; } } // Redirect back to the previous page (likely the product page) to show the flash message. header('Location: ' . ($_SERVER['HTTP_REFERER'] ?? 'shop.php')); exit; case 'update': if ($quantity > 0) { if (isset($_SESSION['cart'][$cart_item_id])) { $_SESSION['cart'][$cart_item_id]['quantity'] = $quantity; } } else { // If quantity is 0 or less, remove the item. unset($_SESSION['cart'][$cart_item_id]); } break; case 'remove': if (isset($_SESSION['cart'][$cart_item_id])) { unset($_SESSION['cart'][$cart_item_id]); } break; } // For 'update' and 'remove' actions, redirect to the cart page to show changes. header('Location: cart.php'); exit;