Почему пропадают товары из корзины после перезагрузки страницы?
Добрый вечер! Реализую добавление товара без перезагрузки. Вот что получилось:
// добавление в корзину
$goods_id = abs((int)$_GET['goods_id']);
addtocart($goods_id);
$_SESSION['total_sum'] = total_sum($_SESSION['cart']);
// кол-во товара в корзине + защита от ввода несуществующего ID товара
$_SESSION['total_quantity'] = 0;
foreach($_SESSION['cart'] as $key => $value){
if(isset($value['price'])){
// если получена цена товара из БД - суммируем кол-во
$_SESSION['total_quantity'] += $value['qty'];
}else{
// иначе - удаляем такой ID из сессии (корзины)
unset($_SESSION['cart'][$key]);
}
}
redirect();
/* ===Сумма заказа в корзине + атрибуты товара===*/
function total_sum($goods){
global $connection;
$total_sum = 0;
$str_goods = implode(',',array_keys($goods));
$query = "SELECT goods_id, name, price
FROM goods
WHERE goods_id IN ($str_goods)";
$res = mysqli_query($connection, $query) or die(mysqli_error());
while($row = mysqli_fetch_assoc($res)){
$_SESSION['cart'][$row['goods_id']]['name'] = $row['name'];
$_SESSION['cart'][$row['goods_id']]['price'] = $row['price'];
$total_sum += $_SESSION['cart'][$row['goods_id']]['qty'] * $row['price'];
}
return $total_sum;
}
/* ===Сумма заказа в корзине +
атрибуты товара===*/
<?php if($_SESSION['total_quantity']): ?>
Товаров в корзине:<br />
<span id="bought"><?=$_SESSION['total_quantity']?></span> на сумму <span id="sum"><?=$_SESSION['total_sum']?></span> руб.
<img src="<?=TEMPLATE?>images/korzinaON.png" class="korzinaON" />
<a href="#"><img src="<?=TEMPLATE?>images/oformit.png" class="oformit" alt="Оформить заказ" /></a>
<?php else: ?>
<span class="offK">Корзина пуста</span>
<img src="<?=TEMPLATE?>images/korzinaOFF.png" class="korzinaOFF" />
<?php endif; ?>
/* ===Добавление в корзину=== */
function addtocart($goods_id){
if(isset($_SESSION['cart'][$goods_id])){
// если в массиве cart уже есть добавляемый товар
$_SESSION['cart'][$goods_id]['qty'] += 1;
return $_SESSION['cart'];
}else{
// если товар кладется в корзину впервые
$_SESSION['cart'][$goods_id]['qty'] = 1;
return $_SESSION['cart'];
}
}
/* ===Добавление в корзину=== */
Ссылка с ценой.
<p>Цена : <span><?=$product['price']?> р.</span></p>
<a class="buyitem" href="?view=addtocart&goods_id=<?=$product['goods_id']?>"><img class="addtocard-index" src="<?=TEMPLATE?>images/addcard-table.jpg" alt="Добавить в корзину" /></a>
Вот js:
$(".buyitem").click(function(){
var url = $(this).attr("href"); // при клике на ссылку считываем href
var regprice = /[\d]+$/;
var price= $(this).closest(".product-table").find("span").text();
price = parseInt(price,10);
//Считаем полное количество купленных товаров и полную цену
var total_items = parseInt($("#bought").text(),10)+1;
var total_price = parseInt($("#sum").text(),10)+price;
//записываем то, что посчитали в соответствующие места на странице
$("#bought").text(total_items);
$("#sum").text(total_price);
//url ссылки отправляем методом get на сервер - эффект будет такой же, как если бы пользователь перешел по ссылке
$.get(url);
return false; //предотвращаем переход по ссылке = перезагрузку страницы
});
Добавляет в корзину без перезагрузки, но после обновления страницы пропадают все товары из корзины.
Источник: Stack Overflow на русском