首页  >  文章  >  后端开发  >  PHP购物车类_PHP教程

PHP购物车类_PHP教程

WBOY
WBOY原创
2016-07-13 10:23:071002浏览

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

  {

  //获取产品名和产品编号列表

  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

  {

  //如果要保存的产品编号已尼存在

  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 "
";

  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 "
";

  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);

  }

  }

  ?>

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/845130.htmlTechArticlePHP购物车类 PHP购物车类: 因为需求中只记录产品的类型,还有编号..比如食物,,然后什么编号,,这样子.所以没有记录产品的数量..要用的自己...
声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn