php大转盘,php大转盘
大转盘,设定了华为手机必须是9001的时候才可以抽出,总抽奖次数10000名
// 大转盘
class Dazhuanpan
{
private $prize_arr; //奖品信息
private $proArr; //数量数组
private $user_num; //参与人总和
function __construct()
{
$con = mysqli_connect('localhost','root','root','ceshi'); //链接数据
// 查询参与用户数
$user_num_sqlu = "SELECT COUNT(id) FROM dazhuanpan_user";
$user_re = mysqli_query($con,$user_num_sqlu);
$user_num = mysqli_fetch_row($user_re)[0];
$this->user_num = $user_num;
// 查询奖品信息
$sql = "SELECT * FROM dazhuanpan_jiangpin";
$result = mysqli_query($con,$sql);
$data = mysqli_fetch_all($result,MYSQLI_ASSOC);
mysqli_free_result($result);
$this->prize_arr = $data;
mysqli_close($con);
$proArr = '';
// 遍历出数量数组
foreach ($data as $k=>$v)
{
// 查询奖品信息 如果大于9001的时候 加入第二名奖项;
if($k == 1)
{
if($user_num > 9001)
{
$proArr[] = $v['shuliang'];
}else{
$proArr[]=0;
}
}else{
$proArr[] = $v['shuliang'];
}
}
$this->proArr = $proArr;
}
/**
* 大转盘计算
* @return [type] [description]
*/
private function dzsuanfa()
{
$data = '';
$proSum = array_sum($this->proArr); //概率数组的总概率精度
foreach ($this->proArr as $k => $v) { //概率数组循环
$randNum = mt_rand(1, $proSum);
if ($randNum <= $v) {
$data = $id_jiangpin = $k; //中奖对应的ID
break;
} else {
$proSum -= $v;
}
}
unset($proArr);
// 数量减一
$this->prize_arr[$data]['shuliang']--;
$shuliang = $this->prize_arr[$data]['shuliang'];
// 修改库存
$con = mysqli_connect('localhost','root','root','ceshi'); //链接数据
$id_jiangpin++;
$sql = "UPDATE dazhuanpan_jiangpin SET shuliang = '$shuliang' WHERE id = '$id_jiangpin';";
// 添加中奖用户信息 (这里应该查询是否已经中奖中奖不给)
$sql .= "INSERT INTO dazhuanpan_user (phone,jiangpin_id) VALUE ('".$_GET["phone"]."','".$data."')";
$result = mysqli_multi_query($con,$sql);
if ($result)
{
// mysqli_free_result($result);
mysqli_close($con);
}else{
$data = 'false';
}
return $data;
}
/**
* 查询用户
* @return [type] [description]
*/
private function user()
{
$con = mysqli_connect('localhost','root','root','ceshi'); //链接数据
$sql = "SELECT * FROM dazhuanpan_user";
$result = mysqli_query($con,$sql);
$data = mysqli_fetch_all($result,MYSQLI_ASSOC);
mysqli_free_result($result);
// mysqli_close($con);
return $data;
}
/**
* 公共接口
* @return [type] [description]
*/
public function api()
{
// 次数达到10000 活动终止
if ($this->user_num == 10000)
{
echo '活动总次数到了!';die;
}elseif(array_sum($this->proArr) <= 0)
{
echo '奖品已经发放完毕!';die;
}
$dzsuanfa = $this->dzsuanfa();
if($dzsuanfa == false)
{
echo '错误';die;
}
// 奖品ID
// $jiang_id = $this->dzsuanfa();
// echo $jiang_id;die;
// 奖品信息
var_dump($this->prize_arr[$dzsuanfa]);
echo '
';
echo '恭喜获得'.$this->prize_arr[$dzsuanfa]['jiangpin'];
// 用户信息
echo "
";
var_dump($this->user());
}
}
$dz_class = new Dazhuanpan();
$dz_class->api();
mysql
CREATE TABLE `dazhuanpan_jiangpin` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`jiangpin` varchar(255) NOT NULL,
`min` int(11) NOT NULL,
`max` int(11) NOT NULL,
`shuliang` int(11) unsigned zerofill NOT NULL,
`zhuangtai` int(11) NOT NULL DEFAULT '1',
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
CREATE TABLE `dazhuanpan_user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`phone` varchar(255) NOT NULL,
`jiangpin_id` varchar(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=10001 DEFAULT CHARSET=utf8;DELIMITER //
CREATE PROCEDURE text2()
BEGIN
declare p decimal (10) default 0 ;
dd:loop
INSERT INTO dazhuanpan_user(id,phone,jiangpin_id)VALUE
('','18710733333','5'),
('','18710733333','5'),
('','18710733333','5'),
('','18710733333','5'),
('','18710733333','5'),
('','18710733333','5'),
('','18710733333','5'),
('','18710733333','5'),
('','18710733333','5'),
('','18710733333','5');
set p = p+10;
if p = 10000 then leave dd;
END if;
END loop dd;
END
//
php大转盘,php大转盘相关推荐
- linux系统 大分区,linux大硬盘怎么分区
随着硬盘的增大,linux系统对大硬盘,大分区的支持也有了相应的设置.很多刚刚学习的小白还是不太懂硬盘的挂载.为此学习啦小编为大家整理推荐了相关的知识,希望大家喜欢. linux大硬盘分区的详细方法 ...
- 程序员必知8大排序3大查找(三)
前两篇 <程序员必知8大排序3大查找(一)> <程序员必知8大排序3大查找(二)> 三种查找算法:顺序查找,二分法查找(折半查找),分块查找,散列表(以后谈) 一.顺序查找的基 ...
- 拿transformer做E2E全景分割,这个通用框架霸榜挑战赛,南大、港大联合提出
视学算法报道 机器之心编辑部 本文中,来自南大.港大.英伟达等机构的研究者提出了一个使用 transformer 进行端到端全景分割的通用框架,不仅为语义分割与实例分割提供了统一的 mask 预测工作 ...
- 国内高校简称撞车史:南大、西大、东大都在争,唯独北大没人抢
文章 | 募格学术 高校因简称经常发生争议,今天小编就来盘点一下.高校简称背后的"爱恨情仇",都可以拍一出大型连续剧了. 你知道你们学校的简称是啥嘛? 用官方措辞解释,高校简称 ...
- Transformer霸榜全景分割任务,南大、港大提出一种通用框架!
来源:机器之心 本文中,来自南大.港大.英伟达等机构的研究者提出了一个使用 transformer 进行端到端全景分割的通用框架,不仅为语义分割与实例分割提供了统一的 mask 预测工作流程,而且使得 ...
- 2019年上半年收集到的人工智能大神与大咖观点文章
2019年上半年收集到的人工智能大神与大咖观点文章 Hinton等人新研究:如何更好地测量神经网络表示相似性 520,看看AI大牛吴恩达和姚期智如何撩妹 AI教父杰弗里辛顿:AI反学习可能揭开人类梦境 ...
- 【大数据】大数据思维的十大核心原理
感谢博主,转自:https://blog.csdn.net/supermapsupport/article/details/78741774 一.数据核心原理 从"流程"核心转变为 ...
- MySQL-性能优化_大表和大事务的常用处理方案
文章目录 生猛干货 官方文档 影响MySQL性能的几大因素 大表带来的风险 大表的定义 大表带来的风险 如何应对大表? 大事务带来的风险 基本特性:ACID SQL标准中的4个隔离级别 Read Co ...
- 《深入理解大数据:大数据处理与编程实践》一一3.3 HDFS文件存储组织与读写...
本节书摘来自华章计算机<深入理解大数据:大数据处理与编程实践>一书中的第3章,第3.3节,作者 主 编:黄宜华(南京大学)副主编:苗凯翔(英特尔公司),更多章节内容可以访问云栖社区&quo ...
- 大数据职业理解_到底什么是大数据,大数据职业的具体工作内容是什么?
综合网络解释加上自己的理解给出了大数据的定义. 大数据就是数据规模达到海量级.极快的速度流转.数据类型和来源多种多样.价值密度低而且能够反映事物真实性的数据就是大数据. 大数据的工作内容包括以下几个方 ...
最新文章
- 【摄像头】宽动态范围
- OpenCV4.4 CUDA编译与加速全解析
- Oracle 分析及动态采样
- (部分伪)面向对象视频笔记
- Java并发教程–原子性和竞争条件
- linux webshell 页面管理,instantbox:30s内快速搭建可通过webshell管理的Linux系统
- 基于Echarts+HTML5可视化数据大屏展示—大数据管理平台中心
- uni 修改数据页面不重新渲染
- oracle 性能诊断工具,oracle性能诊断工具
- 微信小程序想通过场景化缩短路径
- 深信服虚拟桌面部署及性能优化关键点配置(图文顺序全解)
- mysql基础01 创建表 修改表
- 使用layui中的laypage遇到的各种问题总结
- 【微服务架构】让我们谈谈“拥有”他们的数据的微服务
- C语言中runtime错误,runtime error错误解决方案 打开软件出现runtime error
- 迷宫问题(OJ平台)附代码解释
- CodeForces 1144D -Equalize Them All
- linux TC命令使用总结
- Matplotlib 多个子图使用一个图例
- Microsoft Completes Acquisition of Collaboration Software Provider Groove Networks