需求:对某一个试题 或者 某一个话题 或者 某一个新闻 点赞 ,每个人只能点赞一次,第一次点赞的时候 增加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 备注 为 博客园