我有以下問題。合併PHP購物車中的值
我在PHP會話中存儲購物車,然後加載它以顯示購物車中的物品。
問題是,目前,我看到每個項目沒有合併,這意味着如果一個項目在購物車中添加了兩次,它將顯示兩次。
我該如何合併itemId的結果?
if(is_array($_SESSION['cart']))
{
$max=count($_SESSION['cart']);
for($i=0;$i<$max;$i++)
{
$pid=$_SESSION['cart'][$i]['itemId'];
$q=$_SESSION['cart'][$i]['qty'];
if($q==0) continue;
$query2 = $con -> prepare("SELECT * FROM item_descr WHERE id_item = :idItem");
$query2-> bindValue (':idItem',$pid);
$query2->execute();
$row2 = $query2->fetch(PDO::FETCH_ASSOC);
?>
<div class="checkoutItems">
<span class='itemNameChck'><?php echo $row2['name']; ?> </a></span>
<span class="itemQtyChck"><?php echo $row2['price']; ?> </span>
<span class="itemQtyChck"><?php echo $q; ?> </span>
<span class="itemQtyChck"><?php $totalPerItem = $q * $row2['price']; echo $totalPerItem; ?> </span>
</div>
<?php
}
}
這是我如何將商品加入購物車:
function addtocart($pid,$q)
{
if($pid<1 or $q<1) return;
if(is_array($_SESSION['cart']))
{
$max=count($_SESSION['cart']);
$_SESSION['cart'][$max]['itemId']=$pid;
$_SESSION['cart'][$max]['qty']=$q;
$max=count($_SESSION['cart']);
}
else
{
$_SESSION['cart']=array();
$_SESSION['cart'][0]['itemId']=$pid;
$_SESSION['cart'][0]['qty']=$q;
$max=count($_SESSION['cart']);
}
//}
}
感謝
當將項目添加到購物車,你應該確認它是否已經存在,如果是這樣,添加的量爲上述項目,而不是添加項目。 – legrandviking 2013-02-19 21:38:13
另一種選擇可能是通過itemId而不是索引($ i)爲它們編制索引。這樣,重複是不可能的。 – adomnom 2013-02-19 21:42:01
@legrandviking - 剛剛添加了添加項目的功能。我確實檢查數組是否存在... – samyb8 2013-02-19 21:43:55