我已经创建了一个添加到购物车功能我不确定我是否已经完美发展。
当我尝试添加新的会话购物车项目时,它没有为我设置数量,pid
正在正确插入,但我无法存储的其他两个选项,如果我尝试创建变量$_SESSION['cart']['pid']
。
它工作正常,但当我尝试添加另一个会话变量$_SESSION['cart']['option1']
时,它无法正常工作
if(isset($_POST['cart'])) {
$pid = $_POST['product_id'];
$qty = $_POST['qty'];
$opt1 = $_POST['opt1'];
$opt2 = $_POST['opt2'];
if(isset($_SESSION['cart']['pid'][$pid])) {
$_SESSION['cart']['pid'][$pid]++;
$_SESSION['cart']['opt1'][$pid] = $opt1;
$_SESSION['cart']['opt2'][$pid] = $opt2;
if($qty > 1) {
$_SESSION['cart']['pid'][$pid] = $qty;
}
} else {
$_SESSION['cart']['pid'][$pid] = 1;
if($qty > 1) {
$_SESSION['cart']['pid'][$pid] = $qty;
}
}
}
<form method="POST" action="result.php">
<input type="text" name="product_id" placeholder="Product Id" />
<input type="text" name="qty" placeholder="Quantity" />
<input type="text" name="opt1" placeholder="A" />
<input type="text" name="opt2" placeholder="b" />
<input type="submit" name="cart" value="Add To Cart" />
</form>
如果我在正确的轨道上并且正确开发了添加购物车功能,请告诉我
答案 0 :(得分:1)
我认为您很困惑,特别是当您添加已存储的会话产品时:
当您的购物车中已有product_id时,请写下:
$_SESSION['cart']['pid'][$pid]++;
...所以你从你的pid会话索引中丢失了product_id。
也许你应该只在另一个pid中添加数量 - &gt;变量...而不是改变pid值。
if(isset($_POST['cart'])) {
$pid = $_POST['product_id'];
$qty = $_POST['qty'];
$opt1 = $_POST['opt1'];
$opt2 = $_POST['opt2'];
// Create the prodcut_id array if it does not exist
if(!isset($_SESSION['cart']['pid'][$pid])) {
$_SESSION['cart']['pid'][$pid] = array();
}
// Is the same item already stored? (same opt1 and opt2)
$sameItem = false;
if (!empty($_SESSION['cart']['pid'][$pid])) {
foreach ($_SESSION['cart']['pid'][$pid] as $key => $product) {
// Same options item?
if ($product['opt1'] == $opt1 &&
$product['opt2'] == $opt2) {
$sameItem = $key;
}
}
}
if ($sameItem !== false) {
// Change the quantity
$_SESSION['cart']['pid'][$pid][$sameItem]['qty'] += $qty;
} else {
// Store the item as new array key
array_push($_SESSION['cart']['pid'][$pid],
array('qty' => $qty, 'opt1' => $opt1, 'opt2' => $opt2);
}
}
顺便问一下,你正在使用session_start()吗?