2014-12-19 2 views
1

У меня есть хранилища сессий для хранения информации об элементах, у каждого элемента есть количество, которое я хочу, когда пользователь выбирает одни и те же элементы, просто увеличивая количество, а не добавляя его снова. , когда я увеличиваю количество для одного элемента, это нормально, но когда я увеличиваю количество для многих предметов, это нормально для первого, другие увеличиваются, но в то же время они дублируются с количеством 1cart session дублировать количество

Пример i выбирает x 3 раз и у 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

réponse находится здесь:

{

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'); 
       } 
     } 
    } 

И сделать его лучше со ссылкой на & $ у и не используйте $ я ++;

+0

Это работа (f) @mouradk – huda