繁体   English   中英

谷歌可视化饼图 PHP 数组

[英]Google Visualizations Pie Chart PHP array

我必须制作一个饼图来显示这些数据:

 var data = google.visualization.arrayToDataTable([
           ['Type', 'Amount'],
           ['Option1',   11],
           ['Option2',     6],
         ]);

我正在使用 Codeigniter 进行查询并创建一个数组,该数组像这样输入 JS:

    function drawChart(){
        var data = google.visualization.arrayToDataTable(<?php echo $type_array_json; ?>);

        var options = {
            title: 'Type',
            legend: {position: "bottom"},
        };

        var chart = new google.visualization.PieChart(document.getElementById('type_chart'));
        
        chart.draw(data, options);
    }

我正在查询这样的数据:

function get_chart_data($ID = '', $start_date = '', $end_date = '')
        {
            if (!empty($start_date) && !empty($end_date))
            {           
                $this->db->select("Option1 and Option2 as Type, COUNT(ID) as Amount", FALSE); // This line is the problem
                $this->db->from('TABLE');
                populate_where($this->db, 'ID', $ID, $ID);
                
                $this->db->group_by("DATALABEL");
                $this->db->order_by("DATASORT ASC");
                
                $query = $this->db->get();
                return $this->_create_report_array($query->result_array());
            }

Option1 和 Option2 都是记录中的字段,可以为 1 或 0,我需要比较 Option1=1 和 Option2=1 的总量。

如何使结果数组与示例数组相同,以便图形将在第一列中显示 2 个选项,在第二列中显示它们的值?

请帮我

您可以使用 model 仅从数据库中获取数据并将数据传递到 controller 进行格式化。

MODEL

public function option_model()
      {   
         $this->db->select('option, COUNT(*) as frequency');
         $this->db->group_by('label'); 
         $this->db->order_by('frequency', 'desc');
         $query = $this->db->get($this->tablename);
         return $query->result();    
      }

CONTROLLER

public function option_controller(){
        $result = $this->Database_model->option_model();
        $array = array();
        $cols = array();
        $rows = array();
        $cols[] = array("id"=>"","label"=>"Option1","pattern"=>"","type"=>"string");
        $cols[] = array("id"=>"","label"=>"Count","pattern"=>"","type"=>"number");  

        foreach ($result as $object) {
            $rows[] = array("c"=>array(array("v"=>(string)$object->label),array("v"=>(int)$object->frequency)));
          }
        $array = array("cols"=>$cols,"rows"=>$rows);
    
        return json_encode($array);
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM