当浏览新闻页面或者其它页面的时候会有阅读后的感受,比如给力、淡定、打酱油、加油、坑爹等等的表情。让读者打分,看看自己的感受是否与其他读者一样。很不错的交互!
立即下载:mood.rar
本文需要熟悉jquery,mysql,ajax相关的知识,不过用的不多。本文有三个文件:index.html,mood.php,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;
|
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持快网idc。
原文链接:https://segmentfault.com/a/1190000011114993
相关文章
猜你喜欢
- ASP.NET自助建站系统的域名绑定与解析教程 2025-06-10
- 个人服务器网站搭建:如何选择合适的服务器提供商? 2025-06-10
- ASP.NET自助建站系统中如何实现多语言支持? 2025-06-10
- 64M VPS建站:如何选择最适合的网站建设平台? 2025-06-10
- ASP.NET本地开发时常见的配置错误及解决方法? 2025-06-10
TA的动态
- 2025-07-10 怎样使用阿里云的安全工具进行服务器漏洞扫描和修复?
- 2025-07-10 怎样使用命令行工具优化Linux云服务器的Ping性能?
- 2025-07-10 怎样使用Xshell连接华为云服务器,实现高效远程管理?
- 2025-07-10 怎样利用云服务器D盘搭建稳定、高效的网站托管环境?
- 2025-07-10 怎样使用阿里云的安全组功能来增强服务器防火墙的安全性?
快网idc优惠网
QQ交流群
您的支持,是我们最大的动力!
热门文章
-
2025-05-29 64
-
2025-05-27 51
-
2025-05-29 88
-
2025-06-04 73
-
2025-06-04 77
热门评论