上述代码中,我们需要一个#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实现抽奖程序相关推荐

  1. php mysql随机抽奖源码_PHP实现抽奖功能实例代码

    在项目开发中经常会遇到花钱抽奖类型的需求.但是老板总是担心用户用小钱抽到大奖.这样会导致项目亏损.下边这段代码可以有效制止抽奖项目亏钱. 个人奖池: 语言:thinkphp redis mysql 表 ...

  2. liunx上mysql源码安装mysql,搞定linux上MySQL编程(一):linux上源码安装MySQL

    [版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途] 1. 首先下载源码包: ftp://ftp.jaist.ac.jp/pub/m ...

  3. is this mysql server_远程连接MySQL数据库报错:is not allowed to connect to this MYSQL server的解决办法...

    1. 改表法. 可能是你的帐号不允许从远程登陆,只能在localhost.这个时候只要在localhost的那台电脑,登入MySQL后,更改 "mysql" 数据库里的 " ...

  4. linux 修改mysql root密码_Linux mysql如何更改root密码

    说到root密码,很多人想到的是电脑系统的root账号密码,其实mysql也有root密码,那么在Linux系统中,mysql要如何修改root密码呢?特别是忘记了root密码要怎么办? 通过登录my ...

  5. tcmalloc mysql 缓存_Tcmalloc优化Mysql内存管理

    实验环境: OS:Redhat 5.3 64bit Mysql:mysql 5.5.29 TCMalloc(Thread-Caching Malloc)与标准glibc库的malloc实现一样的功能, ...

  6. PHP mysql数据迁移,【MySQL】迁移数据目录php-php教程

    move dir # mv /var/libmysql /mnt/data/ vi /etc/my.cnf [mysqld] // 服务器端 datadir=/mnt/data/mysql socke ...

  7. nodejs mysql 异步_Gearman + Nodejs + MySQL UDF异步实现 MySQL 到 Redis 的数据同步

    1, 环境 CentOS, MySQL, Redis, Nodejs Redis是一个开源的K-V内存数据库,它的key可以是string/set/hash/list/...,因为是基于内存的,所在访 ...

  8. mysql dba系统学习(19)配置mysql+lvs+keeplived实现Mysql读操作的负载均衡

    配置mysql+lvs+keeplived实现Mysql读操作的负载均衡 环境: test1192.168.46.131master test2192.168.46.130slave备份test库 t ...

  9. MYSQL添加新用户 MYSQL为用户创建数据库 MYSQL为新用户分配权限

    2019独角兽企业重金招聘Python工程师标准>>> 1.新建用户 //登录MYSQL @>mysql -u root -p @>密码 //创建用户 mysql> ...

最新文章

  1. 【分块】#6278. 数列分块入门 2 (区间修改、查询权值c在区间中的排名)
  2. python中导入模块用什么命令_Python导入模块的技巧
  3. V5SHOP网店系统V 8.0 仿京东模板
  4. c++ primer 5th p289页练习题自己的解答程序
  5. 剑指 Offer 31. 栈的压入、弹出序列【无取巧,易于理解!】
  6. Knockout.Js案例一Introduction
  7. 高并发系统 3 大利器之缓存
  8. 推荐 | 掌握这些套路,你也能解决 90% 的 NLP 问题
  9. eclipse sdk 无法更新
  10. Go开发关键技术指南
  11. RS232电平与TTL电平转换
  12. Dewarp 文件恢复技术
  13. 新三板开通精选层后,仅存的四家软件公司都是做什么的?
  14. 人工智能数学基础之线性代数(二)
  15. 并行计算————计算机架构
  16. 谷歌浏览器Google Chrome插件分享
  17. 相关词挖掘-下拉词挖掘免费工具-用户都在相关搜索的关键词挖掘
  18. ta点读笔客户端_PIYO PEN点读笔=早教机+故事机+智能音箱+伴眠神器
  19. 如何使用服务器虚拟主机,购买虚拟主机后如何使用
  20. 一键下载75款常用的jquery特效前端网页代码

热门文章

  1. 优雅代码的秘密,只因为我掌握了Java Stream 流操作
  2. 我理解的霍乱时期的爱情
  3. 【计算机体系结构】很难理解?带你从头到尾捋一遍
  4. c语言输出 inf是什么意思,cuffdiff 输出文件中的inf和nan的意思
  5. Unity 性能优化 学习
  6. 智能手机丢失了数据怎么恢复
  7. Ubuntu安装解码器解决浏览器内不能播放音频的问题
  8. 文件资源管理器卡死现象解决方法
  9. sql 使用保留字作为字段
  10. HTML入门必看-含源码案例(表格-列表-表单-图片-视频-音频)