私はいつも答えを探して 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;
});