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和ACCESS写聊天室(七)
Oct 09 PHP
php若干单维数组遍历方法的比较
Sep 20 PHP
PHP基础教程(php入门基础教程)一些code代码
Jan 06 PHP
php上传apk后自动提取apk包信息的使用(示例下载)
Apr 26 PHP
Windows下的PHP 5.3.x安装 Zend Guard Loader教程
Sep 06 PHP
twig里使用js变量的方法
Feb 05 PHP
JavaScript实现删除电脑的关机键
Jul 26 PHP
php结合redis高并发下发帖、发微博的实现方法
Dec 15 PHP
Thinkphp3.2实用篇之计算型验证码示例
Feb 09 PHP
详解thinkphp中的volist标签
Jan 15 PHP
php实现姓名根据首字母排序的类与方法(实例代码)
May 16 PHP
ThinkPHP like模糊查询,like多匹配查询,between查询,in查询,一般查询书写方法
Sep 26 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
php 网页游戏开发入门教程一(webgame+design)
2009/10/26 PHP
codeigniter使用技巧批量插入数据实例方法分享
2013/12/31 PHP
php好代码风格的阶段性总结
2016/06/25 PHP
七种PHP开发环境搭建工具
2020/06/28 PHP
range 标准化之获取
2011/08/28 Javascript
浅析Node.js中使用依赖注入的相关问题及解决方法
2015/06/24 Javascript
js限制input标签中只能输入中文
2015/06/26 Javascript
Bootstrap每天必学之简单入门
2015/11/19 Javascript
延时加载JavaScript代码提高速度
2015/12/27 Javascript
Jquery Easyui菜单组件Menu使用详解(15)
2016/12/18 Javascript
基于Vue+element-ui 的Table二次封装的实现
2018/07/20 Javascript
JS实现简单的星期格式转换功能示例
2018/07/23 Javascript
layui自定义插件citySelect实现省市区三级联动选择
2019/07/26 Javascript
js正则匹配多个全部数据问题
2019/12/20 Javascript
Element Alert警告的具体使用方法
2020/07/27 Javascript
使用jquery实现轮播图效果
2021/01/02 jQuery
Python常用模块用法分析
2014/09/08 Python
python访问mysql数据库的实现方法(2则示例)
2016/01/06 Python
matplotlib savefig 保存图片大小的实例
2018/05/24 Python
python xpath获取页面注释的方法
2019/01/14 Python
详解Pytorch显存动态分配规律探索
2020/11/17 Python
boostrap modal 闪现问题的解决方法
2020/09/01 HTML / CSS
英国领先的鞋类零售商和顶级品牌的官方零售商:Wynsors
2020/02/17 全球购物
运动会广播稿200字
2014/01/15 职场文书
《找不到快乐的波斯猫》教学反思
2014/02/24 职场文书
中国入世承诺
2014/04/01 职场文书
《高尔基和他的儿子》教学反思
2014/04/09 职场文书
结婚保证书(卖身契)
2015/02/26 职场文书
MBA推荐信怎么写
2015/03/25 职场文书
党小组推荐意见
2015/06/02 职场文书
病假证明模板
2015/06/19 职场文书
特种设备安全管理制度
2015/08/06 职场文书
党员学习中国梦心得体会
2016/01/05 职场文书
详解Python常用的魔法方法
2021/06/03 Python
Java elasticsearch安装以及部署教程
2021/06/28 Java/Android
源码分析Redis中 set 和 sorted set 的使用方法
2022/03/22 Redis