下午,
我的购物车对于网上商店有些困难。在我的cartArr(从我的数据库中获取了我的产品的ID的数组)中,我购买了正确的产品ID。我的产品页面上还有一个购物车,可以在我的cartArr中计算适当数量的物品(到目前为止一直很好)。
当我想展示我的产品时,他只显示我点击的最后一个产品*我买了一些东西。逻辑,因为他在我的会话数组中不记得它。
我知道我的问题是什么,但我无法弄清楚如何解决它。
/*Shoppingcart.php*/
<?php
$id = '';
if(isset($_POST['shoppingCart']['btnSubmit']))
{
$id = $_POST['shoppingCart']['id'];
$productDAO = new ProductDAO();
$result = $productDAO->getProductById($id);
if( in_array($id,$_SESSION['cartArr']))
{
array_push($_SESSION['cartArr'], $id);
echo '<pre>';
print_r('Hallo');
echo '</pre>';
}
}
$smarty -> assign('arrProducts',$result);
$smarty -> assign('id',$id);
$smarty -> assign('cartArr',$_SESSION['cartArr']);
$smarty -> assign('product',$result)
/*Shoppingcart.tpl*/
{foreach $cartArr as $item}
<div class="winkelkarItem">
<img src="{$arrProducts.image}" class="winkelkarImgPosition"
alt="chimay" title="chimay"/>
<ul class="winkelkarBeschrijving">
<li>{$arrProducts.naam}</li>
<li>{$arrProducts.prijs}€</li>
<li><input class="winkelkarAmmount" type="text" value="2"/></li>
<li>7.08€</li>
</ul>
</div>
{/foreach}
/*SQL statement to get my products out of my database in a seperate file ProductDAO*/
public function getProductById($id)
{
try
{
$sql = 'SELECT *
FROM tblProduct
WHERE id = :id';
$stmt = $this->dbh->prepare($sql);
$stmt->bindValue(':id',$id);
$stmt->execute();
$result = $stmt->fetch();
}
catch(PDOException $e)
{
echo $e->getMessage();
}
return $result;
}
?>
提前获取所有帮助。
短: Arrproducts必须进入我的会话 通过foreach我需要制作我的物品@ shoppingcart.tpl 我点击的产品的ID在cartArr。
THX!
答案 0 :(得分:0)
第一次,
if( in_array($id,$_SESSION['cartArr'])) {
array_push($_SESSION['cartArr'], $id);
}
如果$id
位于$_SESSION['cartArr']
,为什么要再推一次?
第二次,“shoppingCart”中您最后插入的项目是$result
(已获取数组),而您的“shoppingCart”位于会话中存储的ID数组中。
因此,在您的模板Shoppingcart.tpl中,当您循环$cartArr
时,$item
是您的“产品”的ID,而不是包含“产品”数据的变量。然后,在foreach
循环中,您放置$arrProducts.attribute
,但$arrProducts
对应于您的上一个项目。
所以你必须得到循环中传递的每个id的数据:
(我不确定聪明的模板语法,但试着理解我的意思)
{$productDAO = new ProductDAO();}
{foreach $cartArr as $item_id}
{$item = $productDAO->getProductById($item_id);}
<div class="winkelkarItem">
<img src="{$item.image}" class="winkelkarImgPosition" alt="chimay" title="chimay"/>
<ul class="winkelkarBeschrijving">
<li>{$item.naam}</li>
<li>{$item.prijs}€</li>
<li><input class="winkelkarAmmount" type="text" value="2"/></li>
<li>7.08€</li>
</ul>
</div>
{/foreach}
编辑:
另一种解决方案,用每个“产品”的数据构建另一个数组,然后将它传递给你tpl。
在“Shoppingcart.php”中:
$productDAO = new ProductDAO();
$items_datas = array();
foreach($_SESSION['cartArr'] as $item_id) {
$items_datas[] = $productDAO->getProductById($item_id);
}
$smarty->assign("items_datas",$items_datas);
在你的“Shoppingcart.tpl”中:
{foreach $items_datas as $item}
<div class="winkelkarItem">
<img src="{$item.image}" class="winkelkarImgPosition" alt="chimay" title="chimay"/>
<ul class="winkelkarBeschrijving">
<li>{$item.naam}</li>
<li>{$item.prijs}€</li>
<li><input class="winkelkarAmmount" type="text" value="2"/></li>
<li>7.08€</li>
</ul>
</div>
{/foreach}