欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

PHP购物车类

程序员文章站 2022-05-08 08:17:10
...

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

1. [代码][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); 
//如果已经存在的产品与要保存的相如,把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) 
{ 
//标识已存在.退出循环 
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); 
} 
} 
?>
相关标签: php