1.商品详情页面添加到购物车如下:
2.对应的控制器里有操作方法
//添加到购物车
function addTocart(){
if(I("sub",0)){
$goods_id=I("goodsId",0);//获取goodsId参数 自动判断get或者post
$goods_num=I("goodsNum",0);
//如果是登录状态(购物车数据存入数据库)
if(session("user_id")){
$uid=session("user_id");
D('Cart')->addToCart($uid,$goods_id,$goods_num);
if($data){
echo "";
}
}else{//否则没有登录时如下,(没登录,购物车数据存入session)
$arr=array("goods_id"=>$goods_id,"goods_num"=>$goods_num);
$data=unserialize(session("cart"));//取出session里其他的数据
$is_repeat=false;
foreach($data as $k=>$v){
if($v['goods_id']==$goods_id){//如果数据重复,就更新数据
$data[$k]['goods_num']=$goods_num;
$is_repeat=true;
}
}
if(!$is_repeat){//如果不重复,就追加一个
$data[]=$arr;
}
$data=serialize($data);//serialize() 把变量和它们的值编码成文本形式
session("cart",$data);//然后存入session
}
echo "";
}
};
3.加入购物车要用到的CartModel.class.php如下:
//Cart购物车数据模型Model
namespace Home\Model;
use Think\Model;
class CartModel extends Model{
//可以给当前Model进行一些个性化的设计
function addToCart($uid,$goods_id,$goods_num){
/*echo $uid,$goods_id,$goods_num;*/
$arr=array("goods_id"=>$goods_id,"goods_num"=>$goods_num);
$data=unserialize($this->getCart($uid));//根据唯一索引uid查询
$is_repeat=false;
foreach($data as $k=>$v){
if($v['goods_id']==$goods_id){//如果数据重复,就更新数据
$data[$k]['goods_num']=$goods_num;
$is_repeat=true;
}
}
if(!$is_repeat){//如果不重复,就追加一个
$data[]=$arr;
}
$data=serialize($data);//serialize() 把变量和它们的值编码成文本形式
$ndata=array();
$ndata["cart_uid"]=$uid;
$ndata["update_time"]=date("Y-m-d h:i:s");
$ndata["cart_info"]=$data;
$this->add($ndata,array(),true);
}
function getCart($uid){
return $this->where("cart_uid='{$uid}'")->getField("cart_info");
}
}
?>
4.然后建一个购物车控制器CartController.class.php:
5.模板里如下所示:
6.如果好多个页面都需要显示购物车里商品数和总价格,在CartController控制器里建一个如下方法:
在其他控制器里跨控制器引用:
模板里{$Number}即可
购物车删除如下:
控制器里如下:
初学者如需购买thinkphp程序(包括前后台),加个人微信LBXZFR2013
微信扫描关注“公众号”有惊喜
公众号ID“lbxzsan7378”