phpcms 点赞_php+js实现点赞功能的示例详解
最近在做一个视频网站,需要实现视频的点赞功能,我是结合ajax和数据库实现的,数据库的格式为有四个字段:文章id,赞,踩,ip。因为需要一个ip只能点赞一次,所以需要一个ip字段存储点赞的ip,这样便于判断该ip是否已经点赞过了;
我将点赞和踩的图片做成两个按钮;具体代码如下:
js程序
$(function(){
var id=$("#vote").attr('rel');//获取到文章id;
$("#vote").click(function(){
$.get("传到哪个页面?id="+id,function(r){
alert(r);
window.location.reload();//点赞成功后刷新页面更新新的点赞次数
})
})
$("#dvote").click(function(){
$.get("/news/dvote?id="+id,function(r){
alert(r);
window.location.reload();
})
})
})
我是用ci框架写,所以在news.php下面的vote方法和dvote方法代表的是赞和踩,具体代码如下
public function vote(){
$id=$_GET['id'];
$ip=getIP();
$getdata=$this->data_model;
$data=$getdata->get_vote_ip($id,$ip);
$msg="";
if(empty($data['ip']) || !$data['ip']){
$data=array('nid'=>$id,'vote'=>1,'ip'=>$ip);
$re=$getdata->insert_vote($data);
$msg.="点赞成功";
}else{
$msg.="一个ip只能操作一次";
}
echo $msg;
}
public function dvote(){
$id=$_GET['id'];
$ip=getIP();
$getdata=$this->data_model;
$data=$getdata->get_vote_ip($id,$ip);
//get_vote_ip($id,$ip),是在模型里面的查询该ip是否已经点赞过,具体代码 如下
//public function get_vote_ip($id,$ip){
// $query=$this->db->query("select * from 表名 where nid='{$id}' and ip='{$ip}'");
// $data=$query->result_array()[0];
// return $data;
// }
$msg="";
if(empty($data['ip']) || !$data['ip']){
$data=array('nid'=>$id,'dvote'=>0,'ip'=>$ip);
$re=$getdata->insert_vote($data);
$msg.="踩成功";
}else{
$msg.="一个ip只能操作一次";
}
echo $msg;
}
点赞可以实现以后,就是需要将点赞数据进行更新,首先需要在数据库查询该篇文章所以的点赞信息
//获取点赞信息
public function get_vote($id){
$query=$this->db->query("select * from tx_vote where nid='{$id}'");
$data=$query->result_array();
return $data;
}
获取信息返回到 控制器里面将赞和踩的信息循环分别存入到数据库中然后分别计算新的数组长度就可以获取赞和踩的次数了,这样的再html页面输出就可以了
到此这篇关于php+js实现点赞功能的示例的文章就介绍到这了,更多相关php+js实现点赞功能内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
phpcms 点赞_php+js实现点赞功能的示例详解相关推荐
- JS ES6中export和import详解
1.Export 模块是独立的文件,该文件内部的所有的变量外部都无法获取.如果希望获取某个变量,必须通过export输出, // profile.js export var firstName = ' ...
- 登录注册功能的实现详解(多用户名注册、案例补充)
登录注册功能的实现详解(多用户名注册.案例补充) 案例功能说明 1.可以保存多个注册用户 2.注册时判断用户名是否存在,不存在可注册 3.注册成功后,跳转到登录页面 4.取出cookie里面的值,进行 ...
- node.js卸载、安装、配置详解
node.js卸载.安装.配置详解 一. node.js卸载 二.下载安装 2.1 下载 2.2 安装 2.2.1 选择msi安装 2.2.2 选择zip安装 三.配置 3.1 环境变量配置 3.2 ...
- JS中的日期和时间详解
JS中的日期和时间详解 关于Date()构造函数 简单实例 用Date()构造函数创建时钟 关于Date()构造函数 Date()构造函数是javascript的核心语言部分,用来创建表示时间和日期的 ...
- php可以打印一个页面,利用html实现分页打印功能的实例详解
本篇介绍利用html实现分页打印功能的实例详解,有些不想打印出来的分页打印的都可以应用这类样式进行控制 在非打印时是无效的. 页面打印 /* 应用这个样式的在打印时隐藏 */ .noPrint { d ...
- js中toString()和String()区别详解
转载自 js中toString()和String()区别详解 我们知道String()与 .toString()都是可以转换为字符串类型,但是String()与 .toString()的还是有区别的 ...
- java调用js匿名函数参数,js匿名函数作为函数参数详解
由衷的感叹,js真是烦. 学到现在,渐渐理解了什么是:语言都是通用的,没有好不好,只有擅长不擅长. 继承,多态,甚至指针,c能实现,c++,java有,javascript(和java是雷锋和雷峰塔的 ...
- Delphi Format函数功能及用法详解
DELPHI中Format函数功能及用法详解 DELPHI中Format函数功能及用法详解function Format(const Format: string; const Args: array ...
- 基于百度地图实现Android定位功能实现(详解+教程)
基于百度地图实现Android定位功能实现(详解+教程) 1.初始化 (一)获取到SHA1 (1)找到View中的Tool Windows并打开Terminal (2)找到你的jdk的bin目录,小编 ...
最新文章
- 题目1192:回文字符串
- 用YACC/LEX 设计计算机语言
- dubbo-provider-deploy
- 水瓶座和什么座最配:天秤座,双子座,狮子座
- android透明像素效率,android-非透明像素上的ImageView ColorFilter.夹
- I2C设备驱动编写,struct i2c_device_id,struct i2c_driver,i2c_add_driver,i2c_register_board_info
- bash的一些小技巧
- 一步一步教你使用AgileEAS.NET基础类库进行应用开发-WinForm应用篇-实现字典的打印...
- 摄像头拼接技术-远超海康大华
- jquery中如何表达本页网址_如何用js得到当前页面的url信息方法(JS获取当前网址信息)...
- 解决桌面右键无NVIDIA控制面板选项
- matlab 2016b caffe,请教:在Win7+VS 2013+Matlab R2016b上编译Caffe时遇到问题
- 大学英语综合教程三 Unit 1 课文内容英译中 中英翻译
- Unity 实现两个向量夹角为0~360度
- 狐狸找兔子(java 版)
- windows如何安装SVN
- 第82次上Topic课(Eyewitness)
- 飞腾发布高可扩展芯片腾云S2500 开启多路服务新时代
- 轻巧入耳,畅享高音质,雷柏VM700S蓝牙TWS背光游戏耳机开箱实测
- 魔方APP项目-04-用户模块API接口、Marshmallow,基本构造器(Schema),Schema数据序列化、Schema数据反序列化、反序列化对数据验证、模型构造器(ModelSchema)
热门文章
- lterator 迭代器 静态属性Symbol.iterator Symbol(Symbol.iterator)
- python3之Scrapy+Selenium切换iframe抓取网易云音乐排行榜
- 我的世界服务器物品不堆叠,我的世界不可堆叠物品怎么堆叠
- 上位机与MES对接的常见方式
- ipad手写笔哪款好?ipad手写笔推荐
- Xilinx原语使用方法
- 关于飞鱼U3D主程/高级的招聘
- 人人学5G-5G频谱方案与关键技术
- 爬虫模拟对“有道在线翻译”发送请求(请求中的数据含需分析js来解出变化数据)
- location 拦截所有_终极广告拦截软件来袭!AdGuard