2011-09-19 87 views
1

我有这个购物车购物车问题

function modifyCart($action, $id){ 

$kori = cart(); 
$exp = explode("|", $kori); 

for($i=0;$i<count($exp);$i++){ 
$pilk = explode("-", $exp[$i]); 
if($id == $pilk[0]){ 
    switch($action){ 
     case "increase": // lisätään määrää 
     break; 

     case "decrease": // vähennetään määrää 
     break; 

     case "remove": // poistetaan 
     unset($exp[$i]); 
    } 
} 
} 

$valmis = array_merge($exp, $pilk); 

$muuta = implode("|", $valmis); 

$_SESSION["cart"] = $muuta; 


} 

车存放像productno-qty|productno-qty 我怎么能得到工作的功能..感谢帮助

+0

dont'护理括号{}他们没有在这里工作 – Olli

+3

什么是$科里和车(),和他们持什么样的阵列中的数据呢?从这段代码中不清楚。 –

+2

这是什么问题?什么不行? –

回答

1

这是一个可怕的车。但是,如果仅停留在这条赛道上,你想这样:

function modifyCart($action, $id){ 

$kori = cart(); 
$exp = explode("|", $kori); 

foreach ($key, $product in $exp) { 
    $tmp = explode('-', $product); 
    $productNo = $tmp[0]; 
    $productQty = $tmp[1]; 

    if ($id == $productNo) { 
     if ($action == 'remove') { 
      unset($exp[$key]); 
      return implode('|', $exp); 
     } else if ($action == 'increase') { 
      $productQty += 1; 
      $exp[$key] = $productNo . '-' $productQty; 
      return implode('|', $exp); 
     } else if ($action == 'decrease') { 
      $productQty -= 1; 
      if ($productQty == 0) { 
       unset($exp[$key]); 
      } else { 
       $exp[$key] = $productNo . '-' $productQty; 
      } 
      return implode('|', $exp); 
     } else { 
      // throw exception because unrecognized action 
     } 
    } 
    // handle case where named product was not in the cart here. 
    return implode('|', $exp); 
} 
+1

我给你的疑点利益,并假设您要添加的功能,你收不回趋向或重构:-)这里 –

+0

同样的问题别人的遗产代码库:为什么你认为it's糟糕的方式制作购物车? – Olli

+0

@Olli它并不是一个坏车。只知道有很多边缘情况来考虑,并确保所有的代码处理所有的边缘情况 - 通过定义触摸底层数据结构(如饼干是如何处理的)基本功能做得最好。然而,未来的编码人员必须学习并始终遵守这些规则,以防止漏洞百出的错误。为了避免重新发明轮子,请查看某种其他类型的序列化或json编码,其中角色案例由其他人处理,未来的程序员可以查看边缘案例的处理方式。 –