Php 购物车删除项目时会出现错误

Php 购物车删除项目时会出现错误,php,jquery,cart,shopping,Php,Jquery,Cart,Shopping,我总是在网上冲浪,寻找答案,我只是在找不到答案时问 我使用jquery和php构建了一个小型购物车 只有一个bug我想不出来 当用户添加项目时,该项目将添加数量1。如果他再次添加相同的项目,数量将变为2,依此类推 $(".shop_cart").submit(function() { var data = $(this).serialize(); $.ajax({ type: 'post', url: 'cart.inc.php',

我总是在网上冲浪,寻找答案,我只是在找不到答案时问

我使用jquery和php构建了一个小型购物车

只有一个bug我想不出来

当用户添加项目时,该项目将添加数量1。如果他再次添加相同的项目,数量将变为2,依此类推

    $(".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;
});
假设用户选择了一个项目,数量为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];
        }


    }
这是从购物车中删除的代码

    $(".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;
});

从购物车中删除项目时未设置错误的值:

unset($_SESSION['cart'][$remove]);
这应该是你所需要的



这一小段代码就是您需要从上面放置
unset()
调用的地方。就目前情况而言,此声明没有任何作用。

请更仔细地解释您的问题,我无法理解这一点“当用户添加刚删除的同一项目时,问题id,该项目的数量变为4”!假设用户刚进入站点,会话变量为空,则用户将一个项目添加到购物车,该项目的数量将变为1,但随后他将其从购物车中删除,但如果他再次添加,则数量将变为2,而不是1。您是否在两个php文件中使用相同的会话处理代码?删除后是否保存会话状态?我问题中的所有php代码都在一个php文件中。是的,我尝试过删除测试的Cookie,但仍然存在相同的问题如果你的意思是我需要从if中删除unset并将其置于int中,则我执行了此操作,并且仍然存在相同的问题,我尝试将unset置于if和else lol中仍然没有什么问题,可能是添加新项目的代码有问题。不,代码看起来不错。但是,如果从购物车中删除“4”项,然后添加其他内容使其成为“5”计数,那么您没有正确地从购物车中删除该项。PHP不记得你有4个,除非那4个还在会话中。所以你说错误是当用户删除一个项目时,它没有正确地删除它,如果是这样的话,也许我需要取消设置数量?是的。在进行任何购物车操作之前和之后,执行
print\r($\u SESSION['cart'])
以查看发生了什么。
    } else {
        $_SESSION['cart'][$remove];
    }