PHP购物车类

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

}

}

?>