index.html

  1. <!DOCTYPE HTML>
    <html>
    <head>
    <meta charset="utf-8">
    <title>演示:PHP+jQuery+MySql实现的“顶”和“踩”功能</title>
    <meta name="keywords" content="PHP,mysql,jquery" />
    <meta name="description" content="Helloweba演示平台,演示XHTML、CSS、jquery、PHP案例和示例" />
    <link rel="stylesheet" type="text/css" href="main.css" />
    <style type="text/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}
    </style>
    </head>
  2.  
  3. <body>
  4.  
  5. <div id="main">
    <h2 class="top_title">PHP+jQuery+MySql实现的“顶”和“踩”功能</h2>
    <div class="digg">
    <div id="dig_up" class="digup">
    <span id="num_up"></span>
    <p>很好,很强大!</p>
    <div id="bar_up" class="bar"><span style=""></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 style=""></span><i></i></div>
    </div>
    <div id="msg"></div>
    </div>
    <!--<div class="ad_76090"><script src="bd_76090.js" type="text/javascript"></script></div><br/>-->
    </div>
    </body>
    <script type="text/javascript" src="jquery.min.js"></script>
    <script type="text/javascript">
    $(function(){
    //初始化数据
    getdata("do.php",1);
  6.  
  7. $.getJSON('do.php',function(data){
  8.  
  9. //显示数字和百分比进度条效果
    $("#bar_up span").css('width',data.like_percent);
    $("#bar_up i").html(data.like_percent);
    $("#num_down").html(data.unlike);
    $("#bar_down span").html('width',data.unlike_percent);
    $("#bar_down i").html(data.unlike_percent);
    });
  10.  
  11. $("#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");
    });
  12.  
  13. $("#dig_up").click(function(){
    getdata("do.php?action=like",1);
    });
  14.  
  15. $("#dig_down").click(function(){
    getdata("do.php?action=unlike",1);
    });
    });
  16.  
  17. 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");
    }
    });
    }
    </script>
  18.  
  19. </html>
  20.  
  21. do.php
  1. <?php
    include_once("connect.php");
  2.  
  3. $action = $_GET['action'];
    $id = 1;
    $ip = get_client_ip();
  4.  
  5. if($action=='like'){
    likes(1,$id,$ip);
    }elseif($action=='unlike'){
    likes(0,$id,$ip);
    }else{
    echo jsons($id);
    }
  6.  
  7. 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);
  8.  
  9. $sql_in = "insert into votes_ip (vid,ip) values ('$id','$ip')";
    mysql_query($sql_in);
  10.  
  11. echo jsons($id);
    }else{
    $msg = $type==1?'您已经顶过了':'您已经踩过了';
    $arr['success'] = 0;
    $arr['msg'] = $msg;
    echo json_encode($arr);
    }
    }
  12.  
  13. 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).'%';
  14.  
  15. return json_encode($arr);
    }
  16.  
  17. //获取用户真实IP
    function get_client_ip() {
    if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))
    $ip = getenv("HTTP_CLIENT_IP");
    else
    if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
    $ip = getenv("HTTP_X_FORWARDED_FOR");
    else
    if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
    $ip = getenv("REMOTE_ADDR");
    else
    if (isset ($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
    $ip = $_SERVER['REMOTE_ADDR'];
    else
    $ip = "unknown";
    return ($ip);
    }
    ?>
  18.  
  19. connect.php
  1. <?php
    //数据库配置
    $host="localhost";
    $db_user="root";//用户名
    $db_pass="1234567890";//密码
    $db_name="vote";//数据库名
    $timezone="Asia/Shanghai";
  2.  
  3. $link=mysql_connect($host,$db_user,$db_pass);
    mysql_select_db($db_name,$link);
    mysql_query("SET names UTF8");
  4.  
  5. header("Content-Type: text/html; charset=utf-8");
    ?>
  6.  
  7. main.css,images/ 略
  8.  
  9. 详见 http://www.helloweba.com/view-blog-237.html

PHP+MySql+jQuery实现的“顶”和“踩”投票功能的更多相关文章

  1. PHP+Mysql实现网站顶和踩投票功能实例

    PHP+Mysql实现网站顶和踩投票功能实例,通过记录用户IP,判断用户的投票行为是否有效,该实例也可以扩展到投票系统中. 首先我们在页面上放置“顶”和“踩”的按钮,即#dig_up和#dig_dow ...

  2. (进阶篇)PHP+Mysql+jQuery找回密码

    通常所说的密码找回功能不是真的能把忘记的密码找回,因为我们的密码是加密保存的,一般开发者会在验证用户信息后通过程序生成一个新密码或者生成一个特定的链接并发送邮件到用户邮箱,用户从邮箱链接到网站的重置密 ...

  3. PHP+Mysql+jQuery找回密码

    通常所说的密码找回功能不是真的能把忘记的密码找回,因为我们的密码是加密保存的,一般开发者会在验证用户信息后通过程序生成一个新密码或者生成一个特定的链接并发送邮件到用户邮箱,用户从邮箱链接到网站的重置密 ...

  4. PHP+Mysql+jQuery实现地图区域数据统计-展示数据

    我们要在地图上有限的区块内展示更多的信息,更好的办法是通过地图交互来实现.本文将给大家讲解通过鼠标滑动到地图指定省份区域,在弹出的提示框中显示对应省份的数据信息.适用于数据统计和地图区块展示等场景. ...

  5. PHP+Mysql+jQuery实现中国地图区域数据统计(raphael.js)

    使用过百度统计或者cnzz统计的童鞋应该知道,后台有一个地图统计,不同访问量的省份显示的颜色也不一样,今天我将带领大家开发一个这样的案例.上一篇<使用raphael.js绘制中国地图>文章 ...

  6. js上移、下移、置顶、置底功能实现

    实现页面上列表内容上移.下移.置顶.置底 功能,主要实现思路是节点操作,比如说:上移,直接把点击项移动到前一个节点,以此类推,当然实际代码实现还要加些判断,如当前点击操作项是否已经是置底或置底了,如果 ...

  7. php+MySql实现登录系统与输出浏览者信息功能

    这篇文章主要介绍了php+MySql实现登录系统与输出浏览者信息功能 的相关资料,需要的朋友可以参考下   本系统,与之前在<ASP 连接Access数据库的登陆系统>(点击打开链接)一文 ...

  8. jquery.pagination.js 新增 首页 尾页 功能

    jquery.pagination.js 新增 首页 尾页 功能 废话不多说,直接上修改后的代码,修改部分已经用 update 注释包含 17-20行 99-103行 141-145行 /** * T ...

  9. jQuery实现无刷新切换主题皮肤功能

    主题皮肤切换功能在很多网站和系统中应用,用户可以根据此功能设置自己喜欢的主题颜色风格,增强了用户体验.本文将围绕如何使用jQuery实现点击无刷新切换主题皮肤功能. 查看演示DEMO:https:// ...

随机推荐

  1. 混合开发中ios兼容问题

    1. z-index无效,设置层级,发现再ios中无效,后来发现是设置了 -webkit-overflow-scrolling:touch 设置这个属性之后.层级设置失效 2.@keyup事件的问题, ...

  2. nginx安装和测试 (已验证)

    进入:/usr/local/nginx 目录注意:为了保证各插件之间的版本兼容和稳定,建议先通过以下版本进行测试验证. 一.下载版本 下载nginx: wget http://nginx.org/do ...

  3. 使用or展开进行sql优化(即sql语法union all代替or可以提高效率)

    问题: 这样一条sql应该怎么优化? select * from sys_user where user_code = 'zhangyong' or user_code in (select grp_ ...

  4. 设计模式之——Decorator模式

    Decorator模式又叫装饰者模式,这种模式是为了满足Java开发的"面向扩展开放,面向修改闭源"的开发原则设计出来的. 在装饰者模式中,不修改源类的代码,却能修改源类中方法的功 ...

  5. 第二次作业(WordCount)

    1 Github项目地址:https://gitee.com/DamonGetup/WordCount/tree/master 2 对程序设计语言源文件统计字符数.单词数.行数,统计结果以指定格式输出 ...

  6. Linux下的pure-ftp的安装详解

    FTP(File Transfer Protocol)是文件传输协议,常用于Internet上控制文件的双向传输.同时,它也是一个应用程序,用户可以通过它把自己PC机与世界各地所运行FTP协议的服务器 ...

  7. Python开发【模块】:re正则

    re模块 序言: re模块用于对python的正则表达式的操作 '.' 默认匹配除\n之外的任意一个字符,若指定flag DOTALL,则匹配任意字符,包括换行 '^' 匹配字符开头,若指定flags ...

  8. Python开发【项目】:RPC异步执行命令(RabbitMQ双向通信)

    RPC异步执行命令 需求: 利用RibbitMQ进行数据交互 可以对多台服务器进行操作 执行命令后不等待命令的执行结果,而是直接让输入下一条命令,结果出来后自动打印 实现异步操作 不懂rpc的请移步h ...

  9. 商铺项目(Redis缓存)

    AOF,RDB是两种 redis持久化的机制.用于crash后,redis的恢复. 两种区别就是,AOF是持续的用日志记录写操作,crash后利用日志恢复:RDB是平时写操作的时候不触发写,只有手动提 ...

  10. matplotlib常见绘图基础代码小结:折线图、散点图、条形图、直方图、饼图

    一.折线图 二.散点图 三.条形图 四.直方图 五.饼图 一.折线图折线图用于显示随时间或有序类别的变化趋势 from matplotlib import pyplot as plt x = rang ...