代码改变世界

韩顺平 php视频教程 笔记心得 zend.framework.第17讲.综合应用-购物车3

2012-07-31 16:06  java环境变量  阅读(311)  评论(0编辑  收藏  举报

ShoppingController.php 该控制器最复杂,默认点击一次购买一次,单击第二次相当于增加一次。类似于淘宝 天猫的购物

Mycart 表模型会和mycart表对应,会完成对购物车的各种操作。

<?php
/**
 * 这个类的一个对象实例表示一个购物车对象
 * Enter description here ...
 * @author harry_manage_top_100
 *
 */
class  MyCart extends  Zend_Db_Table{
    protected   $_primary='id';
 protected  $_name='mycart';
}

 

查看购物车

单例可以用session

session的重写机制  handle  可以直接把session往数据库里写。

 

书名 价格 出版社 购买
php应用开发详解 59 电子工业出版社 购买
php web服务开发 45 电子工业出版社 购买
php 编程思想 99 电子工业出版社 购买
php应用开发详解 10 机械工业出版社 购买
php 企业级应用开发 68 电子工业出版社 购买
java编程思想 99 快客出版社 购买
php参考手册 65 电子工业出版社 购买
php web服务开发 550 快客出版社 购买

 

我的购物车

id 书名 价格 出版社 数量 是否删除
3 php 编程思想 99   1 是否删除
6 java编程思想 99   4 是否删除
7 php参考手册 65   1 是否删除
2 php web服务开发 45   3 是否删除
购物车总价:??元  返回购物大厅

<?php
/**
 * 这个类的一个对象实例表示一个购物车对象,表模型里面也可以写方法
 * Enter description here ...
 * @author harry_manage_top_100
 *
 */
class  MyCart extends  Zend_Db_Table{
    protected   $_primary='id';
 protected  $_name='mycart';
 
 var  $total_price=0;
 
 //添加商品到购物车(把登录用户选中的商品保存到mycart表中)
 function addProduct($userId,$productId,$nums=1){
   $res=$this->fetchAll("userid=$userId  AND  bookid=$productId")->toArray();
   if(count($res)>0){
   //说明该用户的购物车记录中,已经购买过这个商品,因此这里我们需要更新数量就可以了。
   $old_nums=$res[0]['nums'];
   $data=array(
      'nums'=> $old_nums+1 
   );
   $where="userid=$userId  AND  bookid=$productId";
  
   $this->update($data, $where);
   return true;
  
  
   }else{
   $now=time();
   $data=array(
   'userid'=>$userId,
    'bookid'=>$productId,
    'nums'=>$nums,
    'cartDate'=>$now
   );
  
   //$mycartModel=new MyCart();
   if($this->insert($data)>0){
     /* $this->view->info='添加商品成功';
      $this->_forward('ok','global');*/
    return true;
     
   }else{
     return false;
   }
  
   }
 }
 
 //从购物车删除商品
 
 //修改商品
 
 //计算购物车的总价
 function  getTotalPrice(){
 
 }
 
 //显示购物车  抽象封装某个用户的购物车
 function  showMyCart($userId){
  $sql='select  b.id,b.name,b.price,m.nums  from book b,mycart m where b.id=m.bookid';
  $db=$this->getAdapter();
  $res=$db->query($sql)->fetchAll();
  //顺带把总价计算出来
  //$total_price=0;
  for($i=0;$i<count($res);$i++){
      $bookinfo=$res[$i];
      $this->total_price+=$bookinfo['price']*$bookinfo['nums'];
  }
     return $res;
 }
}