2013-07-27 69 views
-2

我在網站上設置了一個購物車,該網站使用名爲cart.php的文件來完成所有工作。 「添加」功能完美的作品,我也能清空購物車,但不能刪除單個項目從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

你是否符合你的命名?在OP中你稱它爲'id',但是你的代碼正在尋找'ship_id',而不是... –

+1

嗨,這不是Stack Overflow應該如何工作的。您需要將一些*知識和努力帶到桌面。據我所知,這是複製和粘貼代碼的第四個問題,主要是要求社區爲您完善和修復它。 –

+0

謝謝湯姆 - 真的很有幫助!佩卡,試圖學習,因爲我做的事情,所以如果你想建議我嘗試的地方,很高興聽 – user2406993

回答

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']。還有一件事,在重定向之前填充會話。

+0

謝謝你的 – user2406993

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']; }