php Добавить в корзину с заданным количеством

#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;