Индивидуальное количество товара в корзине

Храню данные корзины в сессии. При добавлении в корзину из карточки первого товара, товар и количество добавляется корректно. При добавлении следующего товара, количество товара в корзине меняется у всех товаров, включая первый. Как сделать так, чтобы количество менялось индивидуально.

Обработчик:

// получаем переменные из карточки товара (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";

?>
→ Ссылка