2014-02-23 59 views
0

我設法讓我的所有產品添加選項,每個項目和每個出現在單獨的行,並提交正確。購物車「刪除」不再工作

see my previous question

現在,當我嘗試刪除已設置爲它選擇的項目,它不會刪除任何東西。我添加的代碼是像這樣:

switch($action) { 
    case "add": 

     $_SESSION['options'.$productID] = $optionsSelected; 

     $key = $productID . ":" . base64_encode(serialize($optionsSelected)); 

     $_SESSION['cart'][$key]++; 

     header('location: /shop/cart'); 

    break; 

然後我刪除的情況是,像這樣:

 case "remove": 

      $key = $_GET['key']; 
      $product = explode(':', $key); 
      $productId = $product[0]; 
      $optionsSelected = unserialize(base64_decode($product[1])); 

      $_SESSION['cart'][$key]--; 

      if($_SESSION['cart'][$key] == 0) 
      { 
       unset($_SESSION['cart'][$key]); 
      } 

      header('location: /shop/cart'); 

     break; 

刪除功能被觸發一個像每個選項下面的URL:

<a href="/shop/actions/cart_actions.php?action=remove&id=<?php echo $item['id']; ?>&key=<?php echo $key; ?>" class="btn btn-danger"> 

現在,如果我刪除了一個沒有設置選項的產品,它就會被移除。如果產品有選項,它不會刪除。

更新

當我<?php var_dump($_SESSION['cart']); ?>我得到如下:

array(2) { ["433771:YToyOntpOjA7czo1OiJSdW50cyI7aToxO3M6NzoiU2l4bGV0cyI7fQ=="]=> int(1) ["433771:YToyOntpOjA7czoyMToiU3dlZGlzaCBGaXNoIEFzc29ydGVkIjtpOjE7czozMToiQmVhcnkgQmx1ZSBSYXNiZXJyeSBHdW1taSBCZWFycyI7fQ=="]=> int(1) } 
+0

**仍**無解決方案! – user3271851

+0

顯然世界上沒有人知道......太好了。 – user3271851

回答

0

對不起,我沒有檢查了兩天的現場。我測試了上面的代碼,並且相關部分按預期工作,但我確實看到一些問題。您是否嘗試過var_dump($_SESSION)以查看事情是否正確設置?

嘗試此操作,它假定$productID$optionsSelected根據需要定義在上面的某處,並且會話已啓動。測試工作。

<?php 

switch ($action) { 
    case "add": 

     $key = $productID . ":" . base64_encode(serialize($optionsSelected)); 

     // ensure the cart array exists 
     if (!isset($_SESSION['cart'])) { 
      $_SESSION['cart'] = array(); 
     } 

     // create entry, or add to it 
     if (!isset($_SESSION['cart'][$key])) { 
      $_SESSION['cart'][$key] = 1; 
     } else { 
      $_SESSION['cart'][$key]++; 
     } 

     header('location: /shop/cart'); 
     // always exit after sending a location header, or the rest of the script will continue to execute first 
     exit; 
     break; 

    case "remove": 

     $key = $_GET['key']; 

     if (isset($_SESSION['cart'], $_SESSION['cart'][$key])) { 
      if ($_SESSION['cart'][$key] > 1) { 
       $_SESSION['cart'][$key]--; 
      } else { 
       unset($_SESSION['cart'][$key]); 
      } 
     } 

     header('location: /shop/cart'); 
     exit; 
     break; 
} 
+0

將在幾分鐘內嘗試。 – user3271851

+0

這仍然沒有刪除它。檢查我更新的答案var_dump(); – user3271851

+0

你也可以'var_dump($ _ GET)'? – rjdown