mysql投票网站_ThinkPHP5+jQuery+MySql实现投票功能

news/2024/5/20 10:48:24/文章来源:https://blog.csdn.net/weixin_34280781/article/details/114347113

这篇文章主要介绍了ThinkPHP5+jQuery+MySql实现投票功能,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

ThinkPHP5+jQuery+MySql实现投票功能,先给大家展示下效果图,如果大家感觉效果不错,请参考实例代码。

效果图:

20d3c4020159594f971dfcb10f727d35.png

前端代码:

基于THINKPHP5实现红蓝投票功能

.vote{width:288px; height:300px; margin:40px auto;position:relative}

.votetitle{width:100%;height:62px; background:url(/static/index/images/icon.png) no-repeat 0 30px; font-size:15px}

.red{position:absolute; left:0; top:64px; height:80px;}

.blue{position:absolute; right:0; top:64px; height:80px;}

.red p,.blue p{line-height:22px}

.redhand{position:absolute; left:0;width:36px; height:36px; background:url(/static/index/images/icon.png) no-repeat -1px -38px;cursor:pointer}

.bluehand{position:absolute; right:0;width:36px; height:36px; background:url(/static/index/images/icon.png) no-repeat -41px -38px;cursor:pointer}

.grayhand{width:34px; height:34px; background:url(/static/index/images/icon.png) no-repeat -83px -38px;cursor:pointer}

.redbar{position:absolute; left:42px; margin-top:8px;}

.bluebar{position:absolute; right:42px; margin-top:8px; }

.redbar span{display:block; height:6px; background:red; width:100%;border-radius:4px;}

.bluebar span{display:block; height:6px; background:#09f; width:100%;border-radius:4px; position:absolute; right:0}

.redbar p{line-height:20px; color:red;}

.bluebar p{line-height:20px; color:#09f; text-align:right; margin-top:6px}

$(function(){

// 获取初始数据

getdata('',1);

$(".redhand").click(function(){

getdata("red",1);

});

$(".bluehand").click(function(){

getdata("blue",1);

});

});

function getdata(type,vid){

$.ajax({

url: "{:url('/index/vote/vote')}",

data: {type:type,vid:vid},

type:'POST',

dataType: 'json',

success: function (res) {

console.log(res)

if (res.status == 0) {

alert('投票成功')

var w = 208;

$("#red_num").html(res.msg.rednum);

$("#red").css("width",res.msg.red_percent*100+"%");

var red_bar_w = w*res.msg.red_percent-10;

$("#red_bar").css("width",red_bar_w);

$("#blue_num").html(res.msg.bluenum);

$("#blue").css("width",res.msg.blue_percent*100+"%");

var blue_bar_w = w*res.msg.blue_percent;

$("#blue_bar").css("width",blue_bar_w);

}else{

alert('投票失败');

}

}

});

}

ThinkPHP5+jQuery+MySql实现红蓝投票功能

您对Thinkphp5的看法?

非常实用

完全不懂

控制器:

namespace app\index\controller;

use think\Controller;

/**

* 投票

*/

class Vote extends Controller

{

/**

* 首页

*/

public function index()

{

return $this->fetch();

}

/**

* 投票

* @param vid type ip

*/

public function Vote()

{

$data = input('post.');

if (!empty($data)) {

$data['ip'] = get_ip(); //获取Ip

// 先检测当前ip是否已经投过票

$count = model('Vote')->checkIp($data);

// 检测是否提交了type,提交了即代表点击了按钮,没提交即代表页面初次渲染

if (!empty($data['type'])) {

if ($count == '0') { //当前还未投过票

// 更新票数 添加用户ip表

$res = model('Vote')->postVote($data);

if ($res) {

// 投票成功 获取当前各自的票数

$info = $this->getPercent($data);

return return_succ($info);

}else{

return return_error('投票失败');

}

}else{

// 已经投过票

return return_error('您已经投过票了');

}

}else{

// 初次渲染,获取初始数据

$info = $this->getPercent($data);

return return_succ($info);

}

}else{

return return_error('数据不能为空');

}

}

// 计算比例

public function getPercent($data)

{

// 投票成功 获取当前各自的票数

$info = model('Vote')->getInfo($data);

// 计算比例 保留3位小数

$info['red_percent'] = round($info['rednum'] / ($info['rednum'] + $info['bluenum']),3);

$info['blue_percent'] = 1 - $info['red_percent'];

return $info;

}

}

模型:

namespace app\index\model;

use think\Model;

use think\Db;

class Vote extends Model

{

// 检测当前ip是否已经投过票

public function checkIp($data)

{

$res = Db::table('votes_ip')->where(['vid'=>$data['vid'],'ip'=>$data['ip']])->count();

return $res;

}

// 投票

public function postVote($data)

{

$info = $this->getInfo($data);

if ($info) {

Db::startTrans();

try {

if ($data['type'] == "red") {

// 更新票数表

Db::table('votes')->where(['id'=>$data['vid']])->update(['rednum'=>$info['rednum']+1]);

}elseif ($data['type'] == "blue") {

Db::table('votes')->where(['id'=>$data['vid']])->update(['bluenum'=>$info['bluenum']+1]);

}

// 添加用户投票ip

Db::table('votes_ip')->insert(['vid'=>$data['vid'],'ip'=>$data['ip']]);

Db::commit();

return true;

} catch (Exception $e) {

Db::rollback();

return false;

}

}

}

// 获取当前各自的票数

public function getInfo($data)

{

// 获取各自的票数

$info = Db::table('votes')->where(['id'=>$data['vid']])->find();

return $info;

}

}

总结

以上所述是小编给大家介绍的ThinkPHP5+jQuery+MySql实现投票功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对轩宇网的支持!

如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

原文链接:https://www.cnblogs.com/zxf100/p/12201006.html

打赏

微信、支付宝、QQ打赏

程序员,你不是一个人;Web开发QQ群:210916599加入QQ群f501df10b4f7b45359e94127383ef8e5.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_846834.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

站点html标贴验证,SEO优化之详解百度站点验证

原标题:SEO优化之详解百度站点验证最近有不少SEO新手同学问,百度站点验证怎么搞?。SEO新手问这样的问题也不算奇怪。作为一名“SEO老司机”不懂得如何做百度站点验证,显然是说不过去的。今天就来跟大家聊聊关于“百度站点验证”的那点事。什…

php网站安全狗绕过,绕过网站安全狗拦截,上传Webshell技巧总结 | 附免杀PHP一句话...

原标题:绕过网站安全狗拦截,上传Webshell技巧总结 | 附免杀PHP一句话*本文原创作者:1_2,本文属FreeBuf原创奖励计划,未经许可禁止转载这篇文章我介绍一下我所知道的绕过网站安全狗上传WebShell的方法。思路是&#xff…

百度关键词抓取工具_SEO:想提升关键词排名?你还缺一份seo优化大全

文 | 公关之家 作者:Leon360kSEO工具是网站进行搜索引擎优化过程中提升工作效能与准确性的多种辅助程序。这些工具与优化者者的智慧若用于积极方向,将会为网站的优化提供较大的助力,尤其是使用先进算法的工具会为优化者们更准确的决策参考与指…

ngrok内网穿透映射使用与注册 让外网访问你的网站

一、ngrok安装,使用与注册 1、先打开ngrok注册页面www.ngrok.com,进入sign up 后,发现注册报错,无法正常注册; 2、我们再打开一个界面www.github.com,点击注册,这次可以成功,注意再…

大型网站架构之分布式消息队列

以下是消息队列以下的大纲,本文主要介绍消息队列概述,消息队列应用场景和消息中间件示例(电商,日志系统)。 本次分享大纲 消息队列概述消息队列应用场景消息中间件示例JMS消息服务常用消息队列参考(推荐&a…

网站架构第一篇

Web发展历程 CS时代:富客户端方案。卖软件可以赚钱。 QQ,影音,游戏 Web 1.0时代:主要是单向信息的发布。互联网内容是由少数编辑人员定制的,用户只有看的权限 三大门户网站:新浪、网易、搜狐。 Web 2.0时代…

python 3 爬取某小说网站小说,注释详细

目标:每一个小说保存成一个txt文件 思路:获取每个小说地址(图一),进入后获取每章节地址(图二),然后进入获取该章节内容(图三)保存文件中。循环 效果图&#…

如何用自己电脑做服务器,绑定域名建一个个人网站

使用自己的电脑,下载一个tomcat服务器,并将域名解析到本机,这样就可以发布自己的网站了。不过,关机之后网站便登不上去了。这样做只是为了我们可以更好的开发调试自己的工程,网站上线之后可以让更多的朋友帮你找bug。这…

Android 学习论坛博客及网站推荐

一、博客推荐 1)http://blog.csdn.net/android_tutor(Android开发入门基础,高级进阶) 2)http://blog.csdn.net/hellogv(入门与提高,很多例子值得学习) 3)http://www.c…

【2019.6.11可用】chrome提示“无法添加来自此网站的应用、扩展程序和应用脚本”的解决办法

目前亲测可行的方法有两种,个人推荐第一种。 第一种方法(推荐) 1、在chrome上右键,打开属性。 在目标里添加参数“ --enable-easy-off-store-extension-install”。注意--前加上一个空格 2、【重启浏览器!】打开chr…

猪八戒学做网站之HTML5篇(2):编写网页的工具

一杯清茶还没有喝完,小朱告诉我,他的网页做完了,惊得我下巴都快掉了。 我张大着嘴巴来到小朱的电脑前,看到了他完成的网页,完成情况好像还不错。各位可以看一下,他的网页的完成效果: 说实话&…

猪八戒学做网站之HTML5篇(3):网页不是图片

一大早,被手机的闹铃吵醒。自从做了程序员之后,天天都感觉睡不醒。脑力劳动和体力劳动真不一样,体力劳动累了之后,睡一觉起来就什么事也没有了。而脑力劳动之后,怎么睡都睡不醒。说什么三十年前睡不醒,三十…

猪八戒学做网站之HTML5篇(5):Hello HTML

出了几天差,回来一看,猪八戒正在网上津津有味地看着什么呢。 猪八戒看见我回来了,马上站了起来:“师父,你回来啦!”一边说还一边接过我的行李包。 我把行李包递给猪八戒后问他:“我不在的这几天…

猪八戒学做网站之HTML5篇(6):标签!标签!

“师父,你在看什么呢?” “《南京!南京!》。”我头也不回地回答道。 “那我应该看什么呢?”猪八戒又问。 “标签!标签!”我还是头也没回地回答道。 “啥?”猪八戒一下子没有明白过来…

在VS2008中创建自定义控件(一)创建网站项目和自定义控件项目

本文目的: 1、创建一个创建网站项目。 2、创建一个自定义控件项目。 下文目的: 1、创建一个自定义控件。 2、将自定义控件添加到工具箱中,以便调用。 这两篇博文的最终结果如下图所示。 首先声明,用户控件和自定义控件是不同…

python从网站抓取特定内容

背景 测试需要模拟浏览器的userAgent,从网站上找到一批 http://www.fynas.com/ua 分析 非常普通的table元素维护 约有8K多条,为防止中途中断导致数据丢失选择读取一页写一页,单个文件可能吃力,选择100页数据放入一个文件的方式…

网站集成第三方登录--QQ

网站平台集成第三方登录--QQ 注:仅适用于线上测试,不提供本地测试(供新手参考)第一步:1、 登陆QQ互联开放平台首页 http://connect.qq.com/ ,注册开发者信息2、 选择菜单栏“管理中心”创建应用-网站3、 填…

网站集成第三方登录--sina

网站平台集成第三方登录--sina 注&#xff1a;仅适用于线上测试&#xff0c;不提供本地测试&#xff08;供新手参考&#xff09;第一步&#xff1a;1、 登陆新浪微博开放平台首页 http://open.weibo.com/ &#xff0c;登录后编辑开发者信息 及身份认证2、 开始创建应用 并将<…

iframe引入的网站不能全屏宽度有滚动条_程序猿进阶不能错过的最全前端性能优化秘籍(一)!...

很多人通常在完成了产品之后才会去考虑性能。把与性能相关的事情拖到项目的最后来做&#xff0c;所做的也不过是对服务器上的config文件进行一些微调、串联、优化以及部分特别小的调整。而现在&#xff0c;技术已经有了翻天覆地的变化。一个项目的性能是非常重要的&#xff0c;…

linux网络方面命令大全,网络操作命令 - Linux常用命令大全_Linux教程_Linux公社-Linux系统门户网站...

网络操作命令命令功能命令功能ftp传送文件telnet远端登陆bye结束连线并结束程序rlogin远端登入ping检测主机netstat显示网络状态8.1 ftp命令ftp命令用来传输文件&#xff0c;非常重要。如果在网络上看到一个很重要的文件&#xff0c;就可以用这个命令把那个文件传到自己的机器上…