时间: 2014年4月2日19:09:22 商品回收站功能


删除不是真正的删除,是设置商品表的,is_delete字段


默认为零,如果为零说明,没有删除,如果为1 则已经删除



回收站 trash()方法:


是否要把trash()方法写到Model父类,


不需要


该方法时特殊的非通用的功能,不适合写到父类


改写GoodsModel.class.php


   /*


    * 作用:把商品放到回收站


    * 即把is_delete 字段赋值为1


    * param int id


    * return int 受影响行数


    */


   public function  trash($id){


       //调用父方法的update方法


       return $this->update(array("is_delete"=>1),$id);


   }


增加goodstrash.php


   $id= $_GET["goods_id"]+0;


   $goods = new GoodsModel();



   if($goods->trash($id)){


       echo "商品已加入回收站";


   }else{


       echo "加入回收站失败";


   }


修改前台页面goodslist.html


<a href="goodstrash.php?goods_id=<?php echo $k['goods_id']?>"  title="回收站"><img src="../view/admin/images/icon_trash.gif" width="16" height="16" border="0" /></a>


改写GoodsModel.class.php


当把商品放入回收站后,商品显示为is_delete=0的商品


    * 获取is_delete等于0 正常未下架的商品


    */


   public function  getGoods(){


       $sql = 'select * from goods where is_delete = 0';


       return $this->db->getAll($sql);


   }


修改goodlist.php


$goods = new GoodsModel();


$goodslist = $goods->getGoods();



增加查看回收站商品功能:


改写GoodsModel.class.php


   public  function  getTrash(){


       $sql = 'select * from goods where is_delete = 1';


       return $this->db->getAll($sql);


   }


修改left.php


<li class="menu-item"><a href="goodstrash.php?act=show" target="main-frame">回收商品</a></li>



修改goodstrash.php


/*


*接收goods_id,调用trash()方法


* */


if($_GET["act"] == 'show'){


   /*


    * 打印所有回收商品


    * */


   $goods = new GoodsModel();


   $goodslist = $goods->getTrash();


   require(ROOT.'view/admin/templates/goodslist.html');


}else{


   $id= $_GET["goods_id"]+0;


   $goods = new GoodsModel();



   if($goods->trash($id)){


       echo "商品已加入回收站";


   }else{


       echo "加入回收站失败";


   }


}


至此完成,商品加入回收站功能,


回收站商品可以彻底删除,也可以恢复



思考:为什么商品不直接删除,而是标记或者逻辑删除?


1.破坏了数据的完整性,如对购买的商品,并对商品做出评论,后来商品删除,这些评论如何处理


2.影响查询的速度,对于大型网站,尤为严重,数据在硬盘上,按格式存储,把其中的某个删除掉,硬盘上就产生空洞,影响索引,影响速度


3.如果要删除,要自上而下的删除,如用户发布了博文,博文又有评论,删除要先删除评论,在删除博文,最后删除用户。如果直接删除用户,博文和评论无人认领,剩下的数据称为脏数据


你可能感兴趣的:(return,回收站,function,update,public)