#php #session #post #cart
#php #сессия #Публикация #Корзина
Вопрос:
Я пытаюсь создать простой каталог с добавлением в корзину и оформлением заказа, но у меня проблема: все работает хорошо при добавлении необходимого количества товара в корзину, но если я хочу добавить еще один, то ничего не получается. Он просто обновляет количество до 1.
Форма:
<form action="buy.php" method="post">
<input type="hidden" name="productId" value="<?php echo $product['id']; ?>">
<?php if ($product['quantity'] === 0): ?>
<button type="submit" name="submit" disabled="true">Not available</button>
<?php else: ?>
<inputtype="number" name="productQuantity" value="1">
<button type="submit" name="submit">Add to cart</button>
<?php endif; ?>
</form>
buy.php
<?php
session_start();
if (isset($_POST['submit'])) {
$productId = $_POST['productId'];
$productQuantity = $_POST['productQuantity'];
$_SESSION['cart'][$productId] = [
'quantity' => $productQuantity
];
}
header('Location: http://localhost:8000/');
Ответ №1:
Проблема в том, что вы перезаписываете всю переменную сеанса новой записью. Вместо добавления записи в массив.
Попробуйте использовать этот код:
<?php
session_start();
if (isset($_POST['submit'])) {
$productId = $_POST['productId'];
$productQuantity = $_POST['productQuantity'];
$_SESSION['cart'][] = array('id' => $productId, 'quantity' => $productQuantity);
}
header('Location: http://localhost:8000/');
С помощью этого кода у вас будет массив со всеми включенными записями. Я думаю, что это также проще использовать позже.
Комментарии:
1. Спасибо! Я нашел решение: $_SESSION[‘cart’][$ProductID][‘quantity’] = $ProductQuantity;