2015-04-15 200 views
0

我創建了一個非常簡單的購物車,只是項目s添加到它,並從中刪除項目並清空購物車太多,現在我知道我有很多的問題,在我的代碼,但我想解決這些問題以及PHP從購物車裏刪除商品

第一次看到我的代碼

if (isset($_SESSION['cart'])) { 
    foreach ($_SESSION['cart'] as $c) { 
     echo $c['name'] . '<br />'; 
     echo $c['price'] . '<br />'; 
     echo '<a href="?pid=17&rc=' . $c['code'] . '">Remove item</a><br />'; 
    } 
} 


if (isset($_POST['buy'])) { 
    //header("Location:?pid=18&pl=" . $pl); 
    if (isset($_POST['buy'])) { 
     $getData = $db->prepare('SELECT * FROM plans WHERE id=?'); 
     $getData->bind_param('i', $pl); 
     if ($getData->execute()) { 
      $res = $getData->get_result(); 
      if (($pn = $res->fetch_object()) !== null) { 
       $proCode = rand(1, 100); 

       $item['name'] = $pn->plan_name; 
       $item['price'] = $pn->price_dollar; 
       $item['code'] = $proCode; 
       $_SESSION['cart'][] = $item; 
      } 
     } 
    } 
} 

echo '<a href="?pid=17&ac=empty">Empty Cart</a>'; 

if (isset($_GET['rc']) && isset($_SESSION['cart'])) { 
    $rem = $_GET['rc']; 
    $ses = $_SESSION['cart']; 

    foreach ($_SESSION['cart'] as $cartItem) { 
     if ($cartItem["code"] == $rem) { 
      unset($ses[$rem]); 
     } 
    } 

    /*if (($key = array_search($rem, $ses)) !== false) { 
     unset($ses[$key]); 
    }*/ 
    var_dump($ses); 
} 

if (isset($_GET['ac']) == 'empty' && isset($_SESSION['cart'])) { 
    unset($_SESSION['cart']); 
} 

對於現在增加新產品是工作的罰款與我,但問題 來當我試圖從插入符號刪除一個項目它返回回注意到似乎發生了,在車仍然存在項目

+0

很難回答這個問題沒有看到你的購物車如何作爲一個整體。這可能是幾個不同的問題,但是如果沒有看到如何調用這個腳本,很難確定可能發生什麼問題。我懷疑是在你刪除,你從$ SES,但不是$ _SESSION刪除的項目,所以當你的車重新加載,該項目仍處於會話。不能確定,但​​沒有看到整個模塊。 – xJoshWalker

回答

0

試圖將刪除週期改成這樣:

foreach ($_SESSION['cart'] as $key=>$cartItem) { 
     if ($cartItem["code"] == $rem) { 
      unset($_SESSION['cart'][$key]); 
     } 
1

你是你重置$ses變量未$_SESSION ...

請看看更新的代碼,你甚至需要使用forloop,你可以unset變量,因爲我下面

if (isset($_GET['rc']) && isset($_SESSION['cart'])) 
{ 
    $rem = $_GET['rc'];  
    if(isset($_SESSION['cart'][$rem])) 
    { 
     unset($_SESSION['cart'][$rem]); 
    } 
} 

完成讓我知道,如果這可以幫助您

編輯

請更新您購買產品的功能BEL嗷嗷的..你正在使用auto increament key for array ..它應該是主鍵(在這裏你的產品代碼)

if (isset($_POST['buy'])) { 
    //header("Location:?pid=18&pl=" . $pl); 
    if (isset($_POST['buy'])) { 
     $getData = $db->prepare('SELECT * FROM plans WHERE id=?'); 
     $getData->bind_param('i', $pl); 
     if ($getData->execute()) { 
      $res = $getData->get_result(); 
      if (($pn = $res->fetch_object()) !== null) { 
       $proCode = rand(1, 100); 

       $item['name'] = $pn->plan_name; 
       $item['price'] = $pn->price_dollar; 
       $item['code'] = $proCode; 
       $_SESSION['cart'][$proCode] = $item; 
      } 
     } 
    } 
} 
+0

指出對不起相同的結果被刪除和該項目仍然存在通過'ses'被追平'$ _SESSION [「購物車」]' – Mikky

+0

@Mikky請編輯內容的方式...... –