走过平凡人生、留下平凡足迹 注册 | 登陆

PHP购物车类

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

Tags: php, 技巧, 教程

« 上一篇 | 下一篇 »

Trackbacks

点击获得Trackback地址,Encode: UTF-8 点击获得Trackback地址,Encode: GB2312 or GBK 点击获得Trackback地址,Encode: BIG5

发表评论

评论内容 (必填):