最模板 - 外贸网站建设,外贸网站模板

最模板

当前位置: 首页 > 建站教程 > php教程 >

一个比较完善的购物车类

时间:2014-06-09 16:40来源: 作者: 点击: 次
前不久做到一个项目需要用到购物车,考虑到可能经常用到,所以把它封装成一个类,以便以后调用,你可以简单的把这个类稍微修改一下就可以用在自己的程序里了. ?php /*************************

前不久做到一个项目需要用到购物车,考虑到可能经常用到,所以把它封装成一个类,以便以后调用,你可以简单的把这个类稍微修改一下就可以用在自己的程序里了.

  1. <?php 
  2. /*****************************************************************************/ 
  3. /*                                                                           */ 
  4. /* file type:      包含文件,建议后缀为.inc                                  */ 
  5. /*                                                                           */ 
  6. /* file name:      cart.inc                                                  */ 
  7. /*                                                                           */ 
  8. /* Description:    定义一个购车类                                            */ 
  9. /*                                                                           */ 
  10. /* Func list :     class cart                                                */ 
  11. /*                                                                           */ 
  12. /* author :        bigeagle                                                  */ 
  13. /*                                                                           */ 
  14. /* date :          2000/12/24                                                */ 
  15. /*                                                                           */ 
  16. /* History:        2000/12/24  finished                                      */ 
  17. /*                                                                           */ 
  18. /*****************************************************************************/ 
  19.  
  20. //定义本文件常量 
  21. define("_CART_INC_" , "exists") ; 
  22.  
  23. /*购物车类*/ 
  24. class TCart 
  25. { 
  26.  
  27.   var $SortCount;            //商品种类数 
  28.   var $TotalCost;            //商品总价值 
  29.  
  30.   var $Id;                   //每类商品的ID(数组) 
  31.   var $Name;                 //每类商品的名称(数组) 
  32.   var $Price;                //每类商品的价格(数组) 
  33.   var $Discount;             //商品的折扣(数组) 
  34.   var $GoodPrice ;           //商品的优惠价格(数组) 
  35.   var $Count;                //每类商品的件数(数组) 
  36.   var $MaxCount ;            //商品限量(数组) 
  37.  
  38.   //******构造函数 
  39.   function TCart() 
  40.   { 
  41.    $this->SortCount=0; 
  42.  
  43.    session_start(); //初始化一个session 
  44.    session_register('sId'); 
  45.    session_register('sName'); 
  46.    session_register('sPrice'); 
  47.    session_register('sDiscount'); 
  48.    session_register('sGoodPrice') ; 
  49.    session_register('sCount') ; 
  50.    session_register('sMaxCount') ; 
  51.  
  52.    $this->Update(); 
  53.    $this->Calculate(); 
  54.   } 
  55.  
  56.   //********私有,根据session的值更新类中相应数据 
  57.   function Update() 
  58.   { 
  59.     global $sId,$sName,$sPrice,$sCount,$sDiscount,$sMaxCount,$sGoodPrice; 
  60.  
  61.    if(!isset($sId) or !isset($sName) or !isset($sPrice) 
  62.       or !isset($sDiscount) or !isset($sMaxCount) 
  63.       or !isset($sGoodPrice) or !isset($sCount)) return; 
  64.  
  65.    $this->Id        =$sId; 
  66.    $this->Name      =$sName; 
  67.    $this->Price     =$sPrice; 
  68.    $this->Count     =$sCount; 
  69.    $this->Discount  = $sDiscount ; 
  70.    $this->GoodPrice = $sGoodPrice ; 
  71.    $this->MaxCount  = $sMaxCount ; 
  72.  
  73.    //计算商品总数 
  74.    $this->SortCount=count($sId); 
  75.  
  76.   } 
  77.  
  78.   //********私有,根据新的数据计算每类商品的价值及全部商品的总价 
  79.   function Calculate() 
  80.   { 
  81.    for($i=0;$i<$this->SortCount;$i++) 
  82.    { 
  83.      /*计算每件商品的价值,如果折扣是0 ,则为优惠价格*/ 
  84.      $GiftPrice = ($this->Discount[$i] == 0 ? $this->GoodPrice : 
  85.                    ceil($this->Price[$i] * $this->Discount[$i])/100 ); 
  86.      $this->TotalCost += $GiftPrice * $this->Count[$i] ; 
  87.    } 
  88.   } 
  89.  
  90.  
  91.   //**************以下为接口函数 
  92.  
  93.   //*** 加一件商品 
  94.   // 判断是否蓝中已有,如有,加count,否则加一个新商品 
  95.   //首先都是改session的值,然后再调用update() and calculate()来更新成员变量 
  96.   function Add($a_ID , $a_Name , $a_Price , $a_Discount , 
  97.                $a_GoodPrice , $a_MaxCount , $a_Count) 
  98.   { 
  99.    global $sId , $sName , $sCount , $sPrice , $sDiscount , 
  100.           $sGoodPrice , $sMaxCount ; 
  101.  
  102.    $k=count($sId); 
  103.    for ($i=0; $i<$k; $i++) 
  104.    { //先找一下是否已经加入了这种商品 
  105.      if($sId[$i]==$a_ID) 
  106.      { 
  107.       $sCount[$i] += $a_Count ; 
  108.       break; 
  109.      } 
  110.    } 
  111.    if($i >= $k) 
  112.    { //没有则加一个新商品种类 
  113.     $sId[]        = $a_ID; 
  114.     $sName[]      = $a_Name; 
  115.     $sPrice[]     = $a_Price; 
  116.     $sCount[]     = $a_Count; 
  117.     $sGoodPrice[] = $a_GoodPrice ; 
  118.     $sDiscount[]  = $a_Discount ; 
  119.     $sMaxCount[]  = $a_MaxCount ; 
  120.    } 
  121.  
  122.    $this->Update(); //更新一下类的成员数据 
  123.    $this->Calculate(); 
  124.   } 
  125.  
  126.   //移去一件商品 
  127.   function Remove($a_ID) 
  128.   { 
  129.    global $sId , $sName , $sCount , $sPrice , $sDiscount , 
  130.           $sGoodPrice , $sMaxCount ; 
  131.  
  132.    $k = count($sId); 
  133.    for($i=0; $i < $k; $i++) 
  134.    { 
  135.      if($sId[$i] == $a_ID) 
  136.      { 
  137.        $sCount[$i] = 0 ; 
  138.        break; 
  139.      } 
  140.    } 
  141.  
  142.    $this->Update(); 
  143.    $this->Calculate(); 
  144.   } 
  145.  
  146.   //改变商品的个数 
  147.   function ModifyCount($a_i,$a_Count) 
  148.   { 
  149.    global $sCount; 
  150.  
  151.    $sCount[$a_i] = $a_Count ; 
  152.    $this->Update(); 
  153.    $this->Calculate(); 
  154.   } 
  155.  
  156.  
  157.   /*************************** 
  158.   清空所有的商品 
  159.   *****************************/ 
  160.   function RemoveAll() 
  161.   { 
  162.    session_unregister('sId'); 
  163.    session_unregister('sName'); 
  164.    session_unregister('sPrice'); 
  165.    session_unregister('sDiscount'); 
  166.    session_unregister('sGoodPrice') ; 
  167.    session_unregister('sCount') ; 
  168.    session_unregister('sMaxCount') ; 
  169.    $this->SortCount = 0 ; 
  170.    $this->TotalCost = 0 ; 
  171.   } 
  172.  
  173.  
  174.   //是否某件商品已在蓝内,参数为此商品的ID 
  175.   function Exists($a_ID) 
  176.   { 
  177.    for($i=0; $i<$this->SortCount; $i++) 
  178.    { 
  179.      if($this->Id[$i]==$a_ID) return TRUE; 
  180.    } 
  181.    return FALSE; 
  182.   } 
  183.  
  184.   //某件商品在蓝内的位置 
  185.   function IndexOf($a_ID) 
  186.   { 
  187.    for($i=0; $i<$this->SortCount; $i++) 
  188.    { 
  189.     if($this->Id[$i]==$id) return $i; 
  190.    } 
  191.    return 0; 
  192.   } 
  193.  
  194.   //取一件商品的信息,主要的工作函数 
  195.   //返回一个关联数组, 
  196.   function Item($i) 
  197.   { 
  198.    $Result[id]        = $this->Id[$i]; 
  199.    $Result[name]      = $this->Name[$i]; 
  200.    $Result[price]     = $this->Price[$i]; 
  201.    $Result[count]     = $this->Count[$i]; 
  202.    $Result[discount]  = $this->Discount[$i] ; 
  203.    $Result[goodprice] = $this->GoodPrice[$i] ; 
  204.    $Result[maxcount]  = $this->MaxCount[i] ; 
  205.    return $Result; 
  206.   } 
  207.  
  208.   //取总的商品种类数 
  209.   function CartCount() 
  210.   { 
  211.    return $this->SortCount; 
  212.   } 
  213.  
  214.   //取总的商品价值 
  215.   function GetTotalCost() 
  216.   { 
  217.    return $this->TotalCost; 
  218.   } 
  219. }  
  220. ?> 
(责任编辑:admin)
------分隔线----------------------------
栏目列表
推荐内容