实现一个简单的投票功能
最近项目中需要用到一个投票功能,当时觉得简单,向都没想就动手开始做,没想到走了不少弯路。
后来才发现,是想的太过简单了。来看看改进后的功能。
第一步:数据库设计
两个表:一个主表涉及投票标题,记录,以及当前投票状态,附表,主要存储投票的IP以便防止无限制投票,
这里的IP获取,网上找了一下 改了一些地方,代码如下
var url = 'http://chaxun.1616.net/s.php?type=ip&output=json&callback=?&_=' + Math.random();
$.getJSON(url, function (data) {
var _Ip = data.Ip.toString();
//隐藏域赋值,可自定义
$("#hidIP").val(_Ip);
});
第二部:页面设计
第三部:实现逻辑:
1.获取有效的并是最新的投票数据
var newList = db.Vote.OrderByDescending(s => s.ID).Where(s => s.VoteStatus == "1").Take(1).Select(s => new
{
ID = s.ID,
VoteName = s.VoteName,
VoteStatus = s.VoteStatus,
Result = s.Result,
Agree = s.Agree,
DisAgree = s.DisAgree
}).ToList();
2.接下来就是更新数据库,向主表中更新投票记录数,附表中则添加一条IP记录(当然的显判断IP是否已经存在)
接下来就是对数据库的操作,因为是异步,则想浏览器端返回一条记录,此处省略几个字...
第四部:异步调用:
首次加载投票记录数数据比较简单,来看点击投票的处理:
data: { getValue: a, Vote_IP: $("#hidIP").val() },
success: function (list) {
if (list != null) {
$.each(eval(list), function (i, item) {
if (item.flag === "0") {
var VoteName = item.VoteName;
var Agree = parseInt(item.Agree);
var DisAgree = parseInt(item.DisAgree);
var Count = Agree + DisAgree;
var agreePer = (Agree * 100) / Count;
var result = agreePer.toFixed(2);
var disagreePer = (100 - result).toFixed(2);
$(".f1").remove();
$("#VoteName").append('<span class="f1">' + VoteName + '</span>');
$("#tdbtn").append('<td colspan="2" class="f1" style="text-align: right;">' + Count + '人参与投票</td>');
$("#agree").append('<div class="f1" style="float: left; background-color: Blue; width: ' + result + 'px;"></div>');
$("#disagree").append('<div class="f1" style="float: left; background-color: Blue; width: ' + disagreePer + 'px;"></div>');
$("#agreeData").append('<span class="f1">' + result + '%</span>');
$("#disagreeData").append('<span class="f1">' + disagreePer + '%</span>');
} else {
$(".f2").remove();
$("#Notice").append('<span class="f2">一个IP只能投一次票,请不要重复投票...</span>');
$(".f2").fadeTo(7000, 0.0);
return false;
}
});
}
}
});
到此结束,我看了其他的一些投票功能,我的这个写的算是最粗糙的一个,还待以后改进。
转载于:https://www.cnblogs.com/drwu2009/p/3288689.html
实现一个简单的投票功能相关推荐
- php投票post,请教一个简单的投票页面,post怎么写
以前写过一个简单的投票功能,作用是php post值 如果和数据库内容一致,则count+1 截图如下 现在希望把check.php由原来的单个框改成多个进行投票 网上查了下,要用到数组 我把代码改成 ...
- 【Vue3.0实战逐步深入系列】扩展投票功能基于elementui进行组件封装实现一个简单的问卷调查功能
[千字长文,熬夜更新,原创不易,多多支持,感谢大家] 前言 小伙伴们大家好.在前面一偏文章中我们把投票功能进行了简单的改造:引入了axios第三方库并进行了二次封装用于模拟请求服务器数据.同时添加了一 ...
- android实现计算器功能吗,利用Android实现一个简单的计算器功能
利用Android实现一个简单的计算器功能 发布时间:2020-11-20 16:25:01 来源:亿速云 阅读:90 作者:Leah 今天就跟大家聊聊有关利用Android实现一个简单的计算器功能, ...
- vue实现一个简单的购物车功能
今天做了一个简单的购物车功能,主要用了计算属性,指令等知识点,代码如下: <template> <div><div id="cart" v-cloak ...
- 知识图谱实战应用11-基于py2neo构建一个简单的问答功能
大家好,我是微学AI,今天给大家介绍一下知识图谱实战应用10-基于py2neo构建一个简单的问答功能,利用知识图谱来实现智能的问答功能.知识图谱是一种用于表示实体之间关系的图形化模型,它是人工智能和自 ...
- android计算器功能实现,在android中利用 studio实现一个简单的计算器功能
在android中利用 studio实现一个简单的计算器功能 发布时间:2020-11-07 15:35:20 来源:亿速云 阅读:168 作者:Leah 这篇文章将为大家详细讲解有关在android ...
- 开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号。
开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号. 处理:1.记录最多8条错误记录,对相同的错误记录(即文件名称和行号完全匹配)只记录一条,错误计数增加:(文件所在的目录不同,文 ...
- 用PHP做一个简单的搜索功能
用PHP做一个简单的搜索功能 说到搜索,大家最熟悉不过了.当你想知道某个东西,某件事,你也许会刻意搜索它,而搜索作为一项基本的用户必备工具,它有着庞大的知识库,通过各种联动技术,当你输入想要了解的关键 ...
- Android中实现一个简单的照相功能
一个简单的照相功能,拍照之后在另一个activit中显示出拍照的图片. 首先是布局文件: <?xml version="1.0" encoding="utf-8&q ...
最新文章
- 【CV】吴恩达机器学习课程笔记第16章
- CSS 文字溢出显示省略号
- VS2008 快捷键总结
- PHP修改PHP.ini上传大文件的解决办法
- eclipse 安装vim插件
- web 前端 如何分享到instagram_如何找到靠谱的Web培训机构?web前端培训机构哪个好?...
- Vue中,在<template>内进行页面链接跳转
- html数字什么字体样式,css字体样式属性有哪些?
- Android使用okhttp加载图片
- 湿空气性质计算,随笔与学习记录(2.水蒸气分压,含湿量,相对湿度)
- 关于sip协议-3PCC-SIPP工具相关及报错
- Binder机制(非常好理解)
- FFmpeg 以及帧率的解释
- 计算机应用技术企业信息化,计算机应用技术对企业信息化作用
- ubuntu20.04安装Linux原生的微信,请注意,这不是wine版本的微信
- 洛谷 P3456 [POI2007]GRZ-Ridges and Valleys
- 013 Windows进程及线程
- libpcap流量统计
- 电信高清语音服务器,电信VoLTE高清通话来了,来电秒接通、打电话4G不掉线!...
- Caused by: java.sql.SQLException: Table ‘./commerce_sit/pgrels‘ is marked as crashed and last (autom
热门文章
- vue.js crud_如何使用VS Code和ADO.NET使用ASP.NET Core执行CRUD操作
- java 排序算法 讲解_java实现排序算法之冒泡排序法详细讲解
- Java培训完可以应用在什么领域
- 12 Java面向对象之多态
- 【AngularJS】—— 12 独立作用域
- 《精通 ASP.NET MVC 3 框架(第三版)》----第2章 准备工作 2.1 准备工作站
- 启动Genymotion时报错Failed to initialize backend EGL display
- 总结 20 个开发细节
- Lnmp安装与配置笔记
- 企业网络翻译官——DNS