因為需求中只記錄產(chǎn)品的類型,還有編號..比如食物,,然后什么編號,,這樣子.所以沒有記錄產(chǎn)品的數(shù)量..要用的自己改進(jìn)一下就行了.
<?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
{
/*
實現(xiàn)COOKIES購物車
@type 產(chǎn)品類型
@id 產(chǎn)品編號
COOKIES的結(jié)果為 type1:3,45,23|type2:34,234,34|type3:344,124
*/
function cartAdd(type,id)
{
//如果第一次使用,則重新設(shè)置COOKIES
if(!isset(_COOKIE["cart"]))
{
setcookie("cart",type.":".id);
}
else
{
//如果不是第一次,則先取出來
cartStr=_COOKIE["cart"];
//把結(jié)果分開
cartarray=split("/|",cartStr);
//用于判斷類型是否存在,初始不存在,為零
istype=0;
//產(chǎn)品編號列表
id_list;
//循環(huán)產(chǎn)品
for (i=0;i<count(cartarray);i++)
{
//獲取產(chǎn)品名和產(chǎn)品編號列表
list(carttype,product)=split(":",cartarray[i]);
//如果已經(jīng)存在的產(chǎn)品與要保存的相如,把isType改為1,說明產(chǎn)品已經(jīng)存在
if (type==carttype)
{
istype=1;
//獲取產(chǎn)品的編號列表
id_list=product;
//中斷循環(huán)
break ;
}
}
//如果產(chǎn)品不存在
if(istype==0)
{
//往COOKIES里面加入新產(chǎn)品和產(chǎn)品的編吃
cartStr=cartStr."|".type.":".id;
}
else
{
//把產(chǎn)品列表分開成數(shù)組
id_list=split("/,",id_list);
//標(biāo)識產(chǎn)口編號是否存在,初始不存在
isId=0;
//循環(huán)產(chǎn)品編號
for(i=0;i<count(id_list);i++)
{
//如果要保存的產(chǎn)品編號已尼存在
if(id==id_list[i])
{
//標(biāo)識已存在.退出循環(huán)
isId=1;
break;
}
}
//這里只做產(chǎn)品類型和產(chǎn)品編號,所以相同的不加數(shù)量,直接不外理
//如果相關(guān)類型的產(chǎn)品編號不存在,則加上新的編號
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 ;
}
//返回相應(yīng)的產(chǎn)品列表
/*
@type產(chǎn)品類型
*/
function getProInfo(type)
{
//獲取購物車COOKIES
cartStr=_COOKIE["cart"];
//匹配COOKIES字符,獲取產(chǎn)品列表
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);
//返回產(chǎn)品列表
//return pro_list;
// print_r(pro_list);
}
/*
*刪除產(chǎn)品
*@type產(chǎn)品類型名
*@id 產(chǎn)品編號
*/
function delProInfo(type,id)
{
//獲取購物車COOKIES
cartStr=_COOKIE["cart"];
//匹配COOKIES字符,獲取產(chǎn)品列表
preg_str=type.":((/d+),)*(/d+)";
//echo "<br>";
preg_match("/".preg_str."/i",cartStr,proStr);
//只有能找到要刪除的類型,才進(jìn)行下面操做
if(proStr)
{
//查詢刪除的類型里面是否有要刪除的ID
isproId=strstr(proStr[0],id);
//如果有,才進(jìn)行下面操作
if(isproId)
{
//更新后的產(chǎn)品字符串
upproStr;
//更新后的所有最新的產(chǎn)品COOKIES字符
newCartStr;
//查詢要刪除的產(chǎn)品是否有多個
preg_match("/,/",proStr[0],isend);
//如果有,進(jìn)行下面操作
if(isend)
{
//查詢要刪除的產(chǎn)品后面是否還有產(chǎn)品
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);
}
//如果沒有多個,則直接刪除該類產(chǎn)品
else
{
//判斷該類產(chǎn)品后面還有沒有產(chǎn)品
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);
}
}
?>
新聞熱點
疑難解答