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