PHP+MySql+jQuery實(shí)現(xiàn)的“頂"和"踩”投票功能
來源:易賢網(wǎng) 閱讀:742 次 日期:2016-08-19 15:15:03
溫馨提示:易賢網(wǎng)小編為您整理了“PHP+MySql+jQuery實(shí)現(xiàn)的“頂"和"踩”投票功能”,方便廣大網(wǎng)友查閱!

本文實(shí)例為大家分享了基于PHP+jQuery+MySql實(shí)現(xiàn)紅藍(lán)(頂踩)投票代碼,供大家參考,具體內(nèi)容如下

數(shù)據(jù)庫操作:

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>很好,很強(qiáng)大!</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(){ 

 //鼠標(biāo)滑向和離開投票按鈕時(shí),變換背景樣式 

 $("#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"); 

 }); 

 //初始化數(shù)據(jù) 

 getdata("do.php",1); 

 //單擊“頂”時(shí) 

 $("#dig_up").click(function(){ 

 getdata("do.php?action=like",1); 

 }); 

 //單擊“踩”時(shí) 

 $("#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); 

  //通過控制寬度來顯示百分比進(jìn)度條效果 

  $("#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");//連接數(shù)據(jù)庫 

$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?'您已經(jīng)頂過了':'您已經(jīng)踩過了'; 

 $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); 

以上就是本文的全部內(nèi)容,希望對大家學(xué)習(xí)php程序設(shè)計(jì)有所幫助。

更多信息請查看網(wǎng)絡(luò)編程
易賢網(wǎng)手機(jī)網(wǎng)站地址:PHP+MySql+jQuery實(shí)現(xiàn)的“頂"和"踩”投票功能
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 加入群交流 | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65317125(9:00—18:00) 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
咨詢QQ:526150442(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)