1
商品IDを使用する代わりに、カート内の各商品のインデックスは0から始まります。カート内の各商品には、カート内のボタンの削除/削除ボタンがあります。そのボタンをクリックすると、値がPHPスクリプトにAJAXを経由して掲載されます。商品はカートから削除されません
if(isset($_POST['indexToRemove']) && $_POST['indexToRemove'] !== "") {
$key_to_remove = $_POST['indexToRemove'];
if(count($_SESSION['cart_array']) <=1) {
unset($_SESSION['cart_array']);
} else {
unset($_SESSION['cart_array'][$key_to_remove]);
}
}
私はクリックで()indexToRemoveをCONSOLE.LOG場合は、コンソールに正しい値を示しています。ただし、アイテムはセッションから削除されることはなく、コンソールにはトラブルシューティングに役立つエラーはありません。ここで
jQueryのです:次のようにする必要があり、クライアント側では
if(!isset($_SESSION['cart_array'])) {
$itemsInCart = 0;
$response['total'] = 0;
echo json_encode($response);
} else {
$featured = "Yes";
$i=0;
foreach($_SESSION['cart_array'] as $each_item) {
$item_id = $each_item['item_id'];
$colour = $each_item['colour'];
$size = $each_item['size'];
$stmt = $link->prepare("SELECT `product_name`, `price`, `pic_name` FROM `products` as `p` INNER JOIN `product_images` as `pi` ON p.`id` = pi.`product_id` WHERE p.`id` = ? AND `featured` = ?");
$stmt->bind_param("is", $item_id, $featured);
$stmt->execute();
$result = $stmt->get_result();
$numRows = $result->num_rows;
if($numRows > 0) {
while($row = $result->fetch_assoc()) {
$product_name = sanitize($row['product_name']);
$price = sanitize(money_format('%.2n', $row['price']));
$subtotal = money_format('%.2n', $each_item['quantity'] * $price);
$pic_name = $row['pic_name'];
$cartTotal = $subtotal + $cartTotal;
$quantity = $each_item['quantity'];
$cart_details[] = array(
"product_name" => $product_name,
"price" => $price,
"subtotal" => $subtotal,
"pic_name" => $pic_name,
"each_item" => $quantity,
"item_id" =>$item_id,
"i" => $i,
"colour" => $colour,
"size" => $size,
);
$i++;
}
}
$stmt->close();
}
$response['total'] = $cartTotal;
$response['cart'] = $cart_details;
echo json_encode($response);
}
私は1つのアイテムを持っている場合、それは私はあなたが求めているかどうか確認する方法がわからない作品とアイテムが – user8463989
削除されます。私がconsole.log()をindexToRemoveから外した場合、最初のカートアイテムの値は0、Seanceアイテムの値は1、2番目のアイテムの値は – user8463989
@ user8463989です。PHPで$ key_to_removeの値をダンプできますか?あなたの配列とキーが有効であるかどうかテストします私が** $ key = "{$ product_id}。{$ color}。{$ size}"; **を見て、これが数字ではないと思ったからです。 – gaetanoM