Your Shopping Basket
$message): ?>Your basket is empty.
Start Shopping= htmlspecialchars($item['name']) ?>
$= number_format($item['price'], 2) ?>
prepare('SELECT name, stock_quantity FROM products WHERE id = ?'); $stmt->execute([$productId]); $product = $stmt->fetch(); if ($product && $product['stock_quantity'] > 0) { if (isset($_SESSION['basket'][$productId])) { // Prevent adding more than available stock if ($_SESSION['basket'][$productId] < $product['stock_quantity']) { $_SESSION['basket'][$productId]++; } else { $_SESSION['message']['warning'] = "Cannot add more of this item. Not enough stock for " . $product['name']; } } else { $_SESSION['basket'][$productId] = 1; } } else { $_SESSION['message']['danger'] = "Cannot add item. Not enough stock for " . $product['name']; } } break; case 'update': $quantity = $_POST['quantity'] ?? 1; if ($productId && $quantity > 0) { // Check stock $stmt = $pdo->prepare('SELECT name, stock_quantity FROM products WHERE id = ?'); $stmt->execute([$productId]); $product = $stmt->fetch(); if ($product && $quantity <= $product['stock_quantity']) { $_SESSION['basket'][$productId] = (int)$quantity; } else { $_SESSION['message']['danger'] = "Cannot update quantity. Not enough stock for " . $product['name']; } } else if ($productId && $quantity <= 0) { unset($_SESSION['basket'][$productId]); } break; case 'remove': if ($productId) { unset($_SESSION['basket'][$productId]); } break; } // Redirect to avoid form resubmission $redirect_url = $_POST['return_url'] ?? 'basket.php'; header('Location: ' . $redirect_url); exit; } // Fetch product details for items in basket $basketItems = []; $totalPrice = 0; if (!empty($_SESSION['basket'])) { $productIds = array_keys($_SESSION['basket']); $placeholders = implode(',', array_fill(0, count($productIds), '?')); $stmt = $pdo->prepare("SELECT id, name, price, description, stock_quantity FROM products WHERE id IN ($placeholders)"); $stmt->execute($productIds); $products = $stmt->fetchAll(PDO::FETCH_ASSOC | PDO::FETCH_GROUP); foreach ($_SESSION['basket'] as $productId => $quantity) { if (isset($products[$productId])) { $product = $products[$productId][0]; $itemPrice = $product['price'] * $quantity; $totalPrice += $itemPrice; $basketItems[] = [ 'id' => $productId, 'name' => $product['name'], 'price' => $product['price'], 'quantity' => $quantity, 'stock_quantity' => $product['stock_quantity'], 'total' => $itemPrice ]; } } } ?>
Your basket is empty.
Start Shopping$= number_format($item['price'], 2) ?>