2016-07-23 65 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