购物车会话重复数量

时间:2014-12-19 11:21:50

标签: php session

我有会话存储项目信息的数组,每个项目都有我想要的数量,当用户选择相同的项目时只需增加数量而不是再次添加它。 当我增加一个项目的数量时,它没关系,但是当我增加许多项目的数量时,只有第一个项目可以,其他项目正在增加,但同时它们会重复数量1

示例i选择x 3次和y 2

X3 2年 1Y 1Y

    //if it's the first item
if ( !isset ($_SESSION['Cart']))
    {
$CartItem = array ($I_ID,$I_Name,$I_Price,$I_img,$quantity);
$_SESSION['Cart'][] = $CartItem;
header('Location:salad.php');
}
//if the session contains items check if the item already exist 
else if (isset ($_SESSION['Cart']))
    {   
        foreach( $_SESSION['Cart'] as $y )
        {   
            if( $y[1] == $I_Name )
                { 
                    $_SESSION['Cart'][$i][4]++; //increment quantity 
                    header('Location:salad.php');
                    break;
                }

            else{
                $CartItem = array($I_ID,$I_Name,$I_Price,$I_img,$quantity);
                $_SESSION['Cart'][] = $CartItem;
                header('Location:salad.php');
                }
                $i++;
        }   
    }

>

1 个答案:

答案 0 :(得分:1)

响应在这里:

{

    foreach( $_SESSION['Cart'] as $y )
    {   
        if( $y[1] == $I_Name )
            { 
                $_SESSION['Cart'][$i][4]++; //increment quantity 
                header('Location:salad.php');
                break;
            }

        else{
            $CartItem = array($I_ID,$I_Name,$I_Price,$I_img,$quantity);
            $_SESSION['Cart'][] = $CartItem;
            header('Location:salad.php');
            }
            $i++;
    }   
}

如果第一项与os $ i_NAME不同,则添加一个项目,这就是为什么你有很多项目。

我会做类似的事情:

    {   

        $addItem = true;
        foreach( $_SESSION['Cart'] as $y )
        {   
            if( $y[1] == $I_Name )
                { 
                    $_SESSION['Cart'][$i][4]++; //increment quantity 
                    $addItem = false;
                    header('Location:salad.php');

                    break;
                }                    
                $i++;
        }
        if($addItem){

                $CartItem = array($I_ID,$I_Name,$I_Price,$I_img,$quantity);
                $_SESSION['Cart'][] = $CartItem;
                header('Location:salad.php');
                }
         }   
    }

你可以通过参考& $ y更好地渲染它,而不是使用$ i ++;