实现一个简单的投票功能

最近项目中需要用到一个投票功能,当时觉得简单,向都没想就动手开始做,没想到走了不少弯路。

后来才发现,是想的太过简单了。来看看改进后的功能。

第一步:数据库设计

两个表:一个主表涉及投票标题,记录,以及当前投票状态,附表,主要存储投票的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;
                        }
                    });

}
            }
        });

到此结束,我看了其他的一些投票功能,我的这个写的算是最粗糙的一个,还待以后改进。

posted on 2013-08-29 11:14 浪荡De逍遥哥 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/drwu2009/p/3288689.html

实现一个简单的投票功能相关推荐

  1. php投票post,请教一个简单的投票页面,post怎么写

    以前写过一个简单的投票功能,作用是php post值 如果和数据库内容一致,则count+1 截图如下 现在希望把check.php由原来的单个框改成多个进行投票 网上查了下,要用到数组 我把代码改成 ...

  2. 【Vue3.0实战逐步深入系列】扩展投票功能基于elementui进行组件封装实现一个简单的问卷调查功能

    [千字长文,熬夜更新,原创不易,多多支持,感谢大家] 前言 小伙伴们大家好.在前面一偏文章中我们把投票功能进行了简单的改造:引入了axios第三方库并进行了二次封装用于模拟请求服务器数据.同时添加了一 ...

  3. android实现计算器功能吗,利用Android实现一个简单的计算器功能

    利用Android实现一个简单的计算器功能 发布时间:2020-11-20 16:25:01 来源:亿速云 阅读:90 作者:Leah 今天就跟大家聊聊有关利用Android实现一个简单的计算器功能, ...

  4. vue实现一个简单的购物车功能

    今天做了一个简单的购物车功能,主要用了计算属性,指令等知识点,代码如下: <template> <div><div id="cart" v-cloak ...

  5. 知识图谱实战应用11-基于py2neo构建一个简单的问答功能

    大家好,我是微学AI,今天给大家介绍一下知识图谱实战应用10-基于py2neo构建一个简单的问答功能,利用知识图谱来实现智能的问答功能.知识图谱是一种用于表示实体之间关系的图形化模型,它是人工智能和自 ...

  6. android计算器功能实现,在android中利用 studio实现一个简单的计算器功能

    在android中利用 studio实现一个简单的计算器功能 发布时间:2020-11-07 15:35:20 来源:亿速云 阅读:168 作者:Leah 这篇文章将为大家详细讲解有关在android ...

  7. 开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号。

    开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号. 处理:1.记录最多8条错误记录,对相同的错误记录(即文件名称和行号完全匹配)只记录一条,错误计数增加:(文件所在的目录不同,文 ...

  8. 用PHP做一个简单的搜索功能

    用PHP做一个简单的搜索功能 说到搜索,大家最熟悉不过了.当你想知道某个东西,某件事,你也许会刻意搜索它,而搜索作为一项基本的用户必备工具,它有着庞大的知识库,通过各种联动技术,当你输入想要了解的关键 ...

  9. Android中实现一个简单的照相功能

    一个简单的照相功能,拍照之后在另一个activit中显示出拍照的图片. 首先是布局文件: <?xml version="1.0" encoding="utf-8&q ...

最新文章

  1. 【CV】吴恩达机器学习课程笔记第16章
  2. CSS 文字溢出显示省略号
  3. VS2008 快捷键总结
  4. PHP修改PHP.ini上传大文件的解决办法
  5. eclipse 安装vim插件
  6. web 前端 如何分享到instagram_如何找到靠谱的Web培训机构?web前端培训机构哪个好?...
  7. Vue中,在<template>内进行页面链接跳转
  8. html数字什么字体样式,css字体样式属性有哪些?
  9. Android使用okhttp加载图片
  10. 湿空气性质计算,随笔与学习记录(2.水蒸气分压,含湿量,相对湿度)
  11. 关于sip协议-3PCC-SIPP工具相关及报错
  12. Binder机制(非常好理解)
  13. FFmpeg 以及帧率的解释
  14. 计算机应用技术企业信息化,计算机应用技术对企业信息化作用
  15. ubuntu20.04安装Linux原生的微信,请注意,这不是wine版本的微信
  16. 洛谷 P3456 [POI2007]GRZ-Ridges and Valleys
  17. 013 Windows进程及线程
  18. libpcap流量统计
  19. 电信高清语音服务器,电信VoLTE高清通话来了,来电秒接通、打电话4G不掉线!...
  20. Caused by: java.sql.SQLException: Table ‘./commerce_sit/pgrels‘ is marked as crashed and last (autom

热门文章

  1. vue.js crud_如何使用VS Code和ADO.NET使用ASP.NET Core执行CRUD操作
  2. java 排序算法 讲解_java实现排序算法之冒泡排序法详细讲解
  3. Java培训完可以应用在什么领域
  4. 12 Java面向对象之多态
  5. 【AngularJS】—— 12 独立作用域
  6. 《精通 ASP.NET MVC 3 框架(第三版)》----第2章 准备工作 2.1 准备工作站
  7. 启动Genymotion时报错Failed to initialize backend EGL display
  8. 总结 20 个开发细节
  9. Lnmp安装与配置笔记
  10. 企业网络翻译官——DNS