亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

PHP+jQuery+Ajax+Mysql如何實現發表心情功能

2019-11-20 11:53:58
字體:
來源:轉載
供稿:網友

實現發表心情功能通過php+jquery+ajax+mysql技術,大致流程我先給大家理下:主頁index.html頁面通過ajax獲取心情圖標及柱狀圖相關數據,當用戶點擊其中的一個心情圖標時,向后臺php發送請求,php對用戶cookie驗證(是否是首次提交),然后將數據庫對應的心情字段內容加1,成功后返回前端頁面,告訴首頁index頁面發表成功,并調整柱狀圖和統計數據。

請看效果圖:

html:

先看HTML,我們在index.html中放置一個#msg,用來顯示操作結果信息,#mood是操作主區域,其中ul通過javascript異步加載心情圖標、說明、柱狀圖以及統計信息。

復制代碼 代碼如下:

<div id="msg"></div>
    <div id=mood>
    <ul></ul>
</div>

PHP
首先我們在config.php配置文件中,配置數據庫連接信息,以及示例相關參數。
$

host="localhost";$db_user="root";$db_pass="";$db_name="demo";$link=mysql_connect($host,$db_user,$db_pass);mysql_select_db($db_name,$link);mysql_query("SET names UTF8");//心情說明,用半角逗號隔開$moodname='震驚,不解,憤怒,杯具,無聊,高興,支持,超贊';//心情圖標文件,用半角逗號隔開(template/images/目錄)$moodpic='a1.gif,a2.gif,a3.gif,a4.gif,a5.gif,a6.gif,a7.gif,a8.gif';//統計心情柱圖標最大高度$moodpicheight=80;

接下來,我們在mood.php中準備分兩部分,通過接收action參數,分為第一部分:發表心情,第二部分:獲取心情相關信息。

復制代碼 代碼如下:

include_once("config.php");
$action = $_GET['action'];
if($action=='send'){ //發表心情
 ...
}else{ //獲取心情
 ...
}

Part1:發表心情。
用戶從前端通過post提交發表心情的參數,包括文章id,心情id。先驗證文章是否存在,然后再驗證用戶是否已經對這篇文章發表過心情了,接著操作數據庫,將對應的心情字段值+1,并計算出當前心情對應的柱狀圖的高度,返回給前端js接收。

$id = (int)$_POST['id']; //文章或帖子id$mid = (int)$_POST['moodid']; //心情id(配置文件中提供8種心情)if(!$mid || !$id){ echo "此鏈接不存在";exit;}$havemood = chk_mood($id); //驗證cookieif($havemood==1){ echo "您已經表達過心情了,保持平常心有益身心健康!";exit;}$field = 'mood'.$mid; //數據表中的心情字段,分別用mood0,mood1,mood2...表示不同的心情字段$query = mysql_query("update mood set ".$field."=".$field."+1 where id=".$id); //對應的心情字段值+1if($query){ setcookie("mood".$id, $mid.$id, time()+300); //設置cookie,為了測試我們設置cookie過期時間為300s $query2 = mysql_query("select * from mood where id=$id"); $rs = mysql_fetch_array($query2);//獲取該文章的心情數據 $total = $rs['mood0']+$rs['mood1']+$rs['mood2']+$rs['mood3']+$rs['mood4']+$rs['mood5']+$rs['mood6']+$rs['mood7']; $height = round(($rs[$field]/$total)*$moodpicheight); //得到總量,并計算當前對應心情的柱狀圖的高度 echo $height; //返回當前心情柱狀的高度}else{ echo -1; //數據出錯}

驗證用戶是否已發表過心情,我們通過函數chk_mood()來判斷用戶對應的cookie是否存在。

//驗證是否提交過function chk_mood($id){ $cookie = $_COOKIE['mood'.$id]; if($cookie){ $doit = 1; }else{ $doit = 0; } return $doit;}

Part2:獲取心情
通過獲取數據表中文章或帖子id對應的心情數據,得到每種心情對應的值(可以理解為發表心情的次數),并計算其柱狀圖高度,將每種心情對應的值、名稱、圖標、高度信息構造成數組,最終以JSON格式數據返回給前端。

$mname = explode(',',$moodname);//心情說明$num = count($mname);$mpic = explode(',',$moodpic);//心情圖標$id = (int)$_GET['id']; //文章或帖子id$query = mysql_query("select * from mood where id=$id"); //查詢對應的心情數據$rs = mysql_fetch_array($query);if($rs){ //得到發表心情的總量 $total = $rs['mood0']+$rs['mood1']+$rs['mood2']+$rs['mood3']+$rs['mood4']+$rs['mood5']+$rs['mood6']+$rs['mood7']; for($i=0;$i<$num;$i++){ $field = 'mood'.$i; //字段名 $m_val = intval($rs[$field]); //心情對應的值(次數) $height = 0; //柱圖高度 if($total && $m_val){ $height=round(($m_val/$total)*$moodpicheight); //計算高度 }  $arr[] = array( 'mid' => $i, //對應心情id 'mood_name' => $mname[$i], //心情名稱 'mood_pic' => $mpic[$i], //圖標 'mood_val' => $m_val, //次數 'height' => $height //柱狀圖高度 ); } echo json_encode($arr); //返回JSON數據}

jQuery

我們使用強大的jQuery來完成本例中所有ajax的交互動作,因此在index.html中要先載入jquery.js庫,目前1.8版本已經發布了哦,可以到官網http://jquery.com/下載。
接著我們向mood.php發送Ajax請求,獲取心情列表信息,并展示在index.html頁面中。

$(function(){ $.ajax({ type: 'GET', //通過get方式發送請求 url: 'mood.php', //目標地址 cache: false, //不緩存數據,注意文明發表心情的數據是實時的,需將cache設置為false,默認是true data: 'id=1', //參數,對應文章或帖子的id,本例中固定為1,實際應用中是獲取當前文章或帖子的id dataType: 'json', //數據類型為json error: function(){ alert('出錯了!'); }, success: function(json){ //請求成功后 if(json){ $.each(json,function(index,array){ //遍歷json數據列 var str = "<li><span>"+array['mood_val']+"</span><div class="pillar" style="height:"+array['height']+"px;"></div><div class="face" rel=""+array['mid']+""><img src="images/"+array['mood_pic']+""><br/>"+array['mood_name']+"</div></li>";  $("#mood ul").append(str); //將數據加入到#mood ul列表中  });  } } }); ...});

這樣,我們在訪問index.html后,頁面會載入心情列表,當然要想看到最終排列效果,還需要CSS,本文不講解相關CSS,請下載源碼或查看demo了解。
接下來,我們有個交互動作,當點擊對應的心情圖標時,圖標被標識為已發表,柱狀圖高度發生變化,并且上面的數字會+1,表示發表成功,如果繼續點擊心情圖標,會提示已經發表過不能重復提交。請看代碼:

$(".face").live('click',function(){ //偵聽點擊事件 var face = $(this); var mid = face.attr("rel"); //對應的心情id var value = face.parent().find("span").html(); var val = parseInt(value)+1; //數字加1 //提交post請求 $.post("mood.php?action=send",{moodid:mid,id:1},function(data){ if(data>0){ face.prev().css("height",data+"px"); face.parent().find("span").html(val); face.find("img").addClass("selected"); $("#msg").show().html("操作成功").fadeOut(2000); }else{ $("#msg").show().html(data).fadeOut(2000); } });});

沒看明白的童鞋可以下載源碼仔細研究,點擊文章開頭的Download按鈕即可下載,最后附上本例所需的mysql數據表結構,謝謝您的關注。

CREATE TABLE IF NOT EXISTS `mood` ( `id` int(11) NOT NULL, `mood0` int(11) NOT NULL DEFAULT '0', `mood1` int(11) NOT NULL DEFAULT '0', `mood2` int(11) NOT NULL DEFAULT '0', `mood3` int(11) NOT NULL DEFAULT '0', `mood4` int(11) NOT NULL DEFAULT '0', `mood5` int(11) NOT NULL DEFAULT '0', `mood6` int(11) NOT NULL DEFAULT '0', `mood7` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;INSERT INTO `mood` (`id`, `mood0`, `mood1`, `mood2`, `mood3`, `mood4`, `mood5`, `mood6`, `mood7`)VALUES(1, 8, 6, 20, 16, 6, 9, 15, 21);

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
福利精品视频在线| 国产精品一区二区在线| 2018日韩中文字幕| 亚洲精品久久久久久久久| 精品久久久久久久久国产字幕| 欧美性20hd另类| 在线播放日韩欧美| 欧美极度另类性三渗透| 国产精品免费观看在线| 久久精品视频一| 欧美激情精品久久久久久黑人| 岛国av午夜精品| 久久精品国产v日韩v亚洲| 亚洲精品电影网站| 精品毛片网大全| 92看片淫黄大片欧美看国产片| 日韩欧美国产成人| 欧美疯狂xxxx大交乱88av| 国产精品免费观看在线| 91精品国产高清久久久久久91| 91牛牛免费视频| 欧美在线观看网站| 91人人爽人人爽人人精88v| 久久影视免费观看| 国产精品狼人色视频一区| 亚洲欧美综合精品久久成人| 国产成人av网| 国产精品久久久久久久久久久久久久| 午夜精品久久久久久久99黑人| 久久免费视频观看| 色综合天天综合网国产成人网| 68精品国产免费久久久久久婷婷| 亚洲石原莉奈一区二区在线观看| 在线观看精品自拍私拍| 欧美另类极品videosbest最新版本| 欧美一区二区三区艳史| 亚洲国产精品国自产拍av秋霞| 色七七影院综合| 红桃av永久久久| 亚洲精品色婷婷福利天堂| 欧美性生交xxxxxdddd| 美女视频黄免费的亚洲男人天堂| 成人亲热视频网站| 国产色视频一区| 亚州精品天堂中文字幕| 北条麻妃一区二区在线观看| 91在线观看免费高清完整版在线观看| 一区二区欧美激情| 久久久国产一区二区三区| 亚洲福利在线观看| 久久久久久香蕉网| 精品偷拍一区二区三区在线看| 国模精品系列视频| 亚洲xxxxx性| 奇米一区二区三区四区久久| 亚洲欧美日韩国产成人| 亚洲精品国产精品自产a区红杏吧| 欧美日韩国产一区在线| 国外成人在线视频| 久久香蕉国产线看观看av| 久久精品国产69国产精品亚洲| 日韩av免费观影| 久久久亚洲影院你懂的| 欧美在线视频播放| 亚洲乱亚洲乱妇无码| 午夜精品99久久免费| 韩日欧美一区二区| 国产亚洲日本欧美韩国| 国产精品h片在线播放| 亚洲精品久久久久久久久| 精品亚洲男同gayvideo网站| 国产盗摄xxxx视频xxx69| 国产视频自拍一区| 欧美国产日韩一区二区在线观看| 国产99久久精品一区二区 夜夜躁日日躁| 国产精品欧美激情| 亚洲欧洲第一视频| 日韩电影免费观看中文字幕| 欧美尺度大的性做爰视频| 4p变态网欧美系列| 国产国语刺激对白av不卡| 狠狠色狠狠色综合日日五| 日本精品久久久久影院| 亚洲自拍在线观看| 精品国产鲁一鲁一区二区张丽| 亚洲精品日韩激情在线电影| 亚洲第一免费网站| 久久免费观看视频| 久久久国产精品亚洲一区| 欧美影院久久久| 久久久久久久国产精品| 91在线播放国产| 日韩成人在线视频观看| 国产精品久久久久久久久免费看| 久久中文字幕一区| 亚洲va欧美va在线观看| 91久久精品国产91性色| 久久久免费观看| 国产精品av在线播放| 欧美一区二区大胆人体摄影专业网站| 欧美激情精品久久久久久久变态| 久久久精品视频在线观看| 成人性生交大片免费观看嘿嘿视频| 久操成人在线视频| 日韩中文av在线| 国产精自产拍久久久久久蜜| 亚洲成人久久电影| 久久亚洲成人精品| 亚洲社区在线观看| 欧美午夜激情视频| 欧美精品久久久久| 91精品国产自产在线| 精品国产依人香蕉在线精品| 97久久精品人人澡人人爽缅北| 国产精品av免费在线观看| 在线日韩av观看| 国产精品国语对白| 在线视频欧美日韩| www.亚洲免费视频| 中日韩美女免费视频网址在线观看| 久久精品国产成人| 亚洲的天堂在线中文字幕| 日韩精品福利网站| 777777777亚洲妇女| 国产精品久久久久久网站| 26uuu日韩精品一区二区| 91禁国产网站| 色哟哟亚洲精品一区二区| 亚洲欧美日韩一区二区在线| 欧美激情视频在线观看| 日韩中文字在线| 久久久久www| 久久久久亚洲精品成人网小说| 久久av资源网站| 久久久成人精品| 久久精品人人爽| 欧美在线精品免播放器视频| 国产精品视频公开费视频| 川上优av一区二区线观看| 九九视频直播综合网| 国产不卡精品视男人的天堂| 韩国19禁主播vip福利视频| 久久免费少妇高潮久久精品99| 日韩美女av在线| 日韩在线不卡视频| 国产999精品久久久影片官网| 久久的精品视频| 国产成人一区二区| 中文字幕免费精品一区| 黑人巨大精品欧美一区免费视频| 国产精品久久久久久久久久免费| 国产91亚洲精品| 亚洲国产成人在线播放| 日韩精品一区二区三区第95| 伊人亚洲福利一区二区三区| 国产精品永久在线| 亚洲女人天堂av| 亚洲黄色av网站| 欧美精品中文字幕一区| 久久久久久网址| 欧美亚洲国产成人精品| 国产一区二区动漫| 欧美激情网友自拍| 亚洲一区二区三区四区视频|