2012-05-11 62 views
0

嗨我有一個購物車,但我的問題是當我刪除多個項目它不會處理,但如果我只刪除一個項目上的複選框它工作得很好這裏是我的代碼下面我想弄清楚,如果我的代碼有什麼問題:如何刪除php會話中的多個項目?

$cart = $_SESSION['items']; 

if(isset($_POST['del'])) { 

    if ($cart) { 
    $newcart = array(); 
    foreach ($cart as $item) { 

    foreach ($_POST['itemid'] as $del) { 
     $delete = $del; 
    } 

    if ($del != $item) { 

      if ($newcart != '') { 
      $newcart[] = $item; 
      } else { 
      $newcart[] = $item; 
      } 

    } 


    } 
    $cart = $newcart; 
    } 

} 

$_SESSION['items'] = $cart; 

這裏是我的形式:

<form action="cart.php" method="post"> 
<table> 
<tr> 
<td><input type="checkbox" name="itemid[]" value="1"></td><td>Item 1</td><td>5</td> 
</tr> 
<tr> 
<td><input type="checkbox" name="itemid[]" value="2"></td><td>Item 2</td><td>5</td> 
</tr> 
<tr> 
<td><input type="checkbox" name="itemid[]" value="3"></td><td>Item 3</td><td>5</td> 
</tr> 
<tr> 
<td><input type="checkbox" name="itemid[]" value="4"></td><td>Item 4</td><td>5</td> 
</tr> 
<tr> 
<td colspan="2"><input type="submit" name="del" value="Delete"></td> 
</tr> 
</table> 
</form> 

如果我檢查多個項目,並提交了刪除按鈕,該項目沒有刪除,但如果我只檢查一個項目中刪除。

謝謝你的幫助,非常感謝。

回答

0

你在代碼中有name =「items」,但是你正在尋找$ _POST ['itemid'] - 那些應該是彼此相同的?看起來你對會話價值感到困惑。


發表您的編輯:

foreach ($_POST['itemid'] as $del) { 
    $delete = $del; 
} 

將只留下最後一個項目爲$刪除。你可以嘗試

foreach ($cart as $item) { 

    if (!in_array($item, $_POST['itemid'])) { 

     if ($newcart != '') { 
      $newcart[] = $item; 
     } else { 
      $newcart[] = $item; 
     } 

    }  
} 
+0

對不起,我錯過了它。現在我沒事,我已經更新了我的問題。謝謝。 –

+0

已更新的答案以應付更新的問題。 – Robbie