2016-10-21 4 views
1

Я пытаюсь сделать простой каталог с добавлением в корзину и заказать, но у меня есть проблема: все работает хорошо, добавляя необходимое количество продукта в корзину покупок , но если я хочу добавить еще один, то ничего не выйдет. Он просто обновляет количество до 1.php Добавить в корзину с заданным количеством

формы:

<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/'); 

ответ

0

Проблема заключается в том, что вы перезаписать весь переменный сеанс с новой записью. Вместо добавления записи в массив.

Попробуйте использовать этот код:

<?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/'); 

С помощью этого кода вы будете иметь массив со всеми записями включены. Я думаю, что это также легче использовать позже.

+0

Спасибо! Я нашел решение: $ _SESSION ['cart'] [$ productId] ['quantity'] + = $ productQuantity; –