1.html页面
<div> <form action="" method="POST"> <span>周期:</span> <select style="width: 100px;" id="group-status" name="day"> <?php foreach ($Arrday as $key=>$val) { ?>
//此处的判断是为了做表单还原 <option value="<?php echo $key;?>" <?php if($day == $key){ echo 'selected';}?>><?php echo $val?></option> <?php } ?> </select> <span>站点:</span> <select style="width: 100px;" id="group-status" name="site"> <?php foreach ($siteArr as $key=>$val) { ?> <option value="<?php echo $key;?>" <?php if($site == $key){ echo 'selected';}?>><?php echo $val?></option> <?php } ?> </select> <span>开始时间:</span> <input id="startTime" name="startTime" class="form-control layer-date" type="text" value="<?php echo $startTime;?>" οnclick="laydate({istime: true, format: 'YYYY-MM-DD'});"> <span>结束时间:</span> <input id="endTime" name="endTime" class="form-control layer-date" type="text" value="<?php echo $endTime;?>" οnclick="laydate({istime: true, format: 'YYYY-MM-DD'});"> <input type="hidden" name="_csrf" id='csrf' value="<?= Yii::$app->request->csrfToken ?>"> <button class="btn btn-primary" type="submit">查询</button> </form> </div>
2.controller
/** * 新增用户统计. * */ public function actionNewUser() { $day = Yii::$app->request->post('day',3); $site = Yii::$app->request->post('site','全部'); $endTime = !empty($_POST['endTime']) ? strtotime($_POST['endTime'])+86399 : strtotime(date('Y-m-d 23:59:59', time())); $startTime = !empty($_POST['startTime']) ? strtotime($_POST['startTime']) : $endTime - 3 * 86400; if ($day == 3) {//三天 $endTime = strtotime(date('Y-m-d 00:00:00', time()))+86400;//今天结束时间 $startTime = $endTime - 3 * 86400; } elseif ($day == 7) {//七天 $endTime = strtotime(date('Y-m-d 00:00:00', time()))+86400;//今天结束时间 $startTime = $endTime - 7 * 86400; } //为了做表单还原 $newStartTime=date('Y-m-d',$startTime); $newEndTime=date('Y-m-d',$endTime); $model = new User(); $Data = $model->getDatas($startTime, $endTime,$site); $siteArr = $model->getsites($startTime, $endTime);//获取所有站点 $length = ($endTime - $startTime) / 86400;//一共几天 $xAxis = array(); $yAxis = array(); while($startTime < $endTime) { $today = date('m/d',$startTime); $xAxis[] = $today; $yAxis[$today] = 0; $startTime += 86400; } foreach($Data as $l) { $today = date('m/d',strtotime($l['date'])); $yAxis[$today] = $l['c']; } $listData = array_values($yAxis); return $this->render('newUser', [ 'xAxis' => $xAxis, 'Data' => $listData, 'Arrday' => $this->Arrday, 'day' => $day, 'startTime' => $newStartTime, 'endTime' => $newEndTime, 'siteArr' => $siteArr, 'site' => $site, ]); }
3.model
/** * 数据统计查询数据,在开始和结束时间内,查出每天有几个数据
from_unixtime()函数格式化,将MYSQL中以INT(11)存储的时间以"YYYY-MM-DD"格式来显示
date()函数,
函数返回日期或日期/时间表达式的日期部分。
->select('date(from_unixtime(created_at)) as date,count(*) as c')语句查出每天有几个数据
* @param string $username * @return array|null */ public function getDatas($startTime,$endTime,$site) { $data = (new yii\db\Query()) ->select('date(from_unixtime(created_at)) as date,count(*) as c') ->from('wx_user') ->where(['>=', 'created_at',$startTime]) ->andWhere(['<', 'created_at',$endTime]); if($site!='全部') $data = $data->andWhere(['site'=>$site]); $data = $data->groupBy('date(from_unixtime(created_at))') ->All(); return $data; }