PHP发表心情-投票功能源码

当浏览新闻页面或者其它页面的时候会有阅读后的感受,比如给力、淡定、打酱油、加油、坑爹等等的表情。让读者打分,看看自己的感受是否与其他读者一样。很不错的交互!

1.png

查看演示:http://www.weibut.com/demo/201701/mood/
立即下载:http://www.weibut.com/download/17

本文需要熟悉jquery,mysql,ajax相关的知识,不过用的不多。本文有三个文件:index.html,mood.php,sql.php

  • index.html,页面展示和请求ajax数据
  • mood.php,后台文件 处理get请求来的数据,并返回数据
  • sql.php,数据库文件,存数据库信息

直接进入代码吧。

index.html

首先导入jquery

//cdn.bootcss.com/jquery/1.7.2/jquery.min.js

当文档载入完毕就请求(ajax-get)投票人数数据

$.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到后台

$(".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数据库文件

include_once("sql.php");

这个文件处理的是整个功能的核心,处理数据库cookies...

1.处理获取投票人数代码

$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.处理投票功能

$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、帐号、密码、数据库名等等

$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也贴出来

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;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,258评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,335评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,225评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,126评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,140评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,098评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,018评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,857评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,298评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,518评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,400评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,993评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,638评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,661评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352

推荐阅读更多精彩内容

  • 转载自cr180大神DiscuzX2.5完整目录结构【source程序文件库】 /source/admincp后台...
    cndaqiang阅读 848评论 1 2
  • Composer Repositories Composer源 Firegento - Magento模块Comp...
    零一间阅读 3,958评论 1 66
  • ARM A系列寄存器的情况 这是寄存器的总表,下面是CPU的各个模式,上面的纵轴就是寄存器组。 CPU在运行的时候...
    随波逐流007阅读 8,034评论 0 1
  • 下雨了,雨天的心情仿佛是自己的心情,大白羊落寂的走在冬雨中,有些清冷与落寞。雨带着点淡淡的忧郁,也带着点淡淡的忧伤...
    花儿姐姐1977阅读 183评论 0 0
  • 你就在我身边,我却梦了你一夜。一夜的纠葛都是与你,与你纠葛一生我也甘愿。爱你不像爱生命,胜过爱生命。 愿你永远是我...
    一万小时素人阅读 107评论 0 0