自己写的PHP购物车类

因为需求中只记录产品的类型,还有编号..比如食物,,然后什么编号,,这样子.所以没有记录产品的数量..要用的自己改进一下就行了.

<?php
//setcookie("cart","s:26,45,4,4523423|d:17,7,27,26|e:12,13,123,43|f:34");
//cartAdd('e','167');
//getProInfo('z');
//delProInfo('f','26');


/**
 * ***********
 * 用于记录,修改,删除COOKIE的类,用于我的计划的本地信息的更改
 * LIQUAN
 */

class cart
{
/*
实现COOKIES购物车
@$type 产品类型
@$id   产品编号
COOKIES的结果为 type1:3,45,23|type2:34,234,34|type3:344,124
*/
function cartAdd($type,$id)
{
 //如果第一次使用,则重新设置COOKIES
 if(!isset($_COOKIE["cart"]))
 {
  setcookie("cart",$type.":".$id);
 }
 else
 {
  //如果不是第一次,则先取出来
  $cartStr=$_COOKIE["cart"];
  //把结果分开
  $cartarray=split("/|",$cartStr);
       
  //用于判断类型是否存在,初始不存在,为零
     $istype=0;
     //产品编号列表
  $id_list;
  //循环产品
     for ($i=0;$i<count($cartarray);$i++)
      {
        //获取产品名和产品编号列表 
     list($carttype,$product)=split(":",$cartarray[$i]);
     //如果已经存在的产品与要保存的相如,把isType改为1,说明产品已经存在
     if ($type==$carttype)
        {
         $istype=1;
         //获取产品的编号列表
         $id_list=$product;
         //中断循环
       break ;   
        }
      }
      //如果产品不存在
      if($istype==0)
      {
       //往COOKIES里面加入新产品和产品的编吃
       $cartStr=$cartStr."|".$type.":".$id;      
      }
      else
      {
       //把产品列表分开成数组
       $id_list=split("/,",$id_list);
       //标识产口编号是否存在,初始不存在
       $isId=0;
       //循环产品编号
       for($i=0;$i<count($id_list);$i++)
       {
        //如果要保存的产品编号已尼存在
        if($id==$id_list[$i])
        {
         //标识已存在.退出循环
         $isId=1;
         break;
        }
       }
       //这里只做产品类型和产品编号,所以相同的不加数量,直接不外理
       //如果相关类型的产品编号不存在,则加上新的编号
       if($isId!=1)
       {
         $cartStr=str_replace($type.":",$type.":".$id.",",$cartStr);
       //$cartStr=str_replace('d:','d:2,',$cartStr);
       }
       
      }
      setcookie("cart",$cartStr);
   print_r($_COOKIE["cart"]);
  
  //setcookie("cart","",time()-100);
  
  
 }
 return ;
}
//返回相应的产品列表
/*
@$type产品类型
*/
function getProInfo($type)
{
 //获取购物车COOKIES
 $cartStr=$_COOKIE["cart"];
 
 //匹配COOKIES字符,获取产品列表
 $preg_str=$type.":((/d+),)*(/d+)";
 //echo "<br>";
 preg_match("/".$preg_str."/",$cartStr,$proStr);
 
 //echo $proStr[0];
 //exit();
 list($protype,$product)=split(":",$proStr[0]);
 
 return $product;
  //$pro_list=split(",",$product);
  //返回产品列表
  //return $pro_list;
 // print_r($pro_list);
}
/*
*删除产品
*@$type产品类型名
*@$id 产品编号
*/
function delProInfo($type,$id)
{
 //获取购物车COOKIES
 $cartStr=$_COOKIE["cart"];
 
 //匹配COOKIES字符,获取产品列表
 $preg_str=$type.":((/d+),)*(/d+)";
 //echo "<br>";
 preg_match("/".$preg_str."/i",$cartStr,$proStr);
 
 //只有能找到要删除的类型,才进行下面操做
  if($proStr)
  {
   //查询删除的类型里面是否有要删除的ID
 $isproId=strstr($proStr[0],$id);
 
 //如果有,才进行下面操作
 if($isproId)
 {
   //更新后的产品字符串
   $upproStr;
   //更新后的所有最新的产品COOKIES字符
   $newCartStr;
  
   //查询要删除的产品是否有多个
  preg_match("/,/",$proStr[0],$isend);
  //如果有,进行下面操作
  if($isend)
 {
  //查询要删除的产品后面是否还有产品
    preg_match("/".$id.",/",$proStr[0],$isdot); 
    //如果有,删除后面的逗号
    if($isdot)
    {
      $upproStr=str_replace($id.",","",$proStr[0]);
    }
    //如果没有,删除前面的逗号
   else
    {
      $upproStr=str_replace(",".$id,"",$proStr[0]);
    }
    //更新要插入COOKIES里面的字符串
    $newCartStr=str_replace($proStr[0],$upproStr,$cartStr);
 }
 //如果没有多个,则直接删除该类产品
 else
 {

  //判断该类产品后面还有没有产品
  preg_match("/".$proStr[0]."/|/",$cartStr,$issu);
  //如果有,则删除后面的分格符
  if($issu)
  {
  $newCartStr=str_replace($proStr[0]."|","",$cartStr);
  }
  //如果没有,则删除前面的分格符
  else
  {
  $newCartStr=str_replace("|".$proStr[0],"",$cartStr);
  }
 }
 
 setcookie("cart",$newCartStr);
 
 }
  }
}
 function deletecart()
  {
   setcookie("cart","",time()-100);
  }
}
?> 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值