购物车删除项目时的错误

时间:2011-05-19 17:43:52

标签: php jquery cart shopping

我总是在网上冲浪并堆叠溢出寻找答案,我只是问我何时找不到答案。

我使用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和编程的新手;我在一个月前开始学习。

编辑:问题在于javascript代码,javscript已禁用购物车工作正常,启用javascript时我添加了一个项目,我在qty而不是1中得到2,如果我删除该项目并将其添加到购物车再次将qty从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 个答案:

答案 0 :(得分:2)

从购物车中移除商品时,您取消了错误的值:

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

应该就是您所需要的一切。


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

这段代码是您需要从上方进行unset()调用的地方。就目前而言,这句话什么也没做。