Индивидуальное количество товара в корзине
Храню данные корзины в сессии. При добавлении в корзину из карточки первого товара, товар и количество добавляется корректно. При добавлении следующего товара, количество товара в корзине меняется у всех товаров, включая первый. Как сделать так, чтобы количество менялось индивидуально.
Обработчик:
// получаем переменные из карточки товара (id и количество)
$item_id = $_POST['id'];
$qty = $_SESSION['cart'][$item_id]['qty'] + $_POST['qty'];
//данные для отображения в корзине
$sql = "SELECT * FROM products WHERE id='$item_id'";
if($result = $conn->query($sql)){ foreach($result as $row){
$product_name = $row["name"];
$product_price = $row["price"];
$product_price_sale = $row["saleprice"];
$sql = "SELECT * FROM images WHERE product_id='$item_id'";
if($result = $conn->query($sql)){ foreach($result as $row){ $image = $row["image"]; } } else { echo "Ошибка: " . $conn->error;}
} } else { echo "Ошибка: " . $conn->error;}
if ($product_price_sale == ""){
$finalprice = $product_price . ' р';
} else $finalprice = $product_price_sale . ' р';
//изменение данных сессии
$_SESSION['cart'][$item_id] = ['id' => $item_id, 'image' => $image, 'name' => $product_name, 'qty' => $qty , 'price' => $finalprice];
include "../blocks/cart.php";
?>
Ответы (1 шт):
Автор решения: Владимир Клыков
→ Ссылка
Например так:
// получаем переменные из карточки товара (id и количество)
$item_id = $_POST['id'];
$_SESSION['cart'][$item_id]['qty'] = (int)($_SESSION['cart'][$item_id]['qty']??0) + (int)$_POST['qty'];
//данные для отображения в корзине
$sql = "SELECT * FROM products WHERE id='$item_id'";
if($result = $conn->query($sql)){ foreach($result as $row){
$product_name = $row["name"];
$product_price = $row["price"];
$product_price_sale = $row["saleprice"];
$sql = "SELECT * FROM images WHERE product_id='$item_id'";
if($result = $conn->query($sql)){ foreach($result as $row){ $image = $row["image"]; } } else { echo "Ошибка: " . $conn->error;}
} } else { echo "Ошибка: " . $conn->error;}
if ($product_price_sale == ""){
$finalprice = $product_price . ' р';
} else $finalprice = $product_price_sale . ' р';
//изменение данных сессии
$_SESSION['cart'][$item_id] = ['id' => $item_id, 'image' => $image, 'name' => $product_name, 'qty' => $_SESSION['cart'][$item_id]['qty'] , 'price' => $finalprice];
include "../blocks/cart.php";
?>