корзина ошибка при удалении предмета - PullRequest
0 голосов
/ 19 мая 2011

Я всегда брожу по Интернету и переполняю стек в поисках ответов, просто спрашиваю, когда не могу найти ответ.

Я создал небольшую корзину с помощью jquery и php.

Есть только одна ошибка, которую я не могу выяснить.

Когда пользователь добавляет элемент, элемент добавляется с помощью кол-во 1. Если он снова добавляет тот же элемент, кол-во становится равным 2 и т. Д.

Допустим, пользователь выбрал элемент, а количество равно 2. Если он нажимает кнопку удаления один раз, количество этого элемента становится 1. Это то, что я хочу, но если он снова нажмет кнопку удаления, элемент будет удален.

Проблема в том, что пользователь добавляет тот же элемент, который он только что удалил. Когда он добавляет его, кол-во для этого элемента становится 4.

Вот код для добавления предмета:

    @$new = $_POST['item'];

    if($new) {
        if(!isset($_SESSION['cart'])) {
            $_SESSION['cart'] = array();
            $_SESSION['items'] = 0;
            $_SESSION['total_price'] = '0.00';
        }

        if(isset($_SESSION['cart'][$new])) {
            $_SESSION['cart'][$new]++;
        } else {
            $_SESSION['cart'][$new] = 1;
        }

    }

а вот код для удаления предмета ..

    @$remove = $_GET['remove'];
    if($remove) {

        if(isset($_SESSION['cart'][$remove])) {
            $_SESSION['cart'][$remove]--;

                foreach ($_SESSION['cart'] as $item => $qty) {
                    if($qty < 1) {
                        unset($_SESSION['cart'][$qty]);
                        unset($_SESSION['cart'][$item]);
                    }
                }

        } else {
            $_SESSION['cart'][$remove];
        }


    }

Я новичок в php и программировании в целом; Я начал учиться 1 месяц назад.

РЕДАКТИРОВАТЬ: проблема с кодом javascript, с отключенным javscript, корзина работает хорошо, с включенным javascript, когда я добавляю элемент, я получаю 2 в количестве вместо 1, и если я удаляю элемент и добавляю его в корзину снова он умножает кол-во от 2 до 4 и т. д.

    $(".shop_cart").submit(function() {
    var data = $(this).serialize();

    $.ajax({
        type: 'post',
        url: 'cart.inc.php',
        data: data,
        cache: false,
        success: function(data) {
            $("#cart").html(data);
        }
    });

    return false;
});

а вот удалить из корзины код

    $(".remove").click(function() {
    var remove = 'remove=' + $(this).attr('id')

        $.ajax({
            type: 'get',
            url: 'cart.inc.php',
            cahce: false,
            data: remove,
            success: function(data) {
                $("#cart").html(data);
            }
        })
    return false;
});

1 Ответ

2 голосов
/ 19 мая 2011

Вы удаляете неправильные значения при удалении товаров из корзины:

unset($_SESSION['cart'][$remove]);

должно быть все, что вам нужно.


    } else {
        $_SESSION['cart'][$remove];
    }

В этом небольшом фрагменте кода вам нужно выполнить вызов unset() сверху. В нынешнем виде это утверждение ничего не делает.

...