2016-07-23 68 views
3

我试图从存储会话中的数组中删除项目。我已经尝试了以下,但它倒过来,实际上增加了更多!在会话中取消设置数组中的项目

因此,这里是我的foreach该产品显示一个按钮的车,从车中移除:

foreach ($_SESSION['products'] as $product) { 
    $name = $product['name']; 
    $id = $product['id']; 
    $price = $product['price']; 
    $img = $product['img']; 
    $sku = $product['sku']; 
    $description = $product['description']; 

    echo '<a href="single_product.php?product_id=' . $product['products'] . '">'; 
    echo "<img src='$img'><br />"; 
    echo "Product: $name<br />"; 
    echo "Price: $price | ID: $id<br />"; 
    echo "$description"; 
    echo '</a><br /><br />'; 
    echo '<form action="removeItem.php" method="post"> 
      <input type="hidden" name="product_id" value="' . $product['id'] . '" /> 
      <button name="removeItem">Remove</button> 
      </form>';  

    $sum += $price; 

} 

这里是形式删除它,但它实际上是增加了更多的,当你点击删除:

$_SESSION['products'][] = $itemid; 
$id = $_POST['id']; 

unset($_SESSION['products'][$id]); 
header("location:basket.php"); 
+0

你只是取消设置单品里面的ID,你可能想要取消整个产品。 – Martijn

+0

这是正确的是,我很努力地看到我在这里做错了什么... – PhpDude

回答

2

尝试这样:

$product_id = $_POST["id"]; 
foreach($_SESSION['products'] as $key=>$product) { 
    if($product['id'] == $product_id) { 
     unset($_SESSION['products'][$key]); 
     break; 
    } 
} 
+0

它给了我dooooom的白色屏幕! Sublime正在标记'unset($ _ SESSION ['products'] [$ key];'作为错误 – PhpDude

+0

您复制的行中存在拼写错误,应该是:unset($ _ SESSION ['products'] [$ id]) ; – Martijn

+0

嗯所以我纠正了错误,但项目仍然留在篮子里... – PhpDude