我们在用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>
最终效果:

