一个好玩的jq+php实现转盘抽奖程序
前台页面:
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <meta name="keywords" content="html5,本地存储" /> <meta name="description" content="Helloweba演示平台,演示XHTML、CSS、jquery、PHP案例和示例" /> <title>幸运大转盘-jQuery+PHP实现的抽奖程序</title> <style type="text/css"> *{ margin:0; padding:0;} img { border:none;} .w1000{ width:1000px; margin:0 auto;} .w1000 img, .gl img{ display:block;} /*中奖名单*/ button{padding:2px 8px;} .action{text-align:center; padding:10px; border-bottom:dashed 1px #ccc;} #rightDemo{width:257px; padding:10px;position:absolute; left:95px; top:90px;} #rightDemo li{ color:#825a00; font-size:13px;width:257px;} ul{ height:335px; overflow:hidden;} ul li{line-height:30px; height:30px; overflow:hidden; list-style:none; padding:0; margin:0;} /*页面样式*/ .box_11{ background:url(http://www.sansejin.com.cn/themes/laboci_2012/images/sales201308/box_r11_bg.jpg) no-repeat center center;} .gl{ background:#F00F4B;} /*转盘样式*/ #main{width:1000px; min-height:600px; margin:0 auto;} .demo{width:1000px; height:527px; position:relative; margin:0 auto; zoom:1;} #disk{width:1000px; height:527px; background:url(http://www.sansejin.com.cn/themes/laboci_2012/images/sales201308/disk.jpg) no-repeat} #start{width:111px; height:212px; position:absolute; top:149px; left:605px;} #start img{cursor:pointer} /*转盘样式*/ </style> <script type="text/javascript" src="http://www.helloweba.com/demo/js/jquery.js"></script> <script type="text/javascript" src="http://www.helloweba.com/demo/lottery/jQueryRotate.2.2.js"></script> <script type="text/javascript" src="http://www.helloweba.com/demo/lottery/jquery.easing.min.js"></script> <script type="text/javascript"> $(function(){ $("#startbtn").click(function(){ lottery(); }); }); function lottery(){ $.ajax({ type: 'POST', url: 'data.php', dataType: 'json', cache: false, error: function(){ alert('出错了!'); return false; }, success:function(json){ $("#startbtn").unbind('click').css("cursor","default"); var a = json.angle; var p = json.prize; $("#startbtn").rotate({ duration:3000, //转动时间 angle: 0, //默认角度 animateTo:1800+a, //转动角度 easing: $.easing.easeOutSine, callback: function(){ alert('恭喜你,抽中'+'"'+p+'"!'); $("#startbtn").rotate({angle:0}); $("#startbtn").click(function(){ lottery(); }).css("cursor","pointer"); } }); } }); } </script> </head> <body> <div class="gl"> <!--抽奖区域[--> <div class="gl"> <div class="box_11"> <!--抽奖转盘[--> <div class="demo"> <div id="disk"></div> <div id="start"><img src="http://www.sansejin.com.cn/themes/laboci_2012/images/sales201308/start.png" alt="抽奖" id="startbtn"/></div> <!--中奖名单[--> <div id="rightDemo"> <ul id="rightBox"> <li>手机尾号为***7884的用户抽中100元现金券大礼包</li> <li>手机尾号为***7884的用户抽中100元现金券大礼包</li> <li>手机尾号为***0573的用户抽中大奖iphone5智能手机</li> <li>手机尾号为***3200的用户抽中300元现金券大礼包</li> <li>手机尾号为***4520的用户抽中300元现金券大礼包</li> <li>手机尾号为***2341的用户抽中300元现金券大礼包</li> <li>手机尾号为***9687的用户抽中3折抢购齿白健精品套装</li> <li>手机尾号为***0931的用户抽中300元现金券大礼包</li> <li>手机尾号为***1747的用户抽中3折抢购红酒木瓜丰胸靓汤</li> <li>手机尾号为***3748的用户抽中100元现金券大礼包</li> <li>手机尾号为***0125的用户抽中300元现金券大礼包</li> <li>手机尾号为***0063的用户抽中3折抢购魔泥金装精品套装</li> <li>手机尾号为***7884的用户抽中300元现金券大礼包</li> <li>手机尾号为***5892的用户抽中100元现金券</li> <li>手机尾号为***7884的用户抽中300元现金券大礼包</li> <li>手机尾号为***7224的用户抽中3折抢购祛疤精华凝露组合二代</li> <li>手机尾号为***7910的用户抽中300元现金券大礼包</li> <li>手机尾号为***2832的用户抽中300元现金券大礼包</li> <li>手机尾号为***3488的用户抽中3折抢购红酒木瓜丰胸靓汤</li> <li>手机尾号为***6693的用户抽中300元现金券大礼包</li> <li>手机尾号为***4787的用户抽中3折抢购齿白健精品套装</li> <li>手机尾号为***8547的用户抽中3折抢购祛疤精华凝露组合二代</li> <li>手机尾号为***7884的用户抽中300元现金券大礼包</li> <li>手机尾号为***2670的用户抽中100元现金券</li> <li>手机尾号为***0811的用户抽中300元现金券大礼包</li> <li>手机尾号为***5120的用户抽中3折抢购魔泥金装精品套装</li> <li>手机尾号为***9229的用户抽中300元现金券大礼包</li> <li>手机尾号为***4321的用户抽中大奖ipad mini平板电脑</li> <li>手机尾号为***6693的用户抽中300元现金券大礼包</li> <li>手机尾号为***8777的用户抽中100元现金券</li> <li>手机尾号为***9968的用户抽中300元现金券大礼包</li> <li>手机尾号为***4699的用户抽中3折抢购祛疤精华凝露组合二代</li> <li>手机尾号为***8511的用户抽中300元现金券大礼包</li> <li>手机尾号为***6665的用户抽中300元现金券大礼包</li> <li>手机尾号为***5552的用户抽中3折抢购红酒木瓜丰胸靓汤</li> <li>手机尾号为***4321的用户抽中300元现金券大礼包</li> <li>手机尾号为***1399的用户抽中100元现金券大礼包</li> <li>手机尾号为***8455的用户抽中3折抢购魔泥金装精品套装</li> <li>手机尾号为***8822的用户抽中300元现金券大礼包</li> <li>手机尾号为***8224的用户抽中3折抢购红酒木瓜丰胸靓汤</li> <li>手机尾号为***5023的用户抽中300元现金券大礼包</li> </ul> </div> <!--]end 中奖名单--> </div> <!--]end 抽奖转盘--> </div> </div> <script type="text/javascript"> function maquer(){ setInterval(function(){ $('#rightBox li:first').animate({'height':'0','opacity': '0'}, 'slow', function() { $(this).removeAttr('style').insertAfter('#rightBox li:last'); }); },1000); $(this).attr('disabled',true); return; } maquer(); </script> </body> </html>
data.php
<?php include("config.php");//链接数据库 $prize_arr = array( '0' => array('id'=>1,'min'=>55,'max'=>80,'prize'=>'3折抢购红酒木瓜丰胸靓汤 ','v'=>10),//弧度:55°-80°范围是:“3折抢购红酒木瓜丰胸靓汤”奖, v=10是中奖率是10% '1' => array('id'=>2,'min'=>10,'max'=>35,'prize'=>'3折抢购自由呼吸魔泥金装精品套装','v'=>10), '2' => array('id'=>3,'min'=>320,'max'=>355,'prize'=>'100元现金券','v'=>20), '3' => array('id'=>4,'min'=>230,'max'=>265,'prize'=>'3折抢购218齿白健套装','v'=>10), '4' => array('id'=>5,'min'=>185,'max'=>215,'prize'=>'3折抢购498元祛疤精华','v'=>10), '5' => array('id'=>6,'min'=>140,'max'=>170,'prize'=>'300元现金券大礼包','v'=>40) ); function getRand($proArr) { $result = ''; //概率数组的总概率精度 $proSum = array_sum($proArr); //概率数组循环 foreach ($proArr as $key => $proCur) { $randNum = mt_rand(1, $proSum); if ($randNum <= $proCur) { $result = $key; break; } else { $proSum -= $proCur; } } unset ($proArr); return $result; } foreach ($prize_arr as $key => $val) { $arr[$val['id']] = $val['v']; } $rid = getRand($arr); //根据概率获取奖项id $res = $prize_arr[$rid-1]; //中奖项 $min = $res['min']; $max = $res['max']; $result['angle'] = mt_rand($min,$max); //随机生成一个角度 $result['prize'] = $res['prize']; echo json_encode($result); ?>
config.php(其实也可以不链接数据库,把data.php里面的链接数据库注释)
<?php $q=mysql_connect("localhost","root",""); if(!$q){ die('亲,链接不到数据库哦!'.mysql_error()); } mysql_query("set name utf8"); //以utf8读取数据库 mysql_select_db("test",$q); //数据库 ?>
原文: