php购物车删除项目

时间:2015-02-25 09:57:17

标签: php shopping-cart

我正在尝试为PHP项目构建购物车,但是,我遇到了一个问题。当我将项目添加到购物车会话时,我将它们显示在购物车摘要中。

  

项目1
项目2
项目3

每当我删除一个项目时,它下面的其他项目都会删除。 例如,如果我删除第2项,则第3项也会删除。 如果我删除 第1项, 第2项和第3项也会删除。

更新cart.php

<code>

if(isset($_GET["removep"]) && isset($_GET["return_url"]) && isset($_SESSION["products"]))
{

$prod_id    = $_GET["removep"]; 
$return_url     = base64_decode($_GET["return_url"]); 
foreach($_SESSION["products"] as $cart_itm)
{

if($cart_itm["prod_id"]!=$prod_id)
{
$products[] = array('prod_name'=>$cart_itm["prod_name"],'prod_id'=>$cart_itm["prod_id"], 'prod_price'=>$cart_itm["prod_price"], 'prod_percent'=>$cart_itm["prod_percent"], 'prod_qty'=>$cart_itm["prod_qty"]);
}
else
{
    $_SESSION["products"] = $products;
}

}
header('Location:'.$return_url);
}

</code>

widget_summary.php

<code>



if(isset($_SESSION['products']))
 {
 $total = 0;
 echo '<ul>';
 foreach ($_SESSION["products"] as $cart_itm)
 {
 $new_price = discount($cart_itm["prod_price"], $cart_itm["prod_percent"]);
 echo '<table class="cart-items">';
 echo    '<tr>';
 echo        '<td>'.$cart_itm["prod_name"].'</td>';
 echo        '<td><span class="remove-item right"><a href="update-cart.php?    removep='.$cart_itm["prod_id"].'&return_url='.$current_url.'">&times;</a></span></td>';
 echo    '</tr>';
 echo    '<tr>';
 echo        '<td id="qty">Qty: '.$cart_itm["prod_qty"].' &times;    $'.$new_price.' = </td>';
            $sub = $cart_itm["prod_qty"] * $new_price;
echo        '<td class="right subtotal">$'.number_format($sub,2).'</td>';
echo    '</tr>';
echo '</table>';
        $subtotal = ($new_price*$cart_itm["prod_qty"]);
        $total = number_format($total + $subtotal, 2);
}

echo '<table class="tbl-summary-footer">';
echo '<tr>';
echo    '<td> Total </td>';
echo    '<td><span class="price_now right"><strong>$'.$total.'</strong>  </span></td>';
echo '</tr>';
echo '<tr>';
echo    '<td><span class="empty-cart"><a href="update-cart.php?emptycart=1&return_url='.$current_url.'">Clear Cart</a></span></td>';
echo    '<td><span class="right"><a href="shopping-cart.php">Check-out!</a></span></td>';
echo '</tr>';
echo '</table>';
echo '</ul>';
}
else
{
echo 'Cart is empty.';
}

</code>

1 个答案:

答案 0 :(得分:1)

在foreach循环之前声明$ products 您需要在循环后设置会话密钥“products”。