首页 > 代码库 > 点赞设计

点赞设计

需求:对某一个试题 或者 某一个话题 或者 某一个新闻 点赞 ,每个人只能点赞一次,第一次点赞的时候 增加1 再一次点赞的时候 就取消点赞

设计:

  1.用户点赞 必须要登陆才可以,这样就可以获取该用户的uid;

  2.设计数据表

    被点赞的记录表 ,以试题为例:

    question 表

    tid  --------题目id

    question -----问题题目

    answer -------问题答案

    --------------------------------------------

    zan  表

    id 主键

    tid  被赞的tid

    uid  点赞的用户

    is_delete  点赞状态  (0点赞,1 取消;默认为0)

  3.代码

  

 1     /**
 2      * @desc 点赞方法
 3      * @author wzh
 4      * @version 1.0
 5      * @date 2017-02-18
 6      * @return int
 7      */
 8     public function setZan($uid = 0,$tid = 0){
 9         $uid = (int) $uid;
10         $tid = (int) $tid;
11         if($uid == 0 || $tid == 0){
12             return false;
13         }
14         
15         //先查看该用户是否已经点赞,如果没有点赞 则增加一条记录,如果已经点赞,查看点赞的状态is_delete,如果该值为0 则设置为1,如果为1则设置为0;
16         $sql = "select id,is_delete from zan where uid = ‘$uid‘ and tid = ‘$tid‘ ";
17         $zanInfo = $db -> getRow($sql);
18         if(empty($zanInfo)){
19             $insert = array(‘uid‘ => $uid,‘tid‘ => $tid);
20             $res = $db -> insert($insert);
21             
22         }else{
23             if($zanInfo[‘is_delete‘] == 1){
24                 $update = array(‘is_delete‘ => 0);
25             }else{
26                 $update = array(‘is_delete‘ => 1);
27             }
28             $condition = array(‘id‘ => $zanInfo[‘id‘]);
29             $res = $db -> update(‘zan‘,$update,$condition);
30         }
31         if(!$res){
32             return false;
33         }
34         
35         $count = $db -> getCount("select count(*) from zan where tid = $tid and is_delete = 0 ");
36         return $count;
37         
38         
39     }

  4.总结:以上仅仅为解决思路,并不完整;可以再次基础上做扩展;详细交流请qq 646943067 备注 为 博客园

点赞设计