当前位置: 首页 > 编程日记 > 正文

实现一个简单的投票功能

实现一个简单的投票功能

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

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

第一步:数据库设计

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

相关文章:

Web漏洞扫描(四:知识点及错误总结)

WVS软件&#xff1a; WVS(Web Vulnerability Scanner)是一个自动化的Web应用程序安全测试工具&#xff0c;它可以扫描任何可通过Web浏览器访问的和遵循HTTP/HTTPS规则的Web站点和Web应用程序。适用于任何中小型和大型企业的内联网、外延网和面向客户、雇员、厂商和其它人员的W…

【VS开发】【智能语音处理】Windows下麦克风语音采集

简介 这是我很早以前的大学毕业设计,忽然间找到贴出来以纪念自己的纯真年代...但是因为CSDN不给面子所以导致短短的一篇文章贴了足足7次..他老提时说文章超过了64K,老大,拜托,那是算上了里面的图片大小吧...:-( 本文简单介绍了声卡的工作原理 , 录音的原理以及数字音频的基本知…

iOS音频——AudioToolbox

一、前言 二、音频文件Audio File Services 三、音频文件转换Extended Audio File Services 四、音频流Audio File Stream Services 五、音频队列Audio Queue Services 一、前言 AudioToolbox提供的API主要是C 使用起来相对晦涩&#xff0c;针对本文提供了简单的代码示例减小学…

【WA】九度OJ题目1435:迷瘴

题目描述&#xff1a; 通过悬崖的yifenfei&#xff0c;又面临着幽谷的考验——幽谷周围瘴气弥漫&#xff0c;静的可怕&#xff0c;隐约可见地上堆满了骷髅。由于此处长年不见天日&#xff0c;导致空气中布满了毒素&#xff0c;一旦吸入体内&#xff0c;便会全身溃烂而死。幸好y…

云端应用SQL注入攻击

实验目的及要求&#xff1a; 完成VMware Workstations14平台安装&#xff0c;会应用相关操作&#xff1b;完成Windows server2008R2操作系统及Kali Linux操作系统的安装&#xff1b;掌握SQLmap攻击工具的使用&#xff1b;使用SQLmap对目标站点进行渗透攻击&#xff1b; 实验环…

SPOJ375(树链剖分)

题目&#xff1a;Query on a tree 题意&#xff1a;给定一棵树&#xff0c;告诉了每条边的权值&#xff0c;然后给出两种操作&#xff1a; (1)把第i条边的权值改为val (2)询问a&#xff0c;b路径上权值最大的边 分析&#xff1a;本题与HDU3966差不多&#xff0c;区别就是&#…

简单的python服务器程序

一个接受telnet输入的服务器端小程序 #!/usr/local/bin/python3.5 #coding:utf-8 import sockethost port 51423s socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) s.bind((host, port)) s.listen(1)print(S…

iOS:一句代码实现文本输入的限制

前言 实际开发中&#xff0c;往往需要处理UITextView、UITextField输入的限制。比如输入必须是价格格式&#xff08;一个小数点、小数点后面最多两位&#xff09;&#xff1b;输入最大长度限制&#xff1b;对输入内容的实时回调。处理这些的时候&#xff0c;我们通常需要做一些…

Linux操作系统(一:基本操作)

1、创建一个以自己姓名拼音简写一致的用户名&#xff08; useradd -d /home/abc abc&#xff09; 2、在linux中使用打印命令&#xff0c;在命令行中输入“当前用户名Hello world !” 3、显示现在天年月日&#xff0c;显示后一天的日期&#xff0c;显示上一月日期&#xff0c;显…

Core Text 学习笔记-基础

前言 最近在学习YYKit框架&#xff0c;看到关于CoreText相关的知识的时候感到非常吃力&#xff0c;于是乎就恶补了一下Core Text相关的基础知识。 Glyphs&#xff08;字形&#xff09; 字符的图形形式&#xff0c; 则是文字中字母 (character) 的视觉表现。&#xff08;字形&am…

虚拟机下CentOS 6.5配置IP地址的三种方法

实验软件环境&#xff1a;虚拟机Vmware Workstation10.0 、CentOS 6.5 32位 1、自动获取IP地址 虚拟机使用桥接模式&#xff0c;相当于连接到物理机的网络里&#xff0c;物理机网络有DHCP服务器自动分配IP地址。 dhclient 自动获取ip地址命令 ifconfig 查询系统里网卡信息&…

GIS 相关知识扫盲

1、什么是GIS GIS:地理信息系统&#xff0c;它是一种特定的十分重要的空间信息系统。它是在计算机硬、软件系统支持下&#xff0c;对整个或部分地球表层&#xff08;包括大气层&#xff09;空间中的有关地理分布数据进行采集、储存、管理、运算、分析、显示和描述的技术系统。2…

Linux操作系统(二:shell脚本)

练习一&#xff1a;编写shell脚本&#xff0c;计算1-100的和&#xff1b; 练习二&#xff1a;将一目录下所有的文件的扩展名改为bak 练习三&#xff1a;写一个脚本&#xff0c;统计。/etc/ 目录下共有多少个目录文件 练习四&#xff1a;写一个脚本&#xff0c;依次向/etc/passw…

用OpenGLES实现yuv420p视频播放界面

背景 例子TFLive这个项目里&#xff0c;是我按着ijkPlayer写的直播播放器&#xff0c;要运行需要编译ffmpeg的库,网盘里存了一份, 提取码&#xff1a;vjce。OpenGL ES播放相关的在在OpenGLES的文件夹里。 learnOpenGL学到会使用纹理就可以了。 播放视频&#xff0c;就是把画面一…

C++类的静态成员详细讲解

在C中&#xff0c;静态成员是属于整个类的而不是某个对象&#xff0c;静态成员变量只存储一份供所有对象共用。所以在所有对象中都可以共享它。使用静态成员变量实现多个对象之间的数据共享不会破坏隐藏的原则&#xff0c;保证了安全性还可以节省内存。 静态成员的定义或声明要…

jenkins2 multibranch

通过multibranch类型的pipeline job使得对于多个branch的支持更加简单。只需要创建一个multibranch job&#xff0c;jenkins将自动地为所有的branch创建job。 文章来自&#xff1a;http://www.ciandcd.com文中的代码来自可以从github下载&#xff1a; https://github.com/ciand…

Nagios的安装和基本配置(一:知识点总结及环境准备)

实验目的及要求 掌握Nagios监控的基本使用&#xff1b;掌握Nagios监控服务的搭建和配置&#xff1b; 实验环境&#xff1a; 1、满足实验要求的PC端&#xff1b; Host-name OS IP sofaware Nagios-server Centos7 192.168.1.119 Apache,php,Nagios,Nagios-plguins Nag…

浅谈Android四大组件之Service

一&#xff1a;Service简介 Android开发中&#xff0c;当需要创建在后台运行的程序的时候&#xff0c;就要使用到Service。 1:Service&#xff08;服务&#xff09;是一个没有用户界面的在后台运行执行耗时操作的应用组件。其他应用组件能够启动Service&#xff0c;并且当用户切…

使用 fastlane 实现 iOS 持续集成(二)

本文接上篇文章主要说下怎样使用 fastlane 上传到fir和蒲公英&#xff0c;下面先介绍下 plugin 命令。 plugin命令介绍: 列出所有可用插件 fastlane search_plugins 搜索指定名称的插件: fastlane search_plugins [query] 添加插件: fastlane add_plugin [name] 安装插件: fast…

Nagios的安装和基本配置(二:Nagios-Server的安装)

任务二、Nagios-server的安装 2.1、创建Nagios用户和组 注&#xff1a; #useradd Nagios -s /bin/nologin #groundadd nagcmd #usermod -a -G nagcmd Nagios #usermod -a G nagcmd apache 2.2、安装Nagios 2.2.1、上传软件包至操作系统中&#xff1b; 2.2.2、解压软件并…

shell编程-正则表达式

1.正则表达式是什么 它主要用于字符串的模式分割&#xff0c;匹配&#xff0c;查找及替换操作。 2、正则表达式与通配符 正则表达式用来在文件中匹配符合条件的字符串&#xff0c;正则包含匹配。grep,awk,sed等命令可以支持正则表达式。 通配符用来匹配符合条件的文件名&#x…

使用 CocoaPods 给微信集成 SDK 打印收发消息

推荐序 本文介绍的是一套逆向工具&#xff0c;可以在非越狱手机上给任意应用增加插件。在文末的示例中&#xff0c;作者拿微信举例&#xff0c;展示出在微信中打印收发消息的功能。 这套工具可以加快逆向开发的速度&#xff0c;其重签名思想也可以用于二次分发别人的应用。 其实…

数据库之子查询四(多重,表复制)

一、多重子查询 select teaID,teaName,age,sex,dept,professionfrom tteacherwhere dept(select dept from teaIDt103265)and profession(select professionfrom tteacherwhere teaIDt103265)这里的子查询就是为了从表中提取出有效信息参与外部查询二、create table 语句中子查…

Nagios的安装和基本配置(三:Nagios-Client的安装)

任务三、Nagios-Client的安装 3.1、关闭防火墙和selinux 注&#xff1a; #systemctl stop firewalld.service #systemctl disable firewalld.service #vi /etc/selinux/config 3.2、配置环境 #yum install gcc glibc-common -y #yum install gd gd-devel openssl openssl…

事件(待完成)

内容窗口 事件绑定​ 给整个浏览器 内容窗口区的事件绑定。 ​通过 document.documentElement或者document.body&#xff1f;似乎都可以。但最好是直接通过document document.addEventListener(mousemove,function () { });// 整个浏览器内容范围都将触发。拖动实现必用​ 转载…

iOS 模仿支付宝支付到账推送,播报钱数

最近申请了支付宝的二维码收钱码&#xff0c;其中支付宝有这么一个功能&#xff0c;就是&#xff0c;别人扫描你的二维码给你转账之后&#xff0c;收到钱会有一条语音推送&#xff0c;”支付宝到账 1000万“之类的推送消息&#xff0c;不管你的支付宝app有没有被杀死。 只要你的…

hdu - 4707 - Pet

题意&#xff1a;一棵N个结点(编号从0开始)的树&#xff0c;根结点为0&#xff0c;求到根结点的距离大于D的结点个数&#xff08;0 < 测试组数T < 10, 0<N<100000, 0<D<N&#xff09;。 题目链接&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid4707…

Nagios的安装和基本配置(四:调试验证 错误总结)

任务四、调试验证 4.1、验证连通性 在/usr/local/Nagios/etc/nrpe.cfg文件中server的ip地址 #vi /usr/local/Nagios/etc/nrpe.cfg #重启nrpe #pkill nrpe #netstat -Intp #/usr/local/Nagios/bin/nrpe -d -c /usr/local/Nagios/etc/nrpe.cfg #在server主机做验证 #cd /…

hitTest和pointInside方法

hittest方法 就是用来寻找最合适的view当一个事件传递给一个控件&#xff0c;就会调用这个控件的hitTest方法点击了白色的view&#xff1a; 触摸事件 -> UIApplication -> UIWindow 调用 [UIWindow hitTest] -> 白色view [WhteView hitTest] 实验1: 定义 BaseView&…

Github上的PHP资源汇总大全

依赖管理 ——用于依赖管理的包和框架 Composer/Packagist : 一个包和依赖管理器 Composer Installers: 一个多框架Composer库安装器 Pickle: 可以在任意平台上安装PHP扩展包 依赖管理的附加部分 ——其它依赖管理的相关工具 Satis : 静态的Composer库生成器 Composition: 一个…