如何使用codeigniter从数据库中获取高级图表的类别

时间:2014-10-07 22:54:05

标签: php codeigniter highcharts

我正在尝试从数据库中检索highcharts的类别。这些类别只是与图表中数据相对应的月份。

模型功能

function getMonthlySumOrders()
{
    $this->db->select("SUM(price_each*quantity) AS sum_monthly_price, DATE_FORMAT(job.order_date, '%M') AS 'order_date', customer.company_name", false);
    $this->db->join('job', 'job.job_id = job_details.job_id');
    $this->db->join('customer', 'customer.company_id = job.company_id');
    $this->db->where('job.company_id', '6');
    $this->db->where('job.order_date >=', date("m"));
    $this->db->group_by('MONTH(job.order_date)');
    $this->db->order_by("job.order_date", "desc");
    $this->db->limit(4);
    $query = $this->db->get('job_details');

return $query->result_array();
}

控制器

public function __construct(){
    parent::__construct();
    $this->load->model('customer_model');
}

function index(){

$data = $this->customer_model->getMonthlySumOrders();

foreach ($data as $order_sum_array) {
            $order_sum['sum_monthly_price'][] = $order_sum_array['sum_monthly_price'];
            $categories['month'][] = $order_sum_array['order_date'];
        }

$order_sum_data[] = array('name' => 'Company', 'data' => $order_sum['sum_monthly_price']);
$categories_data[] = $categories['month'];
$this->view_data['order_sum_data'] = json_encode($order_sum_data, JSON_NUMERIC_CHECK);
$this->view_data['categories_data'] = json_encode($categories_data, JSON_NUMERIC_CHECK);

$this->load->view('chart', $this->view_data);
}

查看脚本

$(function () {
$('#container').highcharts({
    chart: {
        type: 'column'
    },
    title: {
        text: 'Monthly Orders'
    },
    subtitle: {
        text: ''
    },
    xAxis: {
    categories: <?php echo $categories_data ;?>
    },
    yAxis: {
        min: 0,
        title: {
            text: 'Orders'
        }
    },
    tooltip: {
        headerFormat: '<span style="font-size:10px">{point.key}</span><table>',
        pointFormat: '<tr><td style="color:{series.color};padding:0">{series.name}: </td>' +
            '<td style="padding:0"><b>{point.y:.1f} mm</b></td></tr>',
        footerFormat: '</table>',
        shared: true,
        useHTML: true
    },
    plotOptions: {
        column: {
            pointPadding: 0.2,
            borderWidth: 0
        }
    },
    credits: {
        enabled: false
    },
    series:  <?php echo $order_sum_data ;?>
});
});
    </script>

因此图表'$ order_sum_data'的数据工作并显示在图表上,但所有类别都被放入图表的第一个栏中。 如果我回显$ order_sum_data。 $ categories_data我得到:

[{"name":"Company","data":[12209.8,2490,5109,4065]}]  [["September","August","July","June"]]

我可以看到类别周围有两个方括号,但不知道如何将其减少到一个必需的集合。

我还要求将我在模型中选择的公司名称附加到order_sum数组名称组件。目前它只是硬编码为“公司”。

在另一个问题上,如果没有特定月份的订单,我的查询将不会显示0,如果找不到具有相应月份类别的特定月份的结果,我将如何安排if语句显示0高度列?

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

分类问题:

  • 你有一个数组数组:[["September","August","July","June"]],而应该只是一个数组:["September","August","July","June"]

0值问题:

公司名称:

  • 既然你知道硬编码的位置,那么为什么只用一些可以获得有关公司名称信息的变量替换该值呢?