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 09 PHP
用PHP和ACCESS写聊天室(七)
Oct 09 PHP
一个PHP缓存类代码(附详细说明)
Jun 09 PHP
PHP运行模式的深入理解
Jun 03 PHP
Yii框架登录流程分析
Dec 03 PHP
ThinkPHP文件缓存类代码分享
Apr 22 PHP
php简单判断文本编码的方法
Jul 30 PHP
php简单备份与还原MySql的方法
May 09 PHP
Laravel+jQuery实现AJAX分页效果
Sep 14 PHP
解析PHP之提取多维数组指定列的方法
Jan 03 PHP
利用PHP判断是否是连乘数字串的方法示例
Jul 03 PHP
php设计模式之抽象工厂模式分析【星际争霸游戏案例】
Jan 23 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中的比较运算符详解
2013/10/28 PHP
PHP base64编码后解码乱码的解决办法
2014/06/19 PHP
php-msf源码详解
2017/12/25 PHP
PHP观察者模式实例分析【对比JS观察者模式】
2019/05/22 PHP
实例:用 JavaScript 来操作字符串(一些字符串函数)
2007/02/15 Javascript
JQuery困惑—包装集 DOM节点
2009/10/16 Javascript
js 对联广告、漂浮广告封装类(IE,FF,Opera,Safari,Chrome
2009/11/26 Javascript
javascript-简单的日历实现及Date对象语法介绍(附图)
2013/05/30 Javascript
jQuery中next()方法用法实例
2015/01/07 Javascript
javascript算法题:求任意一个1-9位不重复的N位数在该组合中的大小排列序号
2015/04/01 Javascript
JavaScript返回当前会话cookie全部键值对照的方法
2015/04/03 Javascript
javascript+html5实现绘制圆环的方法
2015/07/28 Javascript
js实现文字在按钮上滚动的方法
2015/08/20 Javascript
JavaScript和HTML DOM的区别与联系及Javascript和DOM的关系
2015/11/15 Javascript
Nodejs--post的公式详解
2017/04/29 NodeJs
JS实现匀加速与匀减速运动的方法示例
2017/09/04 Javascript
浅谈js的解析顺序 作用域 严格模式
2017/10/23 Javascript
微信小程序实现下滑到底部自动翻页功能
2020/03/07 Javascript
jQuery实现回到顶部效果
2020/10/19 jQuery
10种检测Python程序运行时间、CPU和内存占用的方法
2015/04/01 Python
Pycharm编辑器技巧之自动导入模块详解
2017/07/18 Python
python 列表删除所有指定元素的方法
2018/04/19 Python
python实现指定字符串补全空格、前面填充0的方法
2018/11/16 Python
python 使用socket传输图片视频等文件的实现方式
2019/08/07 Python
python 批量修改 labelImg 生成的xml文件的方法
2019/09/09 Python
python文件读写代码实例
2019/10/21 Python
详解css3自定义滚动条样式写法
2017/12/25 HTML / CSS
意大利在线眼镜精品店:Ottica Lipari
2019/11/11 全球购物
进修护士自我鉴定
2013/10/14 职场文书
社会体育专业大学生职业生涯规划书
2014/09/17 职场文书
2014大学班主任工作总结
2014/11/08 职场文书
安全保证书
2015/01/16 职场文书
感谢信范文大全
2015/01/23 职场文书
党员转正大会主持词
2015/07/02 职场文书
2015年度考核个人工作总结
2015/10/24 职场文书
Python pandas读取CSV文件的注意事项(适合新手)
2021/06/20 Python