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<count($cartarray);$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<count($id_list);$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 "<br>";
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 "<br>";
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);
}
}
?>

原文地址:https://www.cnblogs.com/zerogo/p/2209193.html