凡科手机网站设置问题,策划公司有哪些,网络方案怎么写,长春 网络设计本文是一篇综合知识应用类文章#xff0c;需要您具备PHP、jQuery、MySQL以及html和css方面的基本知识。本文在《PHPMySqljQuery实现的“顶”和“踩”投票功能》一文基础上做了适当改进#xff0c;共用了数据表#xff0c;您可以先点击了解这篇文章。HTML我们需要在页面中展示…本文是一篇综合知识应用类文章需要您具备PHP、jQuery、MySQL以及html和css方面的基本知识。本文在《PHPMySqljQuery实现的“顶”和“踩”投票功能》一文基础上做了适当改进共用了数据表您可以先点击了解这篇文章。HTML我们需要在页面中展示红蓝双方的观点以及对应的投票数和比例以及用于投票交互的手型图片本例以#red和#blue分别表示红蓝双 方。.redhand和.bluehand用来做手型投票按钮.redbar和.bluebar展示红蓝双方比例调#red_num 和#blue_num展示双方投票数。Html代码 您对Helloweba提供的文章的看法非常实用完全看不懂CSS使用CSS将页面美化加载背景图片确定相对位置等等你可以直接复制以下代码在自己的项目中稍作修改即可。Html代码 .vote{width:288px; height:220px; margin:60px auto 20px auto;position:relative}.votetitle{width:100%;height:62px; background:url(icon.png) no-repeat 0 30px; font-size:15px}.red{position:absolute; left:0; top:90px; height:80px;}.blue{position:absolute; right:0; top:90px; height:80px;}.votetxt{line-height:24px}.votetxt span{float:right}.redhand{position:absolute; left:0;width:36px; height:36px; background:url(icon.png) no-repeat -1px -38px;cursor:pointer}.bluehand{position:absolute; right:0;width:36px; height:36px; background:url(icon.png) no-repeat -41px -38px;cursor:pointer}.grayhand{width:34px; height:34px; background:url(icon.png) no-repeat -83px -38px;cursor:pointer}.redbar{position:absolute; left:42px; margin-top:8px;}.bluebar{position:absolute; right:42px; margin-top:8px; }.redbar span{display:block; height:6px; background:red; width:100%;border-radius:4px;}.bluebar span{display:block; height:6px; background:#09f; width:100%;border-radius:4px; position:absolute; right:0}.redbar p{line-height:20px; color:red;}.bluebar p{line-height:20px; color:#09f; text-align:right; margin-top:6px}jQuery当点击手型按钮时利用jQuery的$.getJSON()向后台php发送Ajax请求如果请求成功将会得到后台返回的json数 据jQuery再将json数据进行处理。以下函数getdata(url,sid)传递了两个参数url是请求的后台php地址sid表示当 前投票主题ID我们在该函数中返回的json数据有红蓝双方的投票数以及双方比例根据比例计算比例条的宽度异步交互展示投票效果。Js代码 function getdata(url,sid){$.getJSON(url,{id:sid},function(data){if(data.success1){var w 208; //定义比例条的总宽度//红方投票数$(#red_num).html(data.red);$(#red).css(width,data.red_percent*100%);var red_bar_w w*data.red_percent-10;//红方比例条宽度$(#red_bar).css(width,red_bar_w);//蓝方投票数$(#blue_num).html(data.blue);$(#blue).css(width,data.blue_percent*100%);var blue_bar_w w*data.blue_percent;//蓝方比例条宽度$(#blue_bar).css(width,blue_bar_w);}else{alert(data.msg);}});}当页面初次加载时即调用getdata()然后点击给红方投票或给蓝方投票同样调用getdata()只是传递的参数不一样。注意本例中的参数sid我们设置为1是根据数据表中的id设定的开发者可以根据实际项目读取准确的id。Js代码 $(function(){//获取初始数据getdata(vote.php,1);//红方投票$(.redhand).click(function(){getdata(vote.php?actionred,1);});//蓝方投票$(.bluehand).click(function(){getdata(vote.php?actionblue,1);});});PHP前端请求了后台的vote.phpvote.php将根据接收的参数连接数据库调用相关函数。Php代码 include_once(connect.php);$action $_GET[action];$id intval($_GET[id]);$ip get_client_ip();//获取ipif($actionred){//红方投票vote(1,$id,$ip);}elseif($actionblue){//蓝方投票vote(0,$id,$ip);}else{//默认返回初始数据echo jsons($id);}函数vote($type,$id,$ip)用来做出投票动作$type表示投票方$id表示投票主题的id$ip表示用户当前ip。首先根 据用户当前IP查询投票记录表votes_ip中是否已经存在当前ip记录如果存在则说明用户已投票否则更新红方或蓝方的投票数并将当前用户投 票记录写入到votes_ip表中以防重复投票。Php代码 function vote($type,$id,$ip){$ip_sqlmysql_query(select ip from votes_ip where vid$id and ip$ip);$countmysql_num_rows($ip_sql);if($count0){//还没有投票if($type1){//红方$sql update votes set likeslikes1 where id.$id;}else{//蓝方$sql update votes set unlikesunlikes1 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{$arr[success] 0;$arr[msg] 已经投票过了;echo json_encode($arr);}}函数jsons($id)通过查询当前id的投票数计算比例并返回json数据格式供前端调用。Php代码 function jsons($id){$query mysql_query(select * from votes where id.$id);$row mysql_fetch_array($query);$red $row[likes];$blue $row[unlikes];$arr[success]1;$arr[red] $red;$arr[blue] $blue;$red_percent round($red/($red$blue),3);$arr[red_percent] $red_percent;$arr[blue_percent] 1-$red_percent;return json_encode($arr);}MySQL最后贴上Mysql数据表votes表用来记录红蓝双方的投票总数votes_ip表则用来存放用户的投票IP记录。Sql代码 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)) ENGINEMyISAM DEFAULT CHARSETutf8;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) ENGINEMyISAM DEFAULT CHARSETutf8;再次提醒下载的demo如果运行不了请先检查数据库连接配置是否正确。好了少说两句快来投票吧查看演示。