PHP发表心情投票功能示例(附源码)

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

立即下载:

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

直接进入代码吧。

index.html

首先导入jquery

rush:js;"> //cdn.bootcss.com/jquery/1.7.2/jquery.min.js

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

rush:js;"> $.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 = "
  • "+array['mood_val']+"
    "+array['mood_name']+"
  • "; $("#mood ul").append(str); }); } } });

    返回就添加到网页里,然后就点击表情逻辑,也ajax到后台

    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数据库文件

    rush:PHP;"> include_once("sql.PHP");

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

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

    rush:PHP;"> $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_val' => 0,'height' => 0 ); } echo json_encode($arr); }

    2.处理投票功能

    rush:PHP;"> $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')");
    $query = MysqL_query("update mood set ".$field."=".$field."+1 where id=".$id);
    setcookie("mood".$id,time()+3600);
    echo $moodpicheight;
    }

    这个文件很简单,基本都是在处理数据库,逻辑也不是很复杂。可以自己下来细心看。

    sql.PHP

    一个通用的数据库信息储存文件,数据库的ip、帐号、密码、数据库名等等

    rush:PHP;"> $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也贴出来

    rush:sql;"> 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;

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程之家。

    版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

    相关推荐


    统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返回预支付订单号的接口,目前微信支付所有场景均使用这一接口。下面介绍的是其中NATIVE的支付实现流程与PC端实现扫码支付流程
    统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返回预支付订单号的接口,目前微信支付所有场景均使用这一接口。下面介绍的是其中APP的支付的配置与实现流程
    前言 之前做了微信登录,所以总结一下微信授权登录并获取用户信息这个功能的开发流程。 配置 1.首先得在微信公众平台申请一下微信小程序账号并获取到小程序的AppID和AppSecret https://mp.weixin.qq.com/cgi-bin/loginpage?url=%2Fwxamp%2F
    FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一款开源且免费商用的后台开发框架,它基于ThinkPHP和Bootstrap两大主流技术构建的极速后台开发框架,它有着非常完善且强大的功能和便捷的开发体验,使我逐渐喜欢上了它。
    之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛,就离不开通讯了,然后我就想到了长连接。这里本人用的是GatewayWorker框架。
    统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返回预支付订单号的接口,目前微信支付所有场景均使用这一接口。下面介绍的是其中JSAPI的支付实现流程
    服务器优化必备:深入了解PHP8底层开发原理
    Golang的网络编程:如何快速构建高性能的网络应用?
    Golang和其他编程语言的对比:为什么它的开发效率更高?
    PHP8底层开发原理揭秘:如何利用新特性创建出色的Web应用
    将字符重新排列以形成回文(如果可能)在C++中
    掌握PHP8底层开发原理和新特性:创建高效可扩展的应用程序
    服务器性能优化必学:掌握PHP8底层开发原理
    PHP8新特性和底层开发原理详解:优化应用性能的终极指南
    将 C/C++ 代码转换为汇编语言
    深入研究PHP8底层开发原理:创建高效可扩展的应用程序
    C++程序查找法向量和迹
    PHP8底层开发原理实战指南:提升服务器效能
    重排数组,使得当 i 为偶数时,arr[i] >= arr[j],当 i 为奇数时,arr[i] <= arr[j],其中 j < i,使用 C++ 语言实现
    Golang的垃圾回收:为什么它可以减少开发人员的负担?