PHP+MySql+jQuery实现的"顶"和"踩"投票功能


Posted in PHP onMay 21, 2016

本文实例为大家分享了基于PHP+jQuery+MySql实现红蓝(顶踩)投票代码,供大家参考,具体内容如下

数据库操作:

CREATE TABLE IF NOT EXISTS `votes` ( 
 `id` int(10) NOT NULL AUTO_INCREMENT, 
 `likes` int(10) NOT NULL DEFAULT '0', 
 `unlikes` int(10) NOT NULL DEFAULT '0', 
 PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8; 
 
 
INSERT INTO `votes` (`id`, `likes`, `unlikes`) VALUES 
(1, 30, 10); 
 
CREATE TABLE IF NOT EXISTS `votes_ip` ( 
 `id` int(10) NOT NULL, 
 `vid` int(10) NOT NULL, 
 `ip` varchar(40) NOT NULL 
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

div: 

<div class="digg"> 
 <div id="dig_up" class="digup"> 
 <span id="num_up"></span> 
 <p>很好,很强大!</p> 
 <div id="bar_up" class="bar"><span></span><i></i></div> 
 </div> 
 <div id="dig_down" class="digdown"> 
 <span id="num_down"></span> 
 <p>太差劲了!</p> 
 <div id="bar_down" class="bar"><span></span><i></i></div> 
 </div> 
 <div id="msg"></div> 
</div>

css:

.digg{width:420px; height:120px; margin:80px auto 20px auto; position:relative} 
#dig_up,#dig_down{width:200px; height:48px; margin:10px; position:relative; 
border:1px solid #d3d3d3; padding-left:42px; cursor:pointer} 
.digup{background:url(diggs.png) no-repeat 4px 2px;} 
.digup_on{background:url(diggs.png) no-repeat 4px -49px;} 
.digdown{background:url(diggs.png) no-repeat 4px -102px;} 
.digdown_on{background:url(diggs.png) no-repeat 4px -154px;} 
#num_up,#num_down{position:absolute; right:6px; top:18px; font-size:20px;} 
#dig_up p{height:24px; line-height:24px; color:#360} 
#dig_down p{height:24px; line-height:24px; color:#f30} 
.bar{width:100px; height:12px; line-height:12px; border:1px solid #f0f0f0; 
position:relative; text-align:center} 
.bar span{display:block; height:12px; } 
.bar i{position:absolute; top:0; left:104px;} 
#bar_up span{background:#360} 
#bar_down span{background:#f60} 
#msg{position:absolute; right:20px; top:40px; font-size:18px; color:#f00}

jquery:

$(function(){ 
 //鼠标滑向和离开投票按钮时,变换背景样式 
 $("#dig_up").hover(function(){ 
 $(this).addClass("digup_on"); 
 },function(){ 
 $(this).removeClass("digup_on"); 
 }); 
 $("#dig_down").hover(function(){ 
 $(this).addClass("digdown_on"); 
 },function(){ 
 $(this).removeClass("digdown_on"); 
 }); 
 
 //初始化数据 
 getdata("do.php",1); 
 
 //单击“顶”时 
 $("#dig_up").click(function(){ 
 getdata("do.php?action=like",1); 
 }); 
 //单击“踩”时 
 $("#dig_down").click(function(){ 
 getdata("do.php?action=unlike",1); 
 }); 
}); 
 
 
 
---------------------------------------
function getdata(url,sid){ 
 $.getJSON(url,{id:sid},function(data){ 
 if(data.success==1){//投票成功 
  $("#num_up").html(data.like); 
  //通过控制宽度来显示百分比进度条效果 
  $("#bar_up span").css("width",data.like_percent); 
  $("#bar_up i").html(data.like_percent); 
  $("#num_down").html(data.unlike); 
  $("#bar_down span").css("width",data.unlike_percent); 
  $("#bar_down i").html(data.unlike_percent); 
 }else{//投票失败 
  $("#msg").html(data.msg).show().css({'opacity':1,'top':'40px'}) 
  .animate({top:'-50px',opacity:0}, "slow"); 
 } 
 }); 
}

php:

include_once("connect.php");//连接数据库 
 
$action = $_GET['action']; 
$id = 1; 
$ip = get_client_ip();//获取ip 
 
if($action=='like'){//顶 
 likes(1,$id,$ip); 
}elseif($action=='unlike'){//踩 
 likes(0,$id,$ip); 
}else{ 
 echo jsons($id); 
} 
 
------------------------------------
function likes($type,$id,$ip){ 
 $ip_sql=mysql_query("select ip from votes_ip where vid='$id' and ip='$ip'"); 
 $count=mysql_num_rows($ip_sql); 
 if($count==0){//还没有顶过 
 if($type==1){//顶 
  $sql = "update votes set likes=likes+1 where id=".$id; 
 }else{//踩 
  $sql = "update votes set unlikes=unlikes+1 where id=".$id; 
 } 
 mysql_query($sql); 
  
 $sql_in = "insert into votes_ip (vid,ip) values ('$id','$ip')"; 
 mysql_query($sql_in); 
  
 if(mysql_insert_id()>0){ 
  echo jsons($id); 
 }else{ 
  $arr['success'] = 0; 
  $arr['msg'] = '操作失败,请重试'; 
  echo json_encode($arr); 
 } 
 }else{ 
 $msg = $type==1?'您已经顶过了':'您已经踩过了'; 
 $arr['success'] = 0; 
 $arr['msg'] = $msg; 
 echo json_encode($arr); 
 } 
} 
 
 
-----------php-------------------------
 
 
function jsons($id){ 
 $query = mysql_query("select * from votes where id=".$id); 
 $row = mysql_fetch_array($query); 
 $like = $row['likes']; 
 $unlike = $row['unlikes']; 
 $arr['success']=1; 
 $arr['like'] = $like; 
 $arr['unlike'] = $unlike; 
 $like_percent = round($like/($like+$unlike),3)*100; 
 $arr['like_percent'] = $like_percent.'%'; 
 $arr['unlike_percent'] = (100-$like_percent).'%'; 
 
 return json_encode($arr); 
}

以上就是本文的全部内容,希望对大家学习php程序设计有所帮助。

PHP 相关文章推荐
php 保留字列表
Oct 04 PHP
zf框架的zend_cache缓存使用方法(zend框架)
Mar 14 PHP
php微信公众开发之获取周边酒店信息的方法
Dec 22 PHP
PHP调试函数和日志记录函数分享
Jan 31 PHP
PHP获取音频文件的相关信息
Jun 22 PHP
PHP开发制作一个简单的活动日程表Calendar
Jun 20 PHP
Laravel 5.3 学习笔记之 安装
Aug 28 PHP
PHP二进制与字符串之间的相互转换教程
Oct 14 PHP
PHP链表操作简单示例
Oct 15 PHP
PHP中的use关键字及文件的加载详解
Nov 28 PHP
PHP实现基于栈的后缀表达式求值功能
Nov 10 PHP
PHP编程一定要改掉的5个不良习惯
Sep 18 PHP
制作个性化的WordPress登陆界面的实例教程
May 21 #PHP
详解WordPress中添加友情链接的方法
May 21 #PHP
PHP框架Laravel插件Pagination实现自定义分页
Apr 22 #PHP
屏蔽PHP默认设置中的Notice警告的方法
May 20 #PHP
PHP获取网站中各文章的第一张图片的代码示例
May 20 #PHP
今天你说520了吗?不仅有php表白书还有java表白神器
May 20 #PHP
程序员的表白神器“520”大声喊出来
May 20 #PHP
You might like
使用VisualStudio开发php的图文设置方法
2010/08/21 PHP
PHP中isset()和unset()函数的用法小结
2014/03/11 PHP
php实现的常见排序算法汇总
2014/09/08 PHP
PHP实现基于3DES算法加密解密字符串示例
2018/08/24 PHP
JavaScript中的noscript元素属性位置及作用介绍
2013/04/11 Javascript
IE6中链接A的href为javascript协议时不在当前页面跳转
2014/06/05 Javascript
jquery和css3实现的炫酷时尚的菜单导航
2014/09/01 Javascript
node.js中的fs.chmod方法使用说明
2014/12/18 Javascript
javascript实现简单查找与替换的方法
2015/07/22 Javascript
jQuery实现多级联动下拉列表查询框
2016/01/18 Javascript
js+html5操作sqlite数据库的方法
2016/02/02 Javascript
jQuery获取剪贴板内容的方法
2016/06/16 Javascript
利用jquery实现下拉框的禁用与启用
2016/12/07 Javascript
vue2.0+vue-dplayer实现hls播放的示例
2018/03/02 Javascript
node.js博客项目开发手记
2018/03/16 Javascript
重学JS 系列:聊聊继承(推荐)
2019/04/11 Javascript
postman自定义函数实现 时间函数的思路详解
2019/04/17 Javascript
使用vue2.6实现抖音【时间轮盘】屏保效果附源码
2019/04/24 Javascript
通过实践编写优雅的JavaScript代码
2019/05/30 Javascript
vue简单练习 桌面时钟的实现代码实例
2019/09/19 Javascript
基于JavaScript或jQuery实现网站夜间/高亮模式
2020/05/30 jQuery
jQuery zTree如何改变指定节点文本样式
2020/10/16 jQuery
使用Django和Python创建Json response的方法
2018/03/26 Python
Pyinstaller将py打包成exe的实例
2018/03/31 Python
Python从ZabbixAPI获取信息及实现Zabbix-API 监控的方法
2018/09/17 Python
使用python 打开文件并做匹配处理的实例
2019/01/02 Python
详解基于python的多张不同宽高图片拼接成大图
2019/09/26 Python
Python reshape的用法及多个二维数组合并为三维数组的实例
2020/02/07 Python
百丽国际旗下购物网站:优购
2017/02/28 全球购物
JACK & JONES荷兰官网:男士服装和鞋子
2021/03/07 全球购物
卡拉威高尔夫官方网站:Callaway Golf
2020/09/16 全球购物
高校教师个人总结
2015/02/10 职场文书
公务员个人总结
2015/02/12 职场文书
2015年重阳节慰问信
2015/03/23 职场文书
2015年领导班子工作总结
2015/05/23 职场文书
golang 语言中错误处理机制
2021/08/30 Golang