当浏览新闻页面或者其它页面的时候会有阅读后的感受,比如给力、淡定、打酱油、加油、坑爹等等的表情。让读者打分,看看自己的感受是否与其他读者一样。很不错的交互!
立即下载:mood.rar
本文需要熟悉jquery,mysql,ajax相关的知识,不过用的不多。本文有三个文件:index.html,mood.php,sql.php
- index.html,页面展示和请求ajax数据
- mood.php,后台文件 处理get请求来的数据,并返回数据
- sql.php,数据库文件,存数据库信息
直接进入代码吧。
index.html
首先导入jquery
1
|
//cdn.bootcss.com/jquery/1.7.2/jquery.min.js |
当文档载入完毕就请求(ajax-get)投票人数数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
$.ajax({ type: 'get' , url: 'mood.php' , cache: false, data: 'id=1' , datatype: 'json' , error: function (){ alert( '出错了!' ); }, success: function (json){ if (json){ $.each(json, function (index, array ){ 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); }); } } }); |
返回就添加到网页里,然后就点击表情逻辑,也ajax到后台
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
$( ".face" ).live( 'click' , function (){ var face = $(this); var mid = face.attr( "rel" ); var value = face.parent().find( "span" ).html(); var val = parseint(value)+1; $.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" ); } else { alert(data); } }); }); |
这样整个前台就完成了工作
mood.php
首先要导入sql.php数据库文件
1
|
include_once ( "sql.php" ); |
这个文件处理的是整个功能的核心,处理数据库,cookies...
1.处理获取投票人数代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
$mname = explode ( ',' , $moodname ); //心情说明 $num = count ( $mname ); $mpic = explode ( ',' , $moodpic ); //心情图标 $id = (int) $_get [ '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' ]; 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 , 'mood_name' => $mname [ $i ], 'mood_pic' => $mpic [ $i ], 'mood_val' => $m_val , 'height' => $height ); } echo json_encode( $arr ); } else { for ( $i =0; $i < $num ; $i ++){ $arr [] = array ( 'mid' => $i , 'mood_name' => $mname [ $i ], 'mood_pic' => $mpic [ $i ], 'mood_val' => 0, 'height' => 0 ); } echo json_encode( $arr ); } |
2.处理投票功能
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
$id = (int) $_post [ 'id' ]; $mid = (int) $_post [ 'moodid' ]; if ( $mid <0 || ! $id ){ echo "错误" ; exit ; } $havemood = chk_mood( $id ); if ( $havemood ==1){ echo "您已表达过了" ; exit ; } $field = 'mood' . $mid ; //查询是否有这个id $result = mysql_query( "select 1 from mood where id='{$id}'" ); $row = mysql_fetch_array( $result ); if ( is_array ( $row )){ $query = mysql_query( "update mood set " . $field . "=" . $field . "+1 where id=" . $id ); if ( $query ){ setcookie( "mood" . $id , $mid . $id , time()+3600); $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' ]; $height = round (( $rs [ $field ]/ $total )* $moodpicheight ); echo $height ; } else { echo -1; } } else { mysql_query( "insert into mood(id,mood0,mood1,mood2,mood3,mood4)values ('{$id}','0','0','0','0','0')" ); $query = mysql_query( "update mood set " . $field . "=" . $field . "+1 where id=" . $id ); setcookie( "mood" . $id , $mid . $id , time()+3600); echo $moodpicheight ; } |
这个文件很简单,基本都是在处理数据库,逻辑也不是很复杂。可以自己下来细心看。
sql.php
一个通用的数据库信息储存文件,数据库的ip、帐号、密码、数据库名等等
1
2
3
4
5
6
7
8
9
10
11
|
$host = "localhost" ; $db_user = "root" ; $db_pass = "" ; $db_name = "demo" ; $timezone = "asia/shanghai" ; $link =mysql_connect( $host , $db_user , $db_pass ); mysql_select_db( $db_name , $link ); mysql_query( "set names utf8" ); header( "content-type: text/html; charset=utf-8" ); |
到目前所有的核心代码都也贴出,大神就跳过,如果有需要就下载来看一看
对了,还有一个数据库,行吧ddl也贴出来
1
2
3
4
5
6
7
8
9
|
create table `mood` ( `id` tinyint(5) not null, `mood0` int(9) unsigned not null, `mood1` int(9) unsigned not null, `mood2` int(9) unsigned not null, `mood3` int(9) unsigned not null, `mood4` int(9) unsigned not null, primary key (`id`) ) engine=innodb default charset=utf8mb4; |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://segmentfault.com/a/1190000011114993