0

私はいつも答えを探して Web をサーフィンし、スタック オーバーフローします。答えが見つからないときはただ尋ねます。

jquery と php を使用して小さなショッピング カートを作成しました。

私が理解できないバグが1つだけあります。

ユーザーがアイテムを追加すると、アイテムは数量 1 で追加されます。同じアイテムを再度追加すると、数量は 2 になります。

ユーザーがアイテムを選択し、数量が 2 であるとしましょう。ユーザーが削除ボタンを 1 回クリックすると、そのアイテムの数量は 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を有効にするとアイテムを追加すると1ではなく2の数量になり、アイテムを削除して再度カートに追加すると乗算されます数量は 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;
});
4

1 に答える 1

2

カートからアイテムを削除するときに、間違った値の設定を解除しています。

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

必要なのはそれだけです。


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

このちょっとしたコードは、unset()上から電話をかける必要がある場所です。現在のところ、このステートメントは何もしません。

于 2011-05-19T17:57:47.790 に答える