php mysql 抽奖_jQuery+PHP+Mysql实现抽奖程序
上述代码中,我们需要一个#roll用来显示滚动号码,#mid是用来记录抽中的号码id,然后就是需要两个按钮分别用来“开始”和“停止”动作,最后还需要一个#result显示抽奖结果。
CSS
我们使用简单的css来修饰html页面。
注意,我们默认将按钮#stop设置为display:none,是为了一开始只显示“开始”按钮,点击“开始”后,抽奖进行中,将显示“停止”按钮。
jQuery
我们首先要实现的是点击“开始”按钮,通过ajax从后台获取抽奖用的数据即手机号码,然后通过定时滚动显示手机号码,注意每次显示的手机号码是随机的,也就是说不是按照某种顺序出现的,我们看下面的代码:
start_btn.click(function(){
$.getJSON('data.PHP',function(json){
if(json){
var obj = eval(json);//将JSON字符串转化为对象
var len = obj.length;
_gogo = setInterval(function(){
var num = Math.floor(Math.random()*len);//获取随机数
var id = obj[num]['id']; //随机id
var v = obj[num]['mobile']; //对应的随机号码
$("#roll").html(v);
$("#mid").val(id);
},100); //每隔0.1秒执行一次
stop_btn.show();
start_btn.hide();
}else{
$("#roll").html('系统找不到数据源,请先导入数据。');
}
});
});
});
首先我们定义变量,方便后续调用。然后,当点击“开始”按钮后,页面向后台data.PHP发送Ajax请求,这里我们使用jqeury的getJSON来完成异步请求。当后台返回json数据时,我们通过通过eval() 函数可以将JSON字符串转化为对象obj,其实就是将json数据转换为数组了。这时,我们使用setInterval做一个定时器,定时器里需要做的工作是:随机获取数组obj中的手机号码信息,然后显示在页面上。然后每隔0.1运行定时器,这样就达到了滚动显示抽奖号码的效果。同时显示“停止”按钮,隐藏“开始”按钮,这时抽奖进行中。
接下来看“停止”动作需要做的工作。
PHP;">
stop_btn.click(function(){
clearInterval(_gogo);
var mid = $("#mid").val();
$.post("data.PHP?action=ok",{id:mid},function(msg){
if(msg==1){
var mobile = $("#roll").html();
$("#result").append("
"+mobile+"");
}
stop_btn.hide();
start_btn.show();
});
});
当单击“停止”按钮,意味着抽奖结束。使用clearInterval()函数停止定时器,获取被抽中号码的id,然后通过$.post将选中号码id发送给后台data.PHP处理。应为被抽中的号码需要在数据库中标记。如果后台处理成功,前端将中奖号码追加到中奖结果中,同时隐藏“停止”按钮,显示“开始”按钮,可以再次抽奖了。
注意,我们使用setInterval()和clearInterval()设置定时器和停止定时器,关于这两个函数的使用大家可以google或百度下。
data.PHP需要做两件事,一,通过连接数据库,读取手机号码信息(不包好已中奖号码),然后通过转换成json格式输出给前端;二,通过接收前端请求,修改对应的数据库中的中奖号码状态,即标识该号码已中奖,下次将不再作为抽奖号码。
$action = $_GET['action'];
if($action==""){ //读取数据,返回json
$query = mysql_query("select * from member where status=0");
while($row=mysql_fetch_array($query)){
$arr[] = array(
'id' => $row['id'],'mobile' => substr($row['mobile'],3)."****".substr($row['mobile'],-4,4)
);
}
echo json_encode($arr);
}else{ //标识中奖号码
$id = $_POST['id'];
$sql = "update member set status=1 where id=$id";
$query = MysqL_query($sql);
if($query){
echo '1';
}
}
我们可以看出,数据表member中有个字段叫status,这个字段是用来标识是否中奖。1表示已中奖,0表示未中奖。这个后台PHP程序就是操作数据库,然后返回对应的信息给前端。
最后将member表结构信息附上。
sql;">
CREATE TABLE `member` (
`id` int(11) NOT NULL auto_increment,`mobile` varchar(20) NOT NULL,`status` tinyint(1) NOT NULL default '0',PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
关于抽奖程序,根据不同的应用场合不同的需求,会有不同的表现形式。接下来我们会有文章讲述如何按照不同的概率实现的抽奖程序
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程之家。
总结
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢交流学习经验,点击链接加入交流1群:1065694478(已满)交流2群:163560250
php mysql 抽奖_jQuery+PHP+Mysql实现抽奖程序相关推荐
- php mysql随机抽奖源码_PHP实现抽奖功能实例代码
在项目开发中经常会遇到花钱抽奖类型的需求.但是老板总是担心用户用小钱抽到大奖.这样会导致项目亏损.下边这段代码可以有效制止抽奖项目亏钱. 个人奖池: 语言:thinkphp redis mysql 表 ...
- liunx上mysql源码安装mysql,搞定linux上MySQL编程(一):linux上源码安装MySQL
[版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途] 1. 首先下载源码包: ftp://ftp.jaist.ac.jp/pub/m ...
- is this mysql server_远程连接MySQL数据库报错:is not allowed to connect to this MYSQL server的解决办法...
1. 改表法. 可能是你的帐号不允许从远程登陆,只能在localhost.这个时候只要在localhost的那台电脑,登入MySQL后,更改 "mysql" 数据库里的 " ...
- linux 修改mysql root密码_Linux mysql如何更改root密码
说到root密码,很多人想到的是电脑系统的root账号密码,其实mysql也有root密码,那么在Linux系统中,mysql要如何修改root密码呢?特别是忘记了root密码要怎么办? 通过登录my ...
- tcmalloc mysql 缓存_Tcmalloc优化Mysql内存管理
实验环境: OS:Redhat 5.3 64bit Mysql:mysql 5.5.29 TCMalloc(Thread-Caching Malloc)与标准glibc库的malloc实现一样的功能, ...
- PHP mysql数据迁移,【MySQL】迁移数据目录php-php教程
move dir # mv /var/libmysql /mnt/data/ vi /etc/my.cnf [mysqld] // 服务器端 datadir=/mnt/data/mysql socke ...
- nodejs mysql 异步_Gearman + Nodejs + MySQL UDF异步实现 MySQL 到 Redis 的数据同步
1, 环境 CentOS, MySQL, Redis, Nodejs Redis是一个开源的K-V内存数据库,它的key可以是string/set/hash/list/...,因为是基于内存的,所在访 ...
- mysql dba系统学习(19)配置mysql+lvs+keeplived实现Mysql读操作的负载均衡
配置mysql+lvs+keeplived实现Mysql读操作的负载均衡 环境: test1192.168.46.131master test2192.168.46.130slave备份test库 t ...
- MYSQL添加新用户 MYSQL为用户创建数据库 MYSQL为新用户分配权限
2019独角兽企业重金招聘Python工程师标准>>> 1.新建用户 //登录MYSQL @>mysql -u root -p @>密码 //创建用户 mysql> ...
最新文章
- 【分块】#6278. 数列分块入门 2 (区间修改、查询权值c在区间中的排名)
- python中导入模块用什么命令_Python导入模块的技巧
- V5SHOP网店系统V 8.0 仿京东模板
- c++ primer 5th p289页练习题自己的解答程序
- 剑指 Offer 31. 栈的压入、弹出序列【无取巧,易于理解!】
- Knockout.Js案例一Introduction
- 高并发系统 3 大利器之缓存
- 推荐 | 掌握这些套路,你也能解决 90% 的 NLP 问题
- eclipse sdk 无法更新
- Go开发关键技术指南
- RS232电平与TTL电平转换
- Dewarp 文件恢复技术
- 新三板开通精选层后,仅存的四家软件公司都是做什么的?
- 人工智能数学基础之线性代数(二)
- 并行计算————计算机架构
- 谷歌浏览器Google Chrome插件分享
- 相关词挖掘-下拉词挖掘免费工具-用户都在相关搜索的关键词挖掘
- ta点读笔客户端_PIYO PEN点读笔=早教机+故事机+智能音箱+伴眠神器
- 如何使用服务器虚拟主机,购买虚拟主机后如何使用
- 一键下载75款常用的jquery特效前端网页代码