后台统计功能部分示例

46 篇文章 1 订阅

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>&nbsp;
        <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>&nbsp;
        <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;
}


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值