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

jQuery+PHP+Mysql实现抽奖程序

jQuery+PHP+Mysql实现抽奖程序

抽奖程序在实际生活中广泛运用,由于应用场景不同抽奖的方式也是多种多样的。本文将采用实例讲解如何利用jQuery+PHP+MySQL实现类似电视中常见的一个简单的抽奖程序。

查看演示

本例中的抽奖程序要实现从海量手机号码中一次随机抽取一个号码作为中奖号码,可以多次抽奖,被抽中的号码将不会被再次抽中。抽奖流程:点击“开始”按钮后,程序获取号码信息,滚动显示号码,当点击“停止”按钮后,号码停止滚动,这时显示的号码即为中奖号码,可以点击“开始”按钮继续抽奖。

HTML

<div id="roll"></div><input type="hidden" id="mid" value=""> <p><input type="button" class="btn" id="start" value="开始"> <input type="button" class="btn" id="stop" value="停止"></p> <div id="result"></div> 

上述代码中,我们需要一个#roll用来显示滚动号码,#mid是用来记录抽中的号码id,然后就是需要两个按钮分别用来“开始”和“停止”动作,最后还需要一个#result显示抽奖结果。

CSS

我们使用简单的css来修饰html页面。

.demo{width:300px; margin:60px auto; text-align:center} #roll{height:32px; line-height:32px; font-size:24px; color:#f30} .btn{width:80px; height:26px; line-height:26px; background:url(btn_bg.webp)  repeat-x; border:1px solid #d3d3d3; cursor:pointer} #stop{display:none} #result{margin-top:20px; line-height:24px; font-size:16px; text-align:center} 

注意,我们默认将按钮#stop设置为display:none,是为了一开始只显示“开始”按钮,点击“开始”后,抽奖进行中,将显示“停止”按钮。

jQuery

我们首先要实现的是点击“开始”按钮,通过ajax从后台获取抽奖用的数据即手机号码,然后通过定时滚动显示手机号码,注意每次显示的手机号码是随机的,也就是说不是按照某种顺序出现的,我们看下面的代码:

$(function(){   var _gogo;   var start_btn = $("#start");   var stop_btn = $("#stop");      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运行定时器,这样就达到了滚动显示抽奖号码的效果。同时显示“停止”按钮,隐藏“开始”按钮,这时抽奖进行中。

接下来看“停止”动作需要做的工作。

  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("<p>"+mobile+"</p>");       }       stop_btn.hide();       start_btn.show();     });   }); 

当单击“停止”按钮,意味着抽奖结束。使用clearInterval()函数停止定时器,获取被抽中号码的id,然后通过$.post将选中号码id发送给后台data.php处理。应为被抽中的号码需要在数据库中标记。如果后台处理成功,前端将中奖号码追加到中奖结果中,同时隐藏“停止”按钮,显示“开始”按钮,可以再次抽奖了。

注意,我们使用setInterval()和clearInterval()设置定时器和停止定时器,关于这两个函数的使用大家可以google或百度下。

PHP

data.php需要做两件事,一,通过连接数据库,读取手机号码信息(不包好已中奖号码),然后通过转换成json格式输出给前端;二,通过接收前端请求,修改对应的数据库中的中奖号码状态,即标识该号码已中奖,下次将不再作为抽奖号码。

include_once('connect.php'); //连接数据库  $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'],0,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程序就是操作数据库,然后返回对应的信息给前端。

MYSQL

最后将member表结构信息附上。

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; 

关于抽奖程序,根据不同的应用场合不同的需求,会有不同的表现形式。接下来我们会有文章讲述如何按照不同的概率实现的抽奖程序

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

相关文章

vue+vuex+axio从后台获取数据存入v

vue+vuex+axio从后台获取数据存入v

组件,获取数据,后台,共享数据,电脑软件,在vue项目中组件间相互传值或者后台获取的数据需要供多个组件使用的情况很多的话,有必要考虑引入vuex来管理这些凌乱的状态,今天这边博文用来记录这一整个的过程,后台api接口是使用webpack-server模拟的…

关于vuex的学习实践笔记

关于vuex的学习实践笔记

学习,笔记,电脑软件,vuex,Vuex 简介Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。例如(travel store):import * as types from '../t…

如何设置PPT2007演示文稿中图例区

如何设置PPT2007演示文稿中图例区

位置,图例,设置,如何设置,演示文稿,  众所周知,PPT插入图表之后,默认的图例区都是在图表下方的,这让不习惯的人很不适应,那么怎么修改PPT图例区的位置呢?以下是小编为您带来的关于设置PPT2007图例区的位置,希望对您有所帮助。设置PPT2007图例…

Excel2007中批量删除文本和控件对

Excel2007中批量删除文本和控件对

对象,批量删除,控件,操作方法,操作步骤,  当工作表中有很多控件或者图片等对象时,一个一个去删除会非常的繁琐。案例阐述了如何一次性删除整个工作表中图形、控件和影音等对象,方便快捷。今天,小编就教大家在Excel2007中批量删除文本和控件…

Js利用Canvas实现压缩功能

Js利用Canvas实现压缩功能

压缩,功能,电脑软件,Js,Canvas,最近做的APP项目涉及到手机拍照上传图片,因为手机拍照的图片通常都比较大,所以上传的时候就会很慢。为此,需要对图片进行压缩处理来优化上传功能。以下是具体实现:/* * 图片压缩 * img 原始图片 * width 压…

excel 2007窗体录入教程excel 2007

excel 2007窗体录入教程excel 2007

教程,窗体,电脑软件,excel,strong,  在把数据录入到Excel中,有些时候需要打代码进行调整,可以更有效的提高工作效率。下面是由小编分享的excel 2007窗体录入教程,希望对你有用。excel 2007窗体录入教程excel 2007窗体录入教程1:单击Excel2007…

js判断PC端与移动端跳转

js判断PC端与移动端跳转

移动端,跳转,电脑软件,js,PC,在网上看到很多这样类似的代码,但是有的很复杂,或者有的没有判断完全,上次经理去见完客户回来讲,使用苹果浏览打开pc端(pc已经做了识别跳转)会自动跳转到移动端的网页去,后来经测试才发现document.writeln(" 是否为移…

excel2007输入带圈字符的教程excel

excel2007输入带圈字符的教程excel

输入带,字符,教程,电脑软件,strong,  Excel中经常需要使用到输入带圈字符的功能,带圈字符具体该如何输入呢?下面是由小编分享的excel2007输入带圈字符的教程,以供大家阅读和学习。excel2007输入带圈字符的教程输入带圈符号步骤1:打开数据表,…

jq stop | 和:is | :animated的用

jq stop | 和:is | :animated的用

详解,区别,电脑软件,jq,stop,stop(true,true):表示停止匹配元素正在进行的动画并跳转到末状态,清空未执行完的动画队列。常用于”解决光标移入移出得过快导致的动画效果与光标动作不一致“问题!jQuery stop() 方法jQuery stop() 方法用于停止…

jQuery插件扩展操作入门示例

jQuery插件扩展操作入门示例

插件,扩展操作,示例,入门,电脑软件,本文实例讲述了jQuery插件扩展操作。分享给大家供大家参考,具体如下:如下DEMO 展示了为dom扩展一个myshowHtml 的方法<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <script src="…

excel表格的批注功能使用方法

excel表格的批注功能使用方法

使用方法,表格,功能,电脑软件,excel,  Excel中的批注功能该如何使用呢?下面是由小编分享的excel表格的批注功能使用方法,以供大家阅读和学习。excel表格的批注功能使用方法:  添加批注步骤1:选择需要添加批注的单元格。添加批注步骤2:点击&…

ps如何按照步骤安装

ps如何按照步骤安装

安装,方法,步骤,安装步骤,电脑软件,  ps软件是可以进行安装的,但是安装步骤一定要准守。其实这个也不算太难,下面就让小编告诉你ps如何按照步骤安装的方法,一起学习吧。ps按照步骤安装的方法1、先准备软件,下载地址在工具里写出来咯。下载后…