как изменить количество добавляемого товара PHP
Всем привет! Я хочу при отправке формы с измененным количеством товара менять ключ "quantity" в массиве. У меня это получается только у того товара, у которого я меняю это значение, у остальных оно не сохраняется и остается равным 1. Например я отправил у "товар1" количество 5, оно сохранилось, а если я отправлю еще раз, но уже у другого товара, то у "товар1" количество сбросится до 1, а у нового перезапишется на указанное. То есть я создаю сессионую переменную и сохраняю туда передаваемое через форму число, а потом меняю у товара, с которым совпал id.
Ответы (1 шт):
Если вы хотите держать данные только в сессии без записи в базу и без использования ajax вам необходим структурированный тип данных (например json). В своем примере вы перезаписываете сессию - так как у сессии есть только ключ и значение. Чтобы хранить массив по ключу - рекомендую воспользоваться форматом JSON вот пример
$count_arr = [];
if($_SESSION['quantity']){
try{
$count_arr = json_decode($_SESSION['quantity'],true);
} catch (Exception $e) {}
}
$count_arr[$id] = $quantity;
$_SESSION['quantity'] = json_encode($count_arr,JSON_UNESCAPED_UNICODE);
//exampe
foreach($count_arr as $key_id=>$value_quantity){
echo 'у товара с id='.$key_id.' количество '.$value_quantity;
}
но проще клиенту показывать
<input type="number" name="product-<?php echo $product_id; ?>"
value="<?php echo $product_quantity; ?>"/>
тогда и на сервере вы бы использовали explode('-',$product_name);
а сессия выглядела бы так $_SESSION['product-2']=5;$_SESSION['product-81']=10;



