PHP实现的比较完善的购物车类

本文实例讲述了PHP实现的比较完善的购物车类。分享给大家供大家参考。具体实现方法如下:

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

代码如下:

<?php
/*****************************************************************************/
/*                                                                           */
/* file type:      包含文件,建议后缀为.inc                                  */
/*                                                                           */
/* file name:      cart.inc                                                  */
/*                                                                           */
/* Description:    定义一个购车类                                            */
/*                                                                           */
/* Func list :     class cart                                                */
/*                                                                           */
/* author :        bigeagle                                                  */
/*                                                                           */
/*                                                                           */
/*****************************************************************************/
 
//定义本文件常量
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;
  }

?>

希望本文所述对大家的PHP程序设计有所帮助。

(0)

相关推荐

  • PHP购物车类Cart.class.php定义与用法示例

    本文实例讲述了PHP购物车类Cart.class.php定义与用法.分享给大家供大家参考,具体如下: 之前的开发人员使用了JS的技术开发了一套前台购物车(删除添加什么的都使用JS),但是浏览器兼容不好, 今天终于出问题了, 有个老外购物了产品, 由于使用了不知名的浏览器, chrome, opera-都有可能, 因此, 我多了一份工作, 重写购物车. 不打算再使用JS, 直接考虑php. 找到了一个购物车的类, 使用起来很方便. Cart.class.php源码: <?php /** * Car

  • php购物车实现代码

    ShopCar.php 复制代码 代码如下: <?php class Shopcar { //商品列表 public $productList=array(); /** * * @param unknown_type $product 传进来的商品 * @return true 购物车里面没有该商品 */ public function checkProduct($product) { for($i=0;$i<count($this->productList);$i++ ) { if($

  • PHP实现的购物车类实例

    本文实例讲述了PHP实现的购物车类.分享给大家供大家参考.具体分析如下: 该购物车类是基于CodeIgniter的购物车类仿写实现的. 购物车基本功能如下: 1) 将物品加入购物车 2) 从购物车中删除物品 3) 更新购物车物品信息 [+1/-1] 4) 对购物车物品进行统计    1. 总项目    2. 总数量    3. 总金额 5) 对购物单项物品的数量及金额进行统计 6) 清空购物车 1. cart.php文件: <?php /** * * @author quanshuidingd

  • php实现保存周期为1天的购物车类

    本文实例为大家分享了php购物车类的具体代码,供大家参考,具体内容如下 购物车类 Cookies 保存,保存周期为1天 注意:浏览器必须支持Cookie才能够使用 示例代码: <?php /** * 购物车类 Cookies 保存,保存周期为1天 注意:浏览器必须支持Cookie才能够使用 */ class CartAPI { private $CartArray = array(); // 存放购物车的二维数组 private $CartCount; // 统计购物车数量 public $Ex

  • 深入PHP购物车模块功能分析(函数讲解,附源码)

    一,购物车概述购物车是为消费者在网上购物中提供一个临时存储商品的地方.其主要功能包括:添加商品.删除商品.更改商品数量.商品金额小计.商品金额总计和清空购物车:还包括生成订单.订单打印.订单预览.提交订单和取消购物等.购物车的操作流程:首先,登录到网站中浏览商品:然后,购买指定的商品,进入购物车页面中,在该页面可以实现更改商品数量.删除商品.清空购物车.继续购物等:最后,填写收货人信息,生成订单,订单打印.预览,提交订单等操作. 二,热点关键技术1,Smarty模块的安装配置smarty是一个使

  • php网上商城购物车设计代码分享

    首先,购物车的数据库设计: 1. id 2. goods_id 商品ID 3. session_id 购物车ID 4. goods_sn 商品编码 5. goods_name 商品名称 6. shop_price 商品商城售价 7. goods_price 商品真实售价(与shop_price的区别在于,当打折的时候,shop_price是打折之前商品的售价,而goods_price是打折之后的) 8. goods_number 数量 9. weight 商品重量 10. goods_attr

  • php 购物车的例子

    //购物车session的产生代码 if(! $session && ! $scid) { /* session用来区别每一个购物车,相当于每个车的身份证号: scid只用来标识一个购物车id号,可以看做是每个车的名字: 当该购物车的id和session值两者都不存在时,就产生一个新购物车 */ $session = md5(uniqid(rand())); /* 产生一个唯一的购物车session号 rand()先产生个随机数,uniqid()再在该随机数的基础上产生一个独一无二的字符串

  • php 购物车完整实现代码

    1.商品展示页面 复制代码 代码如下: <table width="255"  border="0" cellspacing="0" cellpadding="0"><tr><td width="130" rowspan="6"><div align="center"><?php        if(trim($i

  • php实现仿写CodeIgniter的购物车类

    本文实例讲述了php实现仿写CodeIgniter的购物车类.分享给大家供大家参考.具体如下: 这里仿写CodeIgniter的购物车类 购物车基本功能: 1) 将物品加入购物车 2) 从购物车中删除物品 3) 更新购物车物品信息 [+1/-1] 4) 对购物车物品进行统计    1. 总项目    2. 总数量    3. 总金额 5) 对购物单项物品的数量及金额进行统计 6) 清空购物车 cart.php文件如下:  <?php /** * * @author quanshuidingda

  • php实现购物车功能(上)

    本文分两篇为大家介绍php实现购物车功能,具有一定的参考价值,相信大家一定喜欢. 1.需求分析 我们需要找到一种将数据库连接到用户的浏览器的方法.用户能够按目录浏览商品. 用户应该能够从商品目录中选取商品以便此后的购买.我们也要能够记录他们选中的物品. 当用户完成购买,要合计他们的订单,获取运送商品细节,并处理付款. 创建一个管理界面,以便管理员在上面添加.编辑图书和目录. 2.解决方案 2.1 用户视图 2.2 管理员视图 2.3 Book-O-Rama中的文件列表 3.实现数据库3.1 创建

随机推荐