2014-12-19 78 views
1

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

例如我选择x 3次和y 2

X3 2 Y 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

的效应初探是这里:

{

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++; 
    } 
} 

如果第一项是不一样的操作系统$ 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和唐吨使用$我++;

+0

这是工作(f)@mouradk – huda 2014-12-19 11:42:02