PHP实现的统计数据功能详解


Posted in PHP onDecember 06, 2016

本文实例讲述了PHP实现的统计数据功能。分享给大家供大家参考,具体如下:

统计,就是把基本的数据,整合起来。

用到sql的,有group by 功能,count功能,order by功能等等。

sql将收集的数据,进行统计分析。

一般情况下,sql处理后得到的数据,还要通过php的逻辑来进行整理。

以一定的格式,展示到前台。

一般都是以数组的方式展示,这也是数据结构的概念。

PHP实现的统计数据功能详解

看这张图片,基本想想结构大概为

{上线数,出单总数,核过总数,总人均,总核率,{(坐席人1,工号1,出单数1,发货数1,核单率1),(坐席人2,工号2,出单数2,发货数2,核单率2)}}

如果用php展示成上面的结构的话,就很好处理了。

首先通过sql获取初次处理的数据,

别小看这初次处理的数据,处理的好,会非常的便捷。

SELECT a.user,count(order_id) as subcount,b.passcount,c.full_name from vicidial_order a LEFT JOIN (SELECT user,count(order_id) as passcount from vicidial_order where time > UNIX_TIMESTAMP('2015-11-7') and user_group = 'TeamOne' and verifysta = 'Y' GROUP BY user ) b on a.user = b.user LEFT JOIN vicidial_users c on a.user = c.user where time > UNIX_TIMESTAMP('2015-11-7') and a.user_group = 'TeamOne' GROUP BY a.user ;

sql思路,归类订单表,以user来进行归类。

获取每个人,当天的订单提交总数count()。

还要获取每个人,订单通过审核的总数,通过where筛选。

然后关联查询其他相关数据。

PHP实现的统计数据功能详解

有了这些基本数据,其他的相关数据都能出来了。

通过php来处理获取,其中变量命名要清晰,这样也有利于阅读代码。

$select_sql = "SELECT a.user,count(order_id) as subcount,b.passcount,c.full_name from vicidial_order a LEFT JOIN (SELECT user,count(order_id) as passcount from vicidial_order where time > UNIX_TIMESTAMP('".$today."') and user_group = '".$user_group."' and verifysta = 'Y' GROUP BY user ) b on a.user = b.user LEFT JOIN vicidial_users c on a.user = c.user where time > UNIX_TIMESTAMP('".$today."') and a.user_group = '".$user_group."' GROUP BY a.user ";
$rows = mysqli_query( $db_conn, $select_sql );
$row_counts_list = mysqli_num_rows( $rows );
if ( $row_counts_list != 0 )
{
  $i = 0;
  while($rs = mysqli_fetch_assoc( $rows )) // mysqli_fetch_assoc 获取键值数据   mysqli_fetch_field 获取一条数据 mysqli_fetch_fields 获取多组数据  mysqli_fetch_row
  {
    $outData['list'][$i]['user'] = $rs['user'];
    $outData['list'][$i]['full_name'] = $rs['full_name'];
    $outData['list'][$i]['subcount'] = $rs['subcount'];
    $outData['list'][$i]['passcount'] = $rs['passcount'];
    $outData['list'][$i]['passrate'] = round(($rs['passcount']/$rs['subcount'])*100)."%";
    $outData['all_subcount'] += $rs['subcount'];
    $outData['all_passcount'] += $rs['passcount'];
    $i++;
  }
  $outData['all_passrate'] = round(($outData['all_passcount']/$outData['all_subcount'])*100)."%";
  $outData['online_count'] = $row_counts_list;
  $outData['average_subcount'] = round($outData['all_subcount']/$outData['online_count'],1);
}

其中outData就是要输出的数据结构类型。

Array
(
  [list] => Array
    (
      [0] => Array
        (
          [user] => 8001
          [full_name] => 魏硕磊
          [subcount] => 3
          [passcount] => 2
          [passrate] => 67%
        )
      [1] => Array
        (
          [user] => 8004
          [full_name] => 刘庆
          [subcount] => 2
          [passcount] => 2
          [passrate] => 100%
        )
      [2] => Array
        (
          [user] => 8005
          [full_name] => 章厚英
          [subcount] => 4
          [passcount] => 3
          [passrate] => 75%
        )
    )
  [all_subcount] => 9
  [all_passcount] => 7
  [all_passrate] => 78%
  [online_count] => 3
  [average_subcount] => 3
)

获取数据后,一切都好办了。

套入页面就可以了,然后自己再调试调试。

<!-- begin -->
<?php foreach ($outData as $k => $v) { ?>
<div class="col-xs-12 col-sm-6 widget-container-col ui-sortable">
  <div class="widget-box widget-color-blue">
    <div class="widget-header">
      <h5 class="widget-title bigger lighter">
        <i class="ace-icon fa fa-table"></i>
        【<?php echo $v['group_name'];?>】成绩表
      </h5>
    </div>
    <div class="widget-body">
      <div class="widget-main no-padding">
        <table>
        </table>
        <table class="table table-striped table-bordered table-hover">
          <thead style="text-align:center;font-size:16px">
            <tr>
              <td colspan="2">上线总人数:</td>
              <td colspan="3"><?php echo $v['stat']['online_count']?></td>
            </tr>
            <tr>
              <td colspan="2">出单总数:</td>
              <td style="color:red"><?php echo $v['stat']['all_subcount']?></td>
              <td >核过总数</td>
              <td style="color:red"><?php echo $v['stat']['all_passcount']?></td>
            </tr>
            <tr>
              <td colspan="2">总人均:</td>
              <td style="color:red"><?php echo $v['stat']['average_subcount']?></td>
              <td >总核率</td>
              <td style="color:red"><?php echo $v['stat']['all_passrate']?></td>
            </tr>
          </thead>
          <thead class="thin-border-bottom">
            <tr>
              <th>
                <i class="ace-icon "></i>
                坐席人
              </th>
              <th>
                <i class="ace-icon "></i>
                工号
              </th>
              <th>
                <i class="ace-icon "></i>
                出单数
              </th>
              <th>
                <i class="ace-icon "></i>
                发货数
              </th>
              <th>
                <i class="ace-icon "></i>
                核单率
              </th>
            </tr>
          </thead>
          <tbody>
            <?php foreach ($v['stat']['list'] as $listk => $listv) { ?>
            <tr>
              <td class=""><?php echo $listv['full_name']?></td>
              <td>
                <a href="#"><?php echo $listv['user']?></a>
              </td>
              <td class="">
                <a href="#"><?php echo $listv['subcount']?></a>
              </td>
              <td class=""><?php echo $listv['passcount']?></td>
              <td class=""><?php echo $listv['passrate']?></td>
            </tr>
            <?php }?>
            <tr style="color:red;font-size:16px">
                <td class=""colspan="2">总计</td>
                <td class=""><?php echo $v['stat']['all_subcount']?></td>
                <td class=""><?php echo $v['stat']['all_passcount']?></td>
                <td class=""><?php echo $v['stat']['all_passrate']?></td>
            </tr>
          </tbody>
        </table>
      </div>
    </div>
  </div>
</div>
<?php }?>
<!-- end -->

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
phpBB BBcode处理的漏洞
Oct 09 PHP
fleaphp crud操作之findByField函数的使用方法
Apr 23 PHP
PHP获取url的函数代码
Aug 02 PHP
PHP中获取内网用户MAC地址(WINDOWS/linux)的实现代码
Aug 11 PHP
PHP禁止个别IP访问网站
Oct 30 PHP
php 无限级分类,超级简单的无限级分类,支持输出树状图
Jun 29 PHP
php单态设计模式(单例模式)实例
Nov 18 PHP
php判断文件上传类型及过滤不安全数据的方法
Dec 17 PHP
php限制ip地址范围的方法
Mar 31 PHP
PHP编写学校网站上新生注册登陆程序的实例分享
Mar 21 PHP
PHPCMS忘记后台密码的解决办法
Oct 30 PHP
PHP实现基于回溯法求解迷宫问题的方法详解
Aug 17 PHP
php+ajax简单实现全选删除的方法
Dec 06 #PHP
thinkPHP数据库增删改查操作方法实例详解
Dec 06 #PHP
thinkPHP中volist标签用法示例
Dec 06 #PHP
探究Laravel使用env函数读取环境变量为null的问题
Dec 06 #PHP
thinkphp中AJAX返回ajaxReturn()方法分析
Dec 06 #PHP
php中引用符号(&amp;)的使用详细介绍
Dec 06 #PHP
thinkPHP简单实现多个子查询语句的方法
Dec 05 #PHP
You might like
类的另类用法--数据的封装
2006/10/09 PHP
常用的php对象类型判断
2008/08/27 PHP
PHP多例模式介绍
2013/06/24 PHP
PHP实现查询手机归属地的方法详解
2017/04/28 PHP
javascript编程起步(第七课)
2007/01/10 Javascript
ASP.NET jQuery 实例15 通过控件CustomValidator验证CheckBoxList
2012/02/03 Javascript
jquery根据name属性查找的小例子
2013/11/21 Javascript
jQuery获取和设置表单元素的方法
2014/02/14 Javascript
js控制浏览器全屏示例代码
2014/02/20 Javascript
基于NodeJS的前后端分离的思考与实践(五)多终端适配
2014/09/26 NodeJs
jQuery中die()方法用法实例
2015/01/19 Javascript
js绘制圆形和矩形的方法
2015/08/05 Javascript
实例代码详解jquery.slides.js
2015/11/16 Javascript
Angularjs 依赖压缩及自定义过滤器写法
2017/02/04 Javascript
Bootstrap jquery.twbsPagination.js动态页码分页实例代码
2017/02/20 Javascript
vue拦截器Vue.http.interceptors.push使用详解
2017/04/22 Javascript
Node.js 使用递归实现遍历文件夹中所有文件
2017/09/18 Javascript
使用DataTable插件实现异步加载数据
2017/11/19 Javascript
基于JavaScript中标识符的命名规则介绍
2018/01/06 Javascript
vue-cli3 karma单元测试的实现
2019/01/18 Javascript
vue源码nextTick使用及原理解析
2019/08/13 Javascript
在Koa.js中实现文件上传的接口功能
2019/10/08 Javascript
详解Webpack4多页应用打包方案
2020/07/16 Javascript
[14:57]DOTA2 HEROS教学视频教你分分钟做大人-幽鬼
2014/06/13 DOTA
python基础教程之面向对象的一些概念
2014/08/29 Python
Python中MySQLdb和torndb模块对MySQL的断连问题处理
2015/11/09 Python
利用python批量检查网站的可用性
2016/09/09 Python
python中字符串类型json操作的注意事项
2017/05/02 Python
Python内置函数reversed()用法分析
2018/03/20 Python
浅谈Python中的全局锁(GIL)问题
2019/01/11 Python
实例讲解Python脚本成为Windows中运行的exe文件
2019/01/24 Python
SQL注入攻击的种类有哪些
2013/12/30 面试题
跟单文员的岗位职责
2013/11/14 职场文书
怎样写好自荐信和推荐信
2013/12/26 职场文书
期终自我鉴定
2014/02/17 职场文书
太太口服液广告词
2014/03/20 职场文书