我已经为具有不同属性的购物车中的商品创建了一个会话数组。每个项目都有一个删除按钮,仅删除该项目。
创建我使用的会话
session_start();
if (isset($_POST['submit']))
{
$front = $_POST['front_select'];
$back = $_POST['back_select'];
$side = $_POST['side_select'];
$oid = $_POST['orderID'];
$pid = $_POST['pid'];
$cart = array (
'oid' => $oid,
'front' => $front,
'back' => $back,
'pid' => $pid,
'side' => $side
);
$_SESSION['cart'][] = $cart;
print_r($_SESSION['cart']);
}
用于显示阵列
if(isset($_SESSION['cart'])){
$i = 0;
foreach ($_SESSION['cart'] as $item) {
if(isset($item['oid']) ){
<div class="col-xs-12 col-sm-12 col-md-12 col-lg-12">
<?php echo $i;?>
<h5>ORDER ID : <b id="oid">#<?php echo $item['oid']; ?></b> | ORDER TYPE : <b id="product_type">BLOUSE</b> | PRODUCT ID : <b id="product_id"><?php echo $item['pid']; ?></b></h5>
<hr>
</div>
<a id="remove_btn" href="removefromcart.php?id=<?php echo $i; ?>" class="btn btn-danger waves-effect waves-light">Remove</a>
}
}
}
removefromcart.php PAGE
<?php
session_start();
if (isset($_GET['id'])){
$id = $_GET['id'];
unset($_SESSION['cart'][$id]);
unset($cart[$id]);
$_SESSION["cart"] = array_values($_SESSION["cart"]);
header('Location: cart.php');
echo $id ;
}
else
{
echo "ID NOT FOUND";
}
?>
每当我点击删除按钮页面时由于标题刷新但没有删除。 我该怎么办请帮助我真的相信Stack溢出来帮助noob编码器。
我在代码下面使用以创建数组
if (isset($_POST['submit']))
{
$front = $_POST['front_select'];
$back = $_POST['back_select'];
$side = $_POST['side_select'];
$oid = $_POST['orderID'];
$pid = $_POST['pid'];
$cart = array (
'oid' => $oid,
'front' => $front,
'back' => $back,
'pid' => $pid,
'side' => $side
);
$_SESSION['oid'] = $oid;
$_SESSION['cart'][$oid] = $cart;
print_r($_SESSION['cart']);
}
并获得
Array ( [0] => Array ( [oid] => IT574deb7ddbfe3 [front] => IT1_front_6 [back] => IT1_back_2 [pid] => IT1 [side] => IT1_side_7 ) [IT574ded04c8af2] => Array ( [oid] => IT574ded04c8af2 [front] => IT1_front_6 [back] => IT1_back_3 [pid] => IT1 [side] => IT1_side_2 ) )
删除按钮代码
<div class="row">
<a id="remove_btn" href="removefromcart.php?id=<?php echo $item['oid']; ?>" class="btn btn-danger waves-effect waves-light">Remove</a>
</div>
数组第一个键是0,这给我带来了问题。在我的购物车中,第一项始终保留,但其删除按钮网址ID具有不同的ID。
答案 0 :(得分:2)
您的删除无效,因为您在构建购物车时没有使用该$ id作为索引:
$_SESSION['cart'][] = $cart;
^--generate new ID based on current length of array
因此,如果您的数组中有3个项目,并添加另一个项目,则其新索引将为3
,即使其$ id恰好是9999或其他任何内容。
您需要在任何地方使用该$ id作为索引:
$_SESSION['cart'][$id] = $cart;
^^^---
然后您的unset()
将按预期工作。