前不久做到一个项目需要用到购物车,考虑到可能经常用到,所以把它封装成一个类,以便以后调用,你可以简单的把这个类稍微修改一下就可以用在自己的程序里了.
- <?php
 - /*****************************************************************************/
 - /* */
 - /* file type: 包含文件,建议后缀为.inc */
 - /* */
 - /* file name: cart.inc */
 - /* */
 - /* Description: 定义一个购车类 */
 - /* */
 - /* Func list : class cart */
 - /* */
 - /* author : bigeagle */
 - /* */
 - /* date : 2000/12/24 */
 - /* */
 - /* History: 2000/12/24 finished */
 - /* */
 - /*****************************************************************************/
 - //定义本文件常量
 - define("_CART_INC_" , "exists") ;
 - /*购物车类*/
 - class TCart
 - {
 - var $SortCount; //商品种类数
 - var $TotalCost; //商品总价值
 - var $Id; //每类商品的ID(数组)
 - var $Name; //每类商品的名称(数组)
 - var $Price; //每类商品的价格(数组)
 - var $Discount; //商品的折扣(数组)
 - var $GoodPrice ; //商品的优惠价格(数组)
 - var $Count; //每类商品的件数(数组)
 - var $MaxCount ; //商品限量(数组)
 - //******构造函数
 - function TCart()
 - {
 - $this->SortCount=0;
 - session_start(); //初始化一个session
 - session_register('sId');
 - session_register('sName');
 - session_register('sPrice');
 - session_register('sDiscount');
 - session_register('sGoodPrice') ;
 - session_register('sCount') ;
 - session_register('sMaxCount') ;
 - $this->Update();
 - $this->Calculate();
 - }
 - //********私有,根据session的值更新类中相应数据
 - function Update()
 - {
 - global $sId,$sName,$sPrice,$sCount,$sDiscount,$sMaxCount,$sGoodPrice;
 - if(!isset($sId) or !isset($sName) or !isset($sPrice)
 - or !isset($sDiscount) or !isset($sMaxCount)
 - or !isset($sGoodPrice) or !isset($sCount)) return;
 - $this->Id =$sId;
 - $this->Name =$sName;
 - $this->Price =$sPrice;
 - $this->Count =$sCount;
 - $this->Discount = $sDiscount ;
 - $this->GoodPrice = $sGoodPrice ;
 - $this->MaxCount = $sMaxCount ;
 - //计算商品总数
 - $this->SortCount=count($sId);
 - }
 - //********私有,根据新的数据计算每类商品的价值及全部商品的总价
 - function Calculate()
 - {
 - for($i=0;$i<$this->SortCount;$i++)
 - {
 - /*计算每件商品的价值,如果折扣是0 ,则为优惠价格*/
 - $GiftPrice = ($this->Discount[$i] == 0 ? $this->GoodPrice :
 - ceil($this->Price[$i] * $this->Discount[$i])/100 );
 - $this->TotalCost += $GiftPrice * $this->Count[$i] ;
 - }
 - }
 - //**************以下为接口函数
 - //*** 加一件商品
 - // 判断是否蓝中已有,如有,加count,否则加一个新商品
 - //首先都是改session的值,然后再调用update() and calculate()来更新成员变量
 - function Add($a_ID , $a_Name , $a_Price , $a_Discount ,
 - $a_GoodPrice , $a_MaxCount , $a_Count)
 - {
 - global $sId , $sName , $sCount , $sPrice , $sDiscount ,
 - $sGoodPrice , $sMaxCount ;
 - $k=count($sId);
 - for ($i=0; $i<$k; $i++)
 - { //先找一下是否已经加入了这种商品
 - if($sId[$i]==$a_ID)
 - {
 - $sCount[$i] += $a_Count ;
 - break;
 - }
 - }
 - if($i >= $k)
 - { //没有则加一个新商品种类
 - $sId[] = $a_ID;
 - $sName[] = $a_Name;
 - $sPrice[] = $a_Price;
 - $sCount[] = $a_Count;
 - $sGoodPrice[] = $a_GoodPrice ;
 - $sDiscount[] = $a_Discount ;
 - $sMaxCount[] = $a_MaxCount ;
 - }
 - $this->Update(); //更新一下类的成员数据
 - $this->Calculate();
 - }
 - //移去一件商品
 - function Remove($a_ID)
 - {
 - global $sId , $sName , $sCount , $sPrice , $sDiscount ,
 - $sGoodPrice , $sMaxCount ;
 - $k = count($sId);
 - for($i=0; $i < $k; $i++)
 - {
 - if($sId[$i] == $a_ID)
 - {
 - $sCount[$i] = 0 ;
 - break;
 - }
 - }
 - $this->Update();
 - $this->Calculate();
 - }
 - //改变商品的个数
 - function ModifyCount($a_i,$a_Count)
 - {
 - global $sCount;
 - $sCount[$a_i] = $a_Count ;
 - $this->Update();
 - $this->Calculate();
 - }
 - /***************************
 - 清空所有的商品
 - *****************************/
 - function RemoveAll()
 - {
 - session_unregister('sId');
 - session_unregister('sName');
 - session_unregister('sPrice');
 - session_unregister('sDiscount');
 - session_unregister('sGoodPrice') ;
 - session_unregister('sCount') ;
 - session_unregister('sMaxCount') ;
 - $this->SortCount = 0 ;
 - $this->TotalCost = 0 ;
 - }
 - //是否某件商品已在蓝内,参数为此商品的ID
 - function Exists($a_ID)
 - {
 - for($i=0; $i<$this->SortCount; $i++)
 - {
 - if($this->Id[$i]==$a_ID) return TRUE;
 - }
 - return FALSE;
 - }
 - //某件商品在蓝内的位置
 - function IndexOf($a_ID)
 - {
 - for($i=0; $i<$this->SortCount; $i++)
 - {
 - if($this->Id[$i]==$id) return $i;
 - }
 - return 0;
 - }
 - //取一件商品的信息,主要的工作函数
 - //返回一个关联数组,
 - function Item($i)
 - {
 - $Result[id] = $this->Id[$i];
 - $Result[name] = $this->Name[$i];
 - $Result[price] = $this->Price[$i];
 - $Result[count] = $this->Count[$i];
 - $Result[discount] = $this->Discount[$i] ;
 - $Result[goodprice] = $this->GoodPrice[$i] ;
 - $Result[maxcount] = $this->MaxCount[i] ;
 - return $Result;
 - }
 - //取总的商品种类数
 - function CartCount()
 - {
 - return $this->SortCount;
 - }
 - //取总的商品价值
 - function GetTotalCost()
 - {
 - return $this->TotalCost;
 - }
 - }
 - ?>
 
新闻热点
疑难解答