0

嗨,我有一个购物车,但我的问题是当我删除多个项目时它不会处理但是如果我只删除复选框上的一个项目它工作得很好这是我下面的代码我想弄清楚我的代码是否有问题:

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

如果我检查多个项目并提交删除按钮,则该项目没有被删除,但如果我只检查一个项目已删除。

感谢您的帮助,非常感谢。

4

1 回答 1

0

您在代码中有 name="items" ,但您正在寻找 $_POST['itemid'] - 它们应该彼此相同吗?看起来您对会话值感到困惑。


发布您的编辑:

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

将仅将最后的项目保留为 $delete。你可以试试

foreach ($cart as $item) { 

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

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

    }    
} 
于 2012-05-11T04:08:47.163 回答