我之前已经购买过购物车,因为每件商品都没有任何特殊属性,如颜色或尺寸,但我当前的项目有颜色属性。在过去,我使用以产品ID命名的Session变量来保存数量。像这样:
在我的产品页面顶部的包含页面中:
/* initialize all quantities to 0 */
for ($i=0; $i <=$maxID; $i++) {
if (!isset($_SESSION['product'.$i]))
$_SESSION['product'.$i] = 0;
}
/* keeps a running total of the number of products to be purchased */
for ($j=0; $j<=$maxID; $j++) {
$cartCount += $_SESSION['product'.$j];
}
在产品页面上我有:
if (isset($_POST['addtocart'])) {
$_SESSION['product'.$id] += 1;
header ("Location: products.php?id=$id");
}
然后在结帐页面上,我使用for循环通过$ id来浏览购物车。
然而现在我被卡住了,因为我不仅要保存每件产品的数量,还需要保存颜色,项目#是相同的。任何人都可以帮助我将上面的代码转换成可以做同样事情的东西,还增加了跟踪所订购颜色的功能吗?例如,我可能会购买一件绿色商品#1和一件蓝色商品#1。这些必须单独显示,因为颜色不同,即使项目编号相同。此外,没有数量框,只有一个添加到购物车按钮,所以如果你想购买两个相同的项目,你必须按两次添加到购物车。因此
$_SESSION['product'.$id] += 1;
而不是
$_SESSION['product'.$id] = $qty;
显然,为了跟踪颜色和数量,我需要使用多维数组来保存两者,但我无法弄清楚如何初始化它或设置值。任何帮助将不胜感激。对不起,如果我没有很好地解释我的问题,我现在大约17个小时没有睡觉,现在试图解决这个问题!
答案 0 :(得分:0)
为什么不改变产品的关键字如下:
$_SESSION['product'.$i.'_'.$color] += $colorQty;
等
用于迭代使用
foreach ($_SESSION as $key => $value)
{
//do something with $_SESSION[$key], which is product0_red, product0_green etc.
}