2012-07-20 141 views
1

好的,我遇到了這個問題。我試圖將產品添加到購物車的產品作爲選項顏色等,但我似乎無法做到正確。如果我點擊「添加到購物車」,它會每次都會計數,但是如果我改變顏色,那麼它就會出錯。幫助,男生和女生!一直在這方面工作了一段時間。購物車陣列和會話

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 

回答

0

好像你正在檢查車對一個項目的每個項目,如果目前的項目將在第一次迭代匹配,那麼它不應該走出循環,並設置標誌,產品目前循環之後的話,那增量項目數量在循環後添加另一個實例。

但是,如果您將添加另一個產品實例,並且將通過您的if部分進行檢查,那麼您下次再添加具有不同顏色的產品的其他實例的方式仍然無效。

這裏要插入項目針對的$ id鍵:

if(!isset($_SESSION['cart'][$id])){ 
         $_SESSION['cart'][$id] = array($id, $colour, $size, $quantity);  
        } 

而在其他部分時,項目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。

如果我在任何時候都不清楚,那麼請問,也請告訴我如果我沒有理解你的問題。