我们在用PHPCMS框架帮客户开发网站的时候,有时客户需要实现一篇文章的标题下面,增加一个点赞的功能。点赞后点赞数据加1,同时显示取消点赞按钮;点击取消点赞后,点赞数据减1,同时显示点赞按钮
实现的原理是新建一个包含了当前文章ID和访问者IP的数据表,然后建立一个点赞模型类,最后前台通过ajax调用即可实现。
1、新建一个数据表v9_dianzan
CREATE TABLE v9_dianzan
(
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`newsid` mediumint(8) unsigned NOT NULL '每篇文章的id',
`ip` varchar(15) NOT NULL '当前访客的IP地址',
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=79 DEFAULT CHARSET=utf8;
2、新建一个点赞模型dianzan_model.class.php,放到文件夹\phpcms\model,具体代码见附件
3、控制器中调用,打开\phpcms\modules\content\index.php,添加如下函数
//添加和获取点赞 public function dianzan(){ $this->db = pc_base::load_model('dianzan_model'); $this->db->dianzan(); }
4、前台调用代码
<a href="javascript:void(0);"> <span id="upscount"></span> <span id="ups">点赞</span> <input type="hidden" id="flag" value="0" /> <script type="text/javascript" > $(function(){ var upscount = $("#upscount"); var ups = $("#ups"); var flag = $("#flag"); ups.click(function(){ dianzan(1); }) dianzan(0); function dianzan(status){ $.getJSON("{APP_PATH}index.php?m=content&c=index&a=dianzan",{"id":"{$id}","status":""+ status +"","flag":""+ flag.val() +""}, function(data){ if(data.flag == 1){ ups.html("取消点赞"); flag.val(data.flag); }else{ ups.html("点赞"); flag.val(data.mark); } upscount.html(data.count); }) } }) </script> </a>
最终效果:
