我在网站上设置了一个购物车,该网站使用名为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;
}
?>
我有什么想法可以删除单个项目吗?
答案 0 :(得分:0)
您可以通过在会话内的数组中存储项目(如下面的
)以更好的方式编写它$_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']; }
答案 1 :(得分:0)
检查出来:
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']
以外的所有项目。还有一件事,在重定向之前填充会话。