当前位置:首页 > PHP教程 > php类库 > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2022-07-15 07:51:36 浏览: 评论:0 

本文实例为大家分享了php购物车类的具体代码,供大家参考,具体内容如下

购物车类 Cookies 保存,保存周期为1天 注意:浏览器必须支持Cookie才能够使用

示例代码:

  1. <?php 
  2.  
  3. /** 
  4.  
  5.  * 购物车类 Cookies 保存,保存周期为1天 注意:浏览器必须支持Cookie才能够使用 
  6.  
  7.  */ 
  8.  
  9. class CartAPI { 
  10.  
  11.   private $CartArray = array(); // 存放购物车的二维数组 
  12.  
  13.   private $CartCount// 统计购物车数量 
  14.  
  15.   public $Expires = 86400; // Cookies过期时间,如果为0则不保存到本地 单位为秒 
  16.  
  17.   /** 
  18.  
  19.    * 构造函数 初始化操作 如果$Id不为空,则直接添加到购物车 
  20.  
  21.    * 
  22.  
  23.    */ 
  24.  
  25.   public function __construct($Id = "",$Name = "",$Price1 = "",$Price2 = "",$Price3 = "",$Count = "",$Image = "",$Expires = 86400) { 
  26.  
  27.     if ($Id != "" && is_numeric($Id)) { 
  28.  
  29.       $this->Expires = $Expires
  30.  
  31.       $this->addCart($Id,$Name,$Price1,$Price2,$Price3,$Count,$Image); 
  32.  
  33.     } 
  34.  
  35.   } 
  36.  
  37.   /** 
  38.  
  39.    * 添加商品到购物车 
  40.  
  41.    * 
  42.  
  43.    * @param int $Id 商品的编号 
  44.  
  45.    * @param string $Name 商品名称 
  46.  
  47.    * @param decimal $Price1 商品价格 
  48.  
  49.    * @param decimal $Price2 商品价格 
  50.  
  51.    * @param decimal $Price3 商品价格 
  52.  
  53.    * @param int $Count 商品数量 
  54.  
  55.    * @param string $Image 商品图片 
  56.  
  57.    * @return 如果商品存在,则在原来的数量上加1,并返回false 
  58.  
  59.    */ 
  60.  
  61.   public function addCart($Id,$Name,$Price1,$Price2,$Price3,$Count,$Image) { 
  62.  
  63.     $this->CartArray = $this->CartView(); // 把数据读取并写入数组 
  64.  
  65.     if ($this->checkItem($Id)) { // 检测商品是否存在 
  66.  
  67.       $this->ModifyCart($Id,$Count,0); // 商品数量加$Count 
  68.  
  69.       return false; 
  70.  
  71.     } 
  72.  
  73.     $this->CartArray[0][$Id] = $Id
  74.  
  75.     $this->CartArray[1][$Id] = $Name
  76.  
  77.     $this->CartArray[2][$Id] = $Price1
  78.  
  79.     $this->CartArray[3][$Id] = $Price2
  80.  
  81.     $this->CartArray[4][$Id] = $Price3
  82.  
  83.     $this->CartArray[5][$Id] = $Count
  84.  
  85.     $this->CartArray[6][$Id] = $Image
  86.  
  87.     $this->save(); 
  88.  
  89.   } 
  90.  
  91.   /** 
  92.  
  93.    * 修改购物车里的商品 
  94.  
  95.    * 
  96.  
  97.    * @param int $Id 商品编号 
  98.  
  99.    * @param int $Count 商品数量 
  100.  
  101.    * @param int $Flag 修改类型 0:加 1:减 2:修改 3:清空 
  102.  
  103.    * @return 如果修改失败,则返回false 
  104.  
  105.    */ 
  106.  
  107.   public function ModifyCart($Id$Count$Flag = "") { 
  108.  
  109.     $tmpId = $Id
  110.  
  111.     $this->CartArray = $this->CartView(); // 把数据读取并写入数组 
  112.  
  113.     $tmpArray = &$this->CartArray; // 引用 
  114.  
  115.     if (!is_array($tmpArray[0])) return false; 
  116.  
  117.     if ($Id < 1) { 
  118.  
  119.       return false; 
  120.  
  121.     } 
  122.  
  123.     foreach ($tmpArray[0] as $item) { 
  124.  
  125.       if ($item === $tmpId) { 
  126.  
  127.         switch ($Flag) { 
  128.  
  129.           case 0: // 添加数量 一般$Count为1 
  130.  
  131.             $tmpArray[5][$Id] += $Count
  132.  
  133.             break
  134.  
  135.           case 1: // 减少数量 
  136.  
  137.             $tmpArray[5][$Id] -= $Count
  138.  
  139.             break
  140.  
  141.           case 2: // 修改数量 
  142.  
  143.             if ($Count == 0) { 
  144.  
  145.               unset($tmpArray[0][$Id]); 
  146.  
  147.               unset($tmpArray[1][$Id]); 
  148.  
  149.               unset($tmpArray[2][$Id]); 
  150.  
  151.               unset($tmpArray[3][$Id]); 
  152.  
  153.               unset($tmpArray[4][$Id]); 
  154.  
  155.               unset($tmpArray[5][$Id]); 
  156.  
  157.               unset($tmpArray[6][$Id]); 
  158.  
  159.               break
  160.  
  161.             } else { 
  162.  
  163.               $tmpArray[5][$Id] = $Count
  164.  
  165.               break
  166.  
  167.             } 
  168.  
  169.           case 3: // 清空商品 
  170.  
  171.             unset($tmpArray[0][$Id]); 
  172.  
  173.             unset($tmpArray[1][$Id]); 
  174.  
  175.             unset($tmpArray[2][$Id]); 
  176.  
  177.             unset($tmpArray[3][$Id]); 
  178.  
  179.             unset($tmpArray[4][$Id]); 
  180.  
  181.             unset($tmpArray[5][$Id]); 
  182.  
  183.             unset($tmpArray[6][$Id]); 
  184.  
  185.             break
  186.  
  187.           default
  188.  
  189.             break
  190.  
  191.         } 
  192.  
  193.       } 
  194.  
  195.     } 
  196.  
  197.     $this->save(); 
  198.  
  199.   } 
  200.  
  201.   /** 
  202.  
  203.    * 清空购物车 
  204.  
  205.    * 
  206.  
  207.    */ 
  208.  
  209.   public function RemoveAll() { 
  210.  
  211.     $this->CartArray = array(); 
  212.  
  213.     $this->save(); 
  214.  
  215.   } 
  216.  
  217.   /** 
  218.  
  219.    * 查看购物车信息 
  220.  
  221.    * 
  222.  
  223.    * @return array 返回一个二维数组 
  224.  
  225.    */ 
  226.  
  227.   public function CartView() { 
  228.  
  229.     $cookie = stripslashes($_COOKIE['CartAPI']); 
  230.  
  231.     if (!$cookiereturn false; 
  232.  
  233.     $tmpUnSerialize = unserialize($cookie); 
  234.  
  235.     return $tmpUnSerialize
  236.  
  237.   } 
  238.  
  239.   /** 
  240.  
  241.    * 检查购物车是否有商品 
  242.  
  243.    * 
  244.  
  245.    * @return bool 如果有商品,返回true,否则false 
  246.  
  247.    */ 
  248.  
  249.   public function checkCart() { 
  250.  
  251.     $tmpArray = $this->CartView(); 
  252.  
  253.     if (count($tmpArray[0]) < 1) {       
  254.  
  255.       return false; 
  256.  
  257.     } 
  258.  
  259.     return true; 
  260.  
  261.   } 
  262.  
  263.   /** 
  264.  
  265.    * 商品统计 
  266.  
  267.    * 
  268.  
  269.    * @return array 返回一个一维数组 $arr[0]:产品1的总价格 $arr[1:产品2得总价格 $arr[2]:产品3的总价格 $arr[3]:产品的总数量 
  270.  
  271.    */ 
  272.  
  273.   public function CountPrice() { 
  274.  
  275.     $tmpArray = $this->CartArray = $this->CartView(); 
  276.  
  277.     $outArray = array(); //一维数组 
  278.  
  279.     // 0 是产品1的总价格 
  280.  
  281.     // 1 是产品2的总价格 
  282.  
  283.     // 2 是产品3的总价格 
  284.  
  285.     // 3 是产品的总数量 
  286.  
  287.     $i = 0; 
  288.  
  289.     if (is_array($tmpArray[0])) { 
  290.  
  291.       foreach ($tmpArray[0] as $key=>$val) { 
  292.  
  293.         $outArray[0] += $tmpArray[2][$key] * $tmpArray[5][$key]; 
  294.  
  295.         $outArray[1] += $tmpArray[3][$key] * $tmpArray[5][$key]; 
  296.  
  297.         $outArray[2] += $tmpArray[4][$key] * $tmpArray[5][$key]; 
  298.  
  299.         $outArray[3] += $tmpArray[5][$key]; 
  300.  
  301.         $i++; 
  302.  
  303.       } 
  304.  
  305.     } 
  306.  
  307.     return $outArray
  308.  
  309.   } 
  310.  
  311.   /** 
  312.  
  313.    * 统计商品数量 
  314.  
  315.    * 
  316.  
  317.    * @return int 
  318.  
  319.    */ 
  320.  
  321.   public function CartCount() { 
  322.  
  323.     $tmpArray = $this->CartView(); 
  324.  
  325.     $tmpCount = count($tmpArray[0]); 
  326.  
  327.     $this->CartCount = $tmpCount
  328.  
  329.     return $tmpCount
  330.  
  331.   } 
  332.  
  333.   /** 
  334.  
  335.    * 保存商品 如果不使用构造方法,此方法必须使用 
  336.  
  337.    * 
  338.  
  339.    */ 
  340.  
  341.   public function save() { 
  342.  
  343.     $tmpArray = $this->CartArray; 
  344.  
  345.     $tmpSerialize = serialize($tmpArray); 
  346.  
  347.     setcookie("CartAPI",$tmpSerialize,time()+$this->Expires); 
  348.  
  349.   } 
  350.  
  351.   /** 
  352.  
  353.    * 检查购物车商品是否存在 
  354.  
  355.    * 
  356.  
  357.    * @param int $Id 
  358.  
  359.    * @return bool 如果存在 true 否则false 
  360.  
  361.    */ 
  362.  
  363.   private function checkItem($Id) { 
  364.  
  365.     $tmpArray = $this->CartArray; 
  366.  
  367.     if (!is_array($tmpArray[0])) return
  368.  
  369.     foreach ($tmpArray[0] as $item) { 
  370.  
  371.       if ($item === $Idreturn true; 
  372.  
  373.     } 
  374.  
  375.     return false; 
  376.  
  377.   } 
  378.  
  379.  
  380. ?>

Tags: php购物车类

分享到: