Php 购物车阵列和会话
好吧,我有点问题。我试图添加产品到购物车的产品作为选项颜色等,但我似乎无法得到它的权利。如果我只是点击“添加到购物车”,每次都会显示并计数,但如果我更改颜色,它就会开始出错。救命啊,小伙子们,姑娘们!我已经为此工作了一段时间Php 购物车阵列和会话,php,arrays,session,Php,Arrays,Session,好吧,我有点问题。我试图添加产品到购物车的产品作为选项颜色等,但我似乎无法得到它的权利。如果我只是点击“添加到购物车”,每次都会显示并计数,但如果我更改颜色,它就会开始出错。救命啊,小伙子们,姑娘们!我已经为此工作了一段时间 if(isset($_POST['submit'])){ $id = $_POST['id']; $sleeve = $_POST['sleeve'];
if(isset($_POST['submit'])){
$id = $_POST['id'];
$sleeve = $_POST['sleeve'];
$colour = $_POST['colour'];
$size = $_POST['size'];
$action = $_POST['action'];
$quantity = 1;
}
if(!isset($_SESSION['cart'][$id])){
$_SESSION['cart'][$id] = array($id, $colour, $size, $quantity);
}
else{
if(isset($_SESSION['cart'][$id])){ // if the session as already been set then..
while(list($key, $value) = each($_SESSION['cart'])){ // while loop to chech to content of the session..
if($value[0] == $id && $value[1] == $colour && $value[2] == $size){ // checking to see if the session content is the same..
$quantity = $value[3] +=1;
$_SESSION['cart'][$id] = array($id, $colour, $size, $quantity); // if it is the same then add this..
}// if is ==
else{
$quantity +=1;
$_SESSION['cart'][$id][] = array($id, $colour, $size, $quantity); // is session is not the same do this..
}//else if it is not ==
}// while
}// if isset
}// else isset session
似乎您正在对照一个项目检查购物车中的每个项目,如果当前项目将在第一次迭代时匹配,那么它不应该跳出循环并设置项目存在的标志,以便在循环后增加项目数量,否则在循环后添加另一个实例 但是,在下次添加产品的另一个实例并通过if部分进行检查时,添加具有不同颜色的产品的另一个实例的方式仍然不起作用 在此处,您将根据$id密钥插入项:
if(!isset($_SESSION['cart'][$id])){
$_SESSION['cart'][$id] = array($id, $colour, $size, $quantity);
}
在else部分中,当项目id相同但属性不同时,您将产品添加到购物车的另一个子数组中:
$_SESSION['cart'][$id][] = array($id, $colour, $size, $quantity); // is session is not the same do this..
因此,您应该将每个产品/项目添加为:
$_SESSION['cart'][$id][] = array($id, $colour, $size, $quantity);
在这两种情况下,要么是产品的第一个变体,要么是其他变体
但是,如果您的价格因变化而不同,则为每个项目的每个变化使用不同的产品实例id
如果我在任何时候都不清楚,那么请询问,如果我不理解你的问题,也请告诉我