Php Opencart仪表板显示最近几个月的统计信息

Php Opencart仪表板显示最近几个月的统计信息,php,opencart,Php,Opencart,如何添加显示上个月统计数据的选项 PHP 公共功能图(){ $this->load->language('common/home'); $data=array(); $data['order']=array(); $data['customer']=array(); $data['xaxis']=array(); $data['order']['label']=$this->language->get('text_order'); $data['customer']['label']=$this

如何添加显示上个月统计数据的选项

PHP

公共功能图(){
$this->load->language('common/home');
$data=array();
$data['order']=array();
$data['customer']=array();
$data['xaxis']=array();
$data['order']['label']=$this->language->get('text_order');
$data['customer']['label']=$this->language->get('text_customer');
如果(设置($this->request->get['range'])){
$range=$this->request->get['range'];
}否则{
$range=‘月’;
}
交换机($范围){
案件日期:
对于($i=0;$i<24;$i++){
$query=$this->db->query(“选择COUNT(*)作为“.”.db\u前缀中的总计。“订单`其中订单状态\u id>'0”和(日期(添加日期)=日期(现在())和小时(添加日期)='”(int)$i。“)按小时分组(添加日期)按日期添加ASC”);
如果($query->num\u行){
$data['order']['data'][]=数组($i,(int)$query->row['total']);
}否则{
$data['order']['data'][]=数组($i,0);
}
$query=$this->db->query(“选择COUNT(*)作为“.db_PREFIX.”中的总计。客户的日期(DATE_added)=日期(NOW())和小时(DATE_added)='”(int)$i。“”按小时分组(DATE_added)按日期订单(DATE_added ASC));
如果($query->num\u行){
$data['customer']['data'][]=数组($i,(int)$query->row['total']);
}否则{
$data['customer']['data'][]=数组($i,0);
}
$data['xaxis'][]=数组($i,date('H',mktime($i,0,0,date('n'),date('j'),date('Y')));
}                   
打破
“一周”案例:
$date_start=strottime('-'.date('w').'days');
对于($i=0;$i<7;$i++){
$date=日期($Y-m-d',$date_start+($i*86400));
$query=$this->db->query(“选择COUNT(*)作为“.”.db\u前缀中的总计。“订单`WHERE order\u status\u id>'0'和DATE(DATE\u added)=”“$this->db->escape($DATE)。“'GROUP BY DATE(DATE\u added)”;
如果($query->num\u行){
$data['order']['data'][]=数组($i,(int)$query->row['total']);
}否则{
$data['order']['data'][]=数组($i,0);
}
$query=$this->db->query(“选择COUNT(*)作为“.”.db\u前缀中的总计。“客户`何处日期(添加日期)=””“$this->db->escape($DATE)。“‘按日期分组(添加日期)’”);
如果($query->num\u行){
$data['customer']['data'][]=数组($i,(int)$query->row['total']);
}否则{
$data['customer']['data'][]=数组($i,0);
}
$data['xaxis'][]=数组($i,date('D',strottime($date));
}
打破
违约:
个案‘月份’:
对于($i=1;$i db->query(“选择COUNT(*)作为“.”.db_前缀。“订单`其中订单状态_id>”0“和($this->db->escape($DATE)。“”)按天分组(日期_添加)”;
如果($query->num\u行){
$data['order']['data'][]=数组($i,(int)$query->row['total']);
}否则{
$data['order']['data'][]=数组($i,0);
}   
$query=$this->db->query(“选择COUNT(*)作为“.db\u PREFIX”中的总计。“客户所在日期(添加日期)=”“””“$this->db->escape($DATE)。”““按日期分组(添加日期)”);
如果($query->num\u行){
$data['customer']['data'][]=数组($i,(int)$query->row['total']);
}否则{
$data['customer']['data'][]=数组($i,0);
}   
$data['xaxis'][]=数组($i,date('j',strottime($date));
}
打破
案件‘年份’:
对于($i=1;$i db->query(“选择COUNT(*)作为“.”.db\u前缀中的总计。“订单”其中订单状态\u id>“0”和年份(添加日期)=“.”。日期('Y')。“”和月份(添加日期)=“$i”。“按月分组(添加日期)”;
如果($query->num\u行){
$data['order']['data'][]=数组($i,(int)$query->row['total']);
}否则{
$data['order']['data'][]=数组($i,0);
}
$query=$this->db->query(“选择COUNT(*)作为“.db_PREFIX.”中的总计。客户,其中年(添加日期)='”。日期('Y')。“,月(添加日期)='”。“$i.”按月分组(添加日期)”;
如果($query->num_行){
$data['customer']['data'][]=数组($i,(int)$query->row['total']);
}否则{
$data['customer']['data'][]=数组($i,0);
}
$data['xaxis'][]=数组($i,date('M',mktime(0,0,0,$i,1,date('Y')));
}           
打破
} 
$this->response->setOutput(json_encode($data));
}
HTML


今天
本周
这个月
今年
Qvmod来自@Andy的回答:

<file name="admin/controller/common/home.php">
    <operation>
           <search position="before"><![CDATA[case 'year':]]></search>
           <add><![CDATA[

        case 'month_previous':
            for ($i = 1; $i <= date('t', strtotime(date('Y-m', strtotime('-1 month')).'-01')); $i++) {
                $date = date('Y-m', strtotime('-1 month')).'-'.$i;

                $query = $this->db->query("SELECT COUNT(*) AS total FROM `" . DB_PREFIX . "order` WHERE order_status_id > '0' AND (DATE(date_added) = '" . $this->db->escape($date) . "') GROUP BY DAY(date_added)");

                if ($query->num_rows) {
                    $data['order']['data'][] = array($i, (int)$query->row['total']);
                } else {
                    $data['order']['data'][] = array($i, 0);
                }   

                $query = $this->db->query("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "customer WHERE DATE(date_added) = '" . $this->db->escape($date) . "' GROUP BY DAY(date_added)");

                if ($query->num_rows) {
                    $data['customer']['data'][] = array($i, (int)$query->row['total']);
                } else {
                    $data['customer']['data'][] = array($i, 0);
                }   

                $data['xaxis'][] = array($i, date('j', strtotime($date)));
            }
        break;

        ]]></add>
       </operation>
</file>
<file name="admin/view/template/common/home.tpl">
    <operation>
        <search position="after"><![CDATA[<option value="month"><?php echo $text_month; ?></option>]]></search>
        <add><![CDATA[          
            <option value="month_previous">Last Month</option>
        ]]></add>
    </operation>
</file>

db->query(“选择COUNT(*)作为“.”.db_PREFIX.order`WHERE order_status_id>“0”和(DATE(DATE_added)=”“$this->db->escape($DATE)。“”)按天分组(DATE_added)”;
如果($query->num\u行){
$data['order']['data'][]=数组($i,(int)$query->row['total']);
}否则{
$data['order']['data'][]=数组($i,0);
}   
$query=$this->db->query(“选择COUNT(*)作为“.db\u PREFIX”中的总计。“客户所在日期(添加日期)=”“””“$this->db->escape($DATE)。”““按日期分组(添加日期)”);
如果($query->num\u行){
$data['customer']['data'][]=数组($i,(int)$query->row['total']);
<select name="range">
    <option value="day">Today</option>
    <option value="week">This Week</option>
    <option value="month">This Month</option>
    <option value="year">This Year</option>
</select>   
<file name="admin/controller/common/home.php">
    <operation>
           <search position="before"><![CDATA[case 'year':]]></search>
           <add><![CDATA[

        case 'month_previous':
            for ($i = 1; $i <= date('t', strtotime(date('Y-m', strtotime('-1 month')).'-01')); $i++) {
                $date = date('Y-m', strtotime('-1 month')).'-'.$i;

                $query = $this->db->query("SELECT COUNT(*) AS total FROM `" . DB_PREFIX . "order` WHERE order_status_id > '0' AND (DATE(date_added) = '" . $this->db->escape($date) . "') GROUP BY DAY(date_added)");

                if ($query->num_rows) {
                    $data['order']['data'][] = array($i, (int)$query->row['total']);
                } else {
                    $data['order']['data'][] = array($i, 0);
                }   

                $query = $this->db->query("SELECT COUNT(*) AS total FROM " . DB_PREFIX . "customer WHERE DATE(date_added) = '" . $this->db->escape($date) . "' GROUP BY DAY(date_added)");

                if ($query->num_rows) {
                    $data['customer']['data'][] = array($i, (int)$query->row['total']);
                } else {
                    $data['customer']['data'][] = array($i, 0);
                }   

                $data['xaxis'][] = array($i, date('j', strtotime($date)));
            }
        break;

        ]]></add>
       </operation>
</file>
<file name="admin/view/template/common/home.tpl">
    <operation>
        <search position="after"><![CDATA[<option value="month"><?php echo $text_month; ?></option>]]></search>
        <add><![CDATA[          
            <option value="month_previous">Last Month</option>
        ]]></add>
    </operation>
</file>
    <option value="last_month">Last Month</option>
    date('t', strtotime(date('Y-m', strtotime('-1 month')).'-01'))
    $date = date('Y-m', strtotime('-1 month')).'-'.$i;