https://blog.csdn.net/shenpengchao/article/details/59073589

先上一张效果图

这边用的是echarts插件http://echarts.baidu.com/

上代码(小白写的 别追求什么屌逼代码,就是冗余的面向过程,不服你来咬我)

<div>
<button onclick="zhou()" class="btnweek week active" style="margin-left: 300px">按周排</button>
      <button onclick="yue()" class="btnweek month" style="margin-left: 100px">按月排</button>
</div> <!-- 为 ECharts 准备一个具备大小(宽高)的 DOM -->
<div id="main" style="width: 95%;height:400px;"></div>
<script type="text/javascript">
zhou();
function zhou() {
var myChart = echarts.init(document.getElementById('main'));
$(".week").attr("class","btnweek week active");
$(".month").attr("class","btnweek month");
$.get('?act=welcome&op=index&get_data=week',function(data){
myChart.setOption(data);
},'json');
}
function yue(){
var myChart = echarts.init(document.getElementById('main'));
// 异步加载数据
$(".week").attr("class","btnweek week");
$(".month").attr("class","btnweek month active");
$.get('?act=welcome&op=index&get_data=month',function(data){
myChart.setOption(data);
},'json');
}
</script>

这些是html代码,需要引入一个erchars.js文件 可以从上面网址down下来,接下来上统计的代码

/*
*
* VIP列表
*
*/ public function indexOp()
{
$model_shop = Model('shop');
$model_admin = Model('admin');
$model_member = Model('member');
$model_ap = Model('ap');
$user=$this->getAdminInfo();
$admin=$model_admin->getOneAdmin($user["id"]);
if($admin["admin_area"]){
$condition["areacode"]=array("in",$admin["admin_area"]);
} //ap
$shop_id = $model_shop->getShopList($condition, '*');
$sid=array();
foreach($shop_id as $shid){
$sid[]=$shid["id"];
}
$condition_ap["shop_id"]=array("in",$sid); if ($_GET['get_data']=='week') {
echo $this->get_json_arr(6);
}else if ($_GET['get_data']=='month') {
echo $this->get_json_arr(30);
}else{
Tpl::showpage('welcome.index');
}
} public function get_json_arr($num=6){
$model_shop = Model('shop');
$model_ap = Model('ap');
//统计商铺
for($i=$num;$i>=0;$i--){
$daystr=date('Y-m-d', strtotime("-$i day"));
$searchstr="TO_DAYS(from_unixtime(addtime,'%Y-%m-%d'))=TO_DAYS('".$daystr."')";
$shopCount=$model_shop->where($searchstr)->count();
$shopDayCountArray[]=$shopCount;
}
//统计ap
for($i=$num;$i>=0;$i--){
$daystr=date('Y-m-d', strtotime("-$i day"));
$searchstr="TO_DAYS(from_unixtime(addtime,'%Y-%m-%d'))=TO_DAYS('".$daystr."')";
$apCount=$model_ap->where($searchstr)->count();
$dateArray[]=date('m-d', strtotime("-$i day"));
$apDayCountArray[]=$apCount;
}
// echo "<pre>";
// print_r($dateArray);die;
if ($num==6) {
$title='近一周的商铺和AP的统计';
}else{
$title='近一月的商铺和AP的统计';
}
//处理json包
$json_arr = array(
'title'=>array('text'=>$title),
'tooltip'=>array('trigger'=>'axis'),
'legend'=>array('data'=>array('商铺','AP')),
'toolbox'=>array(
'show'=>true,
'feature'=>array(
'dataZoom'=>array('yAxisIndex'=>'none'),
'dataView'=>array('readOnly'=>false),
'magicType'=>array('type'=>array('line','bar')),
'restore'=>array(),
'saveAsImage'=>array()
),
), 'xAxis'=>array('type'=>'category','boundaryGap'=>false,'data'=>$dateArray),
'yAxis'=>array('type'=>'value','interval'=>1,'min'=>0,'axisLabel'=>array('formatter'=>'{value} 个')),
'series'=>array(
array(
'name'=>'商铺',
'type'=>'line',
'data'=>$shopDayCountArray
),
array(
'name'=>'AP',
'type'=>'line',
'data'=>$apDayCountArray
)
)
);
return json_encode($json_arr);exit;
}

php统计近一周和近30天的用户数据的更多相关文章

  1. antdv时间选择a-date-picker设置日期可选范围(近一周、近半月、近一月等) - moment.js

    Vue->Template: <a-date-picker v-model="value" :disabled-date="disabledDate" ...

  2. mysql查询出近一周,三个月,一年的数据

    SELECT * FROM 表名 WHERE 时间字段>DATE_SUB(CURDATE(), INTERVAL YEAR) 一年 SELECT * FROM 表名 WHERE 时间字段> ...

  3. MySQL 统计上一周从周一到周日的用户

    这个功能按理说很常见,奇怪的是很难搜索到一个合适的.稍微整理了下,具体的就不展开了,注意这个表中的时间为毫秒,这条语句拷贝复制就能用.照顾大部分的无脑码农. SELECT case when FROM ...

  4. PHP 获取上月,本月,近15天,近30天日期

    <?php //echo $_SERVER['PHP_SELF']; //define('ROOT_PATH',str_replace($_SERVER['PHP_SELF'],'',str_r ...

  5. mysql查询今天、昨天、近7天、近30天、本月、上一月的SQL语句

    mysql查询今天.昨天.近7天.近30天.本月.上一月的SQL语句 这篇文章主要介绍了mysql查询今天.昨天.近7天.近30天.本月.上一月的SQL语句,一般在一些统计报表中比较常用这个时间段,需 ...

  6. 4.总结近5周以来的github上的工作情况,以图表方式分析你小组的工作情况、存在的问题及解决的方案。(尤心心)

    4.总结近5周以来的github上的工作情况,以图表方式分析你小组的工作情况.存在的问题及解决的方案. (1)利用github本身的graphs可以清晰的看出小组成员在github上面的交互,可以直接 ...

  7. mysql统计天、周、月、季度、半年、年

    之前在网上搜索按时间统计,发现不是很全 ,接着别人的思路进行延伸下, mysql统计天.周.月.季度.半年.年 前期工作创建辅助表 CREATE TABLE num (i INT); ),(),(), ...

  8. 简单统计SQLSERVER用户数据表大小(包括记录总数和空间占用情况)

    在SQLSERVER,简单的组合sp_spaceused和sp_MSforeachtable这两个存储过程,可以方便的统计出用户数据表的大小,包括记录总数和空间占用情况,非常实用,在SqlServer ...

  9. Tomcat集群下获取memcached缓存对象数量,统计在线用户数据量

    项目需要统计在线用户数量,系统部署在集群环境下,使用会话粘贴的方式解决Session问题.要想得到真实在线用户数,必须是所有节点的总和. 这里考虑使用memcached存放用户登录数据,key为use ...

随机推荐

  1. Boost Asio教程集合

    http://zh.highscore.de/cpp/boost/ 第七章 https://mmoaay.gitbooks.io/boost-asio-cpp-network-programming- ...

  2. 洛谷P3459 [POI2007]MEG-Megalopolis [2017年6月计划 树上问题02]

    [POI2007]MEG-Megalopolis 题目描述 Byteotia has been eventually touched by globalisation, and so has Byte ...

  3. [C#] 利用方向鍵移動 TextBox Focus

    論壇問題 版面上有 100 個 textbox,編號為 1-100,textbox 排列為 1 欄 20 個,共 5 欄,當一開打這個 form 會將在第一欄第一列第一個 textbox 的背景顏色變 ...

  4. list的基本使用

    转自:https://www.cnblogs.com/BeyondAnyTime/archive/2012/08/10/2631191.html vector :vector和built-in数组类似 ...

  5. Python之路--协程/IO多路复用

    引子: 之前学习过了,线程,进程的概念,知道了在操作系统中进程是资源分配的最小单位,线程是CPU调度的最小单位.按道理来说我们已经算是把CPU的利用率提高很多了.但是我们知道无论是创建多进程还是创建多 ...

  6. sqlserver 一些基本的语法

    1. STR()函数    这是将数字转换为字符串的快捷函数,这个函数有3个参数:数值,总长度,和小数位   如: select str(123.4,8,4) = 123.4000  如长度不够,则左 ...

  7. Direct2D 第5篇 绘制图像

    原文:Direct2D 第5篇 绘制图像 我加载的图像是一张透明底PNG图像,背景使用渐变的绿色画刷 #include <windows.h> #include <d2d1.h> ...

  8. 第三十一讲:UML类图(上)

    类名 成员变量:属性 成员函数:方法 访问权限-属性名-属性的类型 访问权限-方法名-返回值,还可以传递参数列表. 继承类的类图 JAVA里面类的访问权限只有两种:package(默认的访问权限)和p ...

  9. 2019-10-18-dotnet-修复找不到-System.ServiceProcess-定义

    title author date CreateTime categories dotnet 修复找不到 System.ServiceProcess 定义 lindexi 2019-10-18 21: ...

  10. (转载)怎样解决SQL Server内存不断增加问题

    在启用sqlserver服务后,发现进程sqlservr.exe的内存使用量从开始的100多MB持续增加,很快就高达1G以上,造成机器运行缓慢.卡机,严重影响使用.sql server 在查询大数据量 ...