2012-05-11 4 views
0

안녕하세요 장바구니가 있지만 내 문제는 여러 항목을 삭제할 때 프로세스가 없습니다.하지만 체크 상자의 항목 하나만 삭제하면 아래 코드가 내 코드에 잘못되었는지 확인하고 싶습니다. : 나는 여러 항목을 확인하고 삭제 버튼, 항목이 삭제되지를 제출하는 경우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; 
} 

삭제 $로 마지막 항목을 남겨 둘 것이다. 너는 시도해 볼 수 있었다

foreach ($cart as $item) { 

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

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

    }  
} 
+0

나는 그것을 놓쳤다. 지금은 괜찮아, 내 질문을 업데이트했다. 고맙습니다. –

+0

업데이트 된 질문에 대한 답변이 업데이트되었습니다. – Robbie

관련 문제