文档章节

php 制作曲线图demo

Tony2015
 Tony2015
发布于 2015/05/04 11:24
字数 474
阅读 15
收藏 0
public function view()
    {    
        //接收qd_user表的ID值 ,如果没有接收到,则返回终端列表
        $qd_user_id = isset($_REQUEST['qd_user_id']) ? $_REQUEST['qd_user_id'] : 0;
        if( !$qd_user_id ){
            $this->error('数据错误!qd_user_id值没有接收到','__APP__/terminal/index');
        }
        
        //接收年份,默认是当前年份
        $year = isset($_REQUEST['year']) ? $_REQUEST['year'] : date("Y");
        $defaultStime = $year.'-01-01';
        $defaultEtime = (intval($year)+1).'-01-01';
        
        //1.统计会员-按月**********************************************************************************************************
        $memberList = M('m_member','mall_')->field("DATE_FORMAT(regtime,'%m') months, COUNT(*) counts ")
                        ->where("qd_user_id={$qd_user_id} AND regtime>='{$defaultStime}' AND regtime<'{$defaultEtime}'")
                        ->group('months')
                        ->select(); 
        
        //2.统计订单-按月**********************************************************************************************************
        $orderList = M("m_order",'mall_')->field("DATE_FORMAT(ordertime,'%m') months, COUNT(*) counts")
                    ->where("orderstate IN(1,2,3,6) AND uid IN(SELECT id FROM mall_m_member WHERE qd_user_id=".$qd_user_id.") AND ordertime>='{$defaultStime}' AND ordertime<'{$defaultEtime}'")
                    ->group("months")
                     ->select();
        
        //3.统计收益-按月**********************************************************************************************************
        //求所有子订单
        $jm = M("jm_order jm","mall_");
        $jmOrderList = $jm->field("prud, DATE_FORMAT(orderdate,'%m') months")
                        ->join("INNER JOIN (SELECT orderid FROM mall_m_order o INNER JOIN (SELECT id FROM mall_m_member  WHERE qd_user_id=".$qd_user_id.") m ON m.id=uid WHERE orderstate IN(1,2,3,6)) o ON o.orderid = jm.ordernum ")
                        ->where("c_state IN(10) AND mir_jiesuan_status=2 AND orderdate>='{$defaultStime}' AND orderdate<'{$defaultEtime}'")
                        ->select();
        
        //计算出每个子订单收益金额
        foreach($jmOrderList as $k=>$jm)
        {    
            $prub = unserialize($jm['prud']); //商品信息,反序列化
            //结算出单件的收益
            $produc = M('produc','mall_')->field("(CASE WHEN gyprice>0 THEN (memprice-gyprice)*0.4 ELSE 0 END) AS sy")
                        ->where('id='.$prub['id'])
                        ->find();
            //一件子订单的收益  = 单件收益  x 件数
            $jmOrderList[$k]['sy'] = isset($produc['sy']) ? floatval($produc['sy']) * intval($prub['num']) : 0;
        }
        
        //4.按月整理数据,没有数据的月份值则为0******************************************************************************************
        for($i =1; $i<=12; $i++)
        {    
            //统计会员, 每个月的默认值是0 -----------------------------
            $member[$i] = 0; 
            if( $memberList && is_array($memberList) )
            {
                foreach($memberList as $m)
                {
                    if( intval($m['months']) == $i)
                    {
                        $member[$i] = $m['counts'];
                        break;
                    }
                }
            }            
            
            //统计订单, 默认值:0 -----------------------------
            $order[$i] = 0;
            if($orderList){
                foreach($orderList as $m)
                {
                    if( intval($m['months']) == $i)
                    {
                        $order[$i] = $m['counts'];
                        break;
                    }
                }
            }

            //编计收益数--按月-----------------------------
            $sy[$i] = 0;
            if($jmOrderList)
            {  
                foreach($jmOrderList as $jm)
                {
                    if( intval($jm['months']) == $i )
                    {
                        $sy[$i] += floatval($jm['sy']);
                    }
                }
            }
            //改单位为千元,每月金额/1000
            $sy[$i] = $sy[$i] ? $sy[$i]/1000: 0;
        }
    
        //公共模板
        $this->commons = R('terminal/read');
        $this->year = $year;
        $this->qd_user_id = $qd_user_id;
        $this->member = implode(',', $member);
        $this->order  = implode(',', $order);
        $this->sy     = implode(',', $sy);
        $this->display('./Tpl/default/terminal_view.html');
    }


© 著作权归作者所有

共有 人打赏支持
Tony2015
粉丝 1
博文 50
码字总数 28618
作品 0
杭州
程序员
私信 提问
11 个用来创建图形和图表的 JavaScript 工具包

Aristochart DEMO || Download Aristochart 是一个用来创建图形和图表的最佳 JavaScript 工具包之一。完全可定制的灵活线图库。 Morris.Js – Pretty Time-Series Line Graphs DEMO || Downl...

oschina
2013/08/06
9.3K
19
JFreeChar能实现实时跟新的曲线图吗?

各位老大,现在我们要用JFreeChart制作一个曲线图,这个曲线图主要功能是用来显示数据库里面数据的变化。因为数据库里面的数据时时刻刻都在变化,现在想把这个实时情况反映在Chart里面。我看...

HelenYu
2011/09/12
980
4
纯 Javascript 图表 - Highcharts

Highcharts是一个制作图表的纯Javascript类库,主要特性如下: 兼容性:兼容当今所有的浏览器,包括iPhone、IE和火狐等等; 对个人用户完全免费; 纯JS,无BS; 支持大部分的图表类型:直线图...

匿名
2009/12/10
132.5K
18
cheng5x/YcHighCharts

Highcharts是一个制作图表的纯Javascript类库,主要特性如下: 兼容性:兼容当今所有的浏览器,包括iPhone、IE和火狐等等; 对个人用户完全免费; 纯JS,无BS; 支持大部分的图表类型:直线图...

cheng5x
2015/08/05
0
0
Highcharts图表框架.NET版--YcHighCharts

Highcharts 是一个制作图表的纯 Javascript 类库,自主封装 .net 图表框架,支持 webform 和 mvc3 以上。 主要特性如下: 兼容性:兼容当今所有的浏览器,包括iPhone、IE和火狐等等; 对个人...

cheng5x
2015/08/06
1K
1

没有更多内容

加载失败,请刷新页面

加载更多

我所遇到的GitLab 502问题的解决

我所遇到的GitLab 502问题的解决 2015年02月11日 20:17:07 wangxicoding 阅读数:51095 标签: gitlab 502 解决 端口冲突 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://bl...

rootliu
40分钟前
5
0
OSChina 周五乱弹 —— 对不起,把你看成绿灯了

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @-冰冰棒- :#今日歌曲推荐# 梁博《男孩 (Live)》居然只有现场版,也是好听cry。 《男孩 (Live)》- 梁博 手机党少年们想听歌,请使劲儿戳(这...

小小编辑
50分钟前
375
9
移植Modbus到STM32F103(2):移植FreeModbus到usart3并运行示例代码

FreeModbus是Modbus的一个被广泛移植的实现。其源码在github,最新版是1.6。 FreeModbus支持Modbus功能码里的0x01~0x06,0x0F~0x11和0x17,对一些功能比如异常诊断和读事件计数等功能码并没有...

Konstantine
今天
3
0
浅谈神经网络(神经网络篇)

背景 之前写过浅谈神经网络基础篇,简单介绍下机器学习这块内容,用于扫盲。本文正式将神经网络,这部分是深度学习的基础。了解完可以掌握强大的机器学习的方法,也可以更好的了解深度学习。...

Uknowzheng
今天
5
0
移动硬盘变为RAW格式后的修复

在Mac上使用自己的移动硬盘结果文件系统格式变为RAW; 在自己windows笔记本上使用chkdsk H: /F进行修复,修复日志如下: C:\Users\mengzhang6>chkdsk H: /F文件系统的类型是 NTFS。卷标是 do...

晨猫
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部