Удаление одного элемента из корзины сеанса PHP
У меня есть корзина для покупок, настроенная на веб-сайте, который использует файл cart.php для выполнения всей работы. Функция "добавить" работает отлично, и я также могу очистить корзину, но не удалить ни одного элемента
Ссылка для удаления выглядит следующим образом:
<a href='cart.php?action=delete&id=$cartId'>delete</a>
который создает ссылку, похожую на эту: cart.php?action=delete&id=1
Файл cart.php находится здесь:
<?php
require_once('Connections/ships.php');
// Include functions
require_once('inc/functions.inc.php');
// Start the session
session_start();
// Process actions
$cart = $_SESSION['cart'];
$action = $_GET['action'];
$items = explode(',',$cart);
if (count($items) > 5)
{
header("Location: shipinfo_full.php") ;
}
else
{
switch ($action)
{
case 'add':
if ($cart)
{
$cart .= ','.$_GET['ship_id'];
}
else
{
$cart = $_GET['ship_id'];
}
header("Location: info_added.php?ship_id=" . $_GET['ship_id']) ;
break;
case 'delete':
if ($cart)
{
$items = explode(',',$cart);
$newcart = '';
foreach ($items as $item)
{
if ($_GET['ship_id'] != $item)
{
if ($newcart != '')
{
$newcart .= ','.$item;
}
else
{
$newcart = $item;
}
}
}
$cart = $newcart;
}
header("Location: info.php?ship_id=" . $_GET['ship_id']) ;
break;
$cart = $newcart;
break;
}
$_SESSION['cart'] = $cart;
}
?>
Любые идеи, как я могу просто удалить один элемент?
2 ответа
Решение
Проверь это:
case 'delete':
if ($cart)
{
$items = explode(',',$cart);
$newcart = array();
foreach ($items as $item)
{
if ($_GET['ship_id'] != $item)
{
$newcart[] = $item;
}
}
$_SESSION['cart'] = implode(',', $newcart);
}
header("Location: info.php?ship_id=" . $_GET['ship_id']) ;
break;
это заполнит newcart
массив со всеми элементами кроме $_GET['ship_id']
, Еще одна вещь, заполните сессию перед перенаправлением.
Вы можете написать это лучше, храня элементы в массиве внутри сессии, как показано ниже
$_SESSION['cart'] = array(); // cart is initially empty
Теперь добавление товаров в корзину
$_SESSION['cart'][] = array('name' => 'some name', 'price' => 100);
Удаление товара из корзины
unset($_SESSION['cart'][22]); // assuming that 22 is the item ID
Список предметов
$cart = $_SESSION['cart'];
forearch($cart as $item){
echo $item['name']; }