PHP购物车帮助-其他选项

PHP购物车帮助-其他选项,php,cart,shopping,Php,Cart,Shopping,我以前做过购物车,每件商品都没有任何特殊属性,如颜色或大小,但我当前的项目有一个颜色属性。在过去,我使用以产品ID命名的会话变量来保存数量。像这样: 在“我的产品”页面顶部的“包括”页面上: /* initialize all quantities to 0 */ for ($i=0; $i <=$maxID; $i++) { if (!isset($_SESSION['product'.$i])) $_SESSION['product'.$i] = 0; } /* keep

我以前做过购物车,每件商品都没有任何特殊属性,如颜色或大小,但我当前的项目有一个颜色属性。在过去,我使用以产品ID命名的会话变量来保存数量。像这样:

在“我的产品”页面顶部的“包括”页面上:

/* 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];
}
然后在结帐页面上,我使用for循环以$id遍历购物车

但是现在我被卡住了,因为我不仅需要保存每种产品的数量,而且还需要保存颜色,因为物品是一样的。有人能帮我把上面的代码转换成同样的东西吗?还有一个额外的功能,就是跟踪颜色的顺序?例如,我可能会购买一件绿色物品#1和一件蓝色物品#1。由于颜色不同,即使项目编号相同,也必须单独显示。此外,没有数量框,只有一个“添加到购物车”按钮,因此如果您想购买两个相同的商品,您必须按两次“添加到购物车”。因此

$_SESSION['product'.$id] += 1;
而不是

$_SESSION['product'.$id] = $qty;

显然,为了同时跟踪颜色和数量,我需要使用多维数组来保存它们,但我不知道如何初始化它,也不知道如何设置值。任何帮助都将不胜感激。对不起,如果我没有很好地解释我的问题,我现在要花大约17个小时不睡觉来解决这个问题

为什么不把产品的密钥改成这样:

$_SESSION['product'.$i.'_'.$color] += $colorQty;
等等

用于迭代使用


那么它就不会是动态的。每个项目都有不同的颜色选择。我不一定确定$I项是红色的,所以我不能像那样硬编码“\u red”。@JohnO你不需要硬编码,使用数据库中的值就像使用$id一样。$id是一个数字,所以我可以通过for循环进行交互。如何迭代$\u会话['product'.$I.$color]?如果我使用我的普通for循环,它不会区分红色id 1和绿色id 1。你有没有办法在我的第一篇文章中更改我的代码,让我清楚地知道你在说什么?说到PHP,我还是个初学者。我已经编辑了我的答案。但是,我认为所有的组合(ID/颜色)都是已知的,所以您可以创建所有的组合键。然而,这样做购物车不是很好。更好的方法是在数据库中有购物车,在会话中只存储数据库的ID。
$_SESSION['product'.$i.'_'.$color] += $colorQty;
foreach ($_SESSION as $key => $value)
{
   //do something with $_SESSION[$key], which is product0_red, product0_green etc.
}