2012-05-11 9 views
0

こんにちは私はショッピングカートを持っていますが、私の問題は複数のアイテムを削除したときに処理されることはありませんが、チェックボックスの項目を1つだけ削除すると、ここではうまくいきます。 :私は、複数の項目をチェックし、削除ボタン、アイテムが削除されなかったを提出した場合PHPセッションで複数のアイテムを削除するには?

<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> 

が、私は一つだけをチェックするとアイテムは削除:

$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; 

は、ここに私のフォームです。

ご協力いただきありがとうございます。

答えて

0

コードにname = "items"がありますが、$ _POST ['itemid']を探しています - それらは同じである必要がありますか?あなたがセッションの価値と混同しているように見えます。


ポストあなたの編集:

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

は削除$としてのみLASTアイテムを残します。あなたは試すことができる

foreach ($cart as $item) { 

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

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

    }  
} 
+0

私はそれを逃した。今、私は大丈夫です、私は私の質問を更新しました。ありがとうございました。 –

+0

更新された質問に対処するための回答が更新されました。 – Robbie

関連する問題