首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cakephp to Google Chart

Cakephp to Google Chart
EN

Stack Overflow用户
提问于 2012-07-16 09:25:51
回答 1查看 1.8K关注 0票数 1

在控制器中,我创建了要绘制图表的数组

代码语言:javascript
复制
function chart() {  
    $results = $this->Visit->query(
        "SELECT date(visits.created) as visit_date, 
            Count(visits.id) AS count_visits
            FROM visits
            GROUP BY date(visits.created)"
    );

    foreach($results AS $result) {
        $row = array(
            $result[0]['visit_date'],
            $result[0]['count_visits']          
        );
        $chartData[] = json_encode($row);
    }

    pr($chartData);

}

pr($chartData)提供以下数组

代码语言:javascript
复制
Array
 (
    [0] => ["2012-07-11","5"]
    [1] => ["2012-07-13","1"]
    [2] => ["2012-07-14","1"]
)

在图表视图中,我有

代码语言:javascript
复制
google.load('visualization', '1.0', {'packages':['corechart']});

google.setOnLoadCallback(drawChart);

function drawChart() {
    // Create the data table.

    var data = google.visualization.arrayToDataTable($chartData);

    var options = {
      title: 'Visits by Date',
      hAxis: {title: 'Date', titleTextStyle: {color: 'black'}}
    };

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

但这并不能给我一个图表..无错误...只是没有图表..

如果我手动输入一个数组来测试我的视图,它工作得很好……例如,如果我替换..

代码语言:javascript
复制
var data = google.visualization.arrayToDataTable($chartData);

使用Google Chart示例中的以下格式,它会生成一个很好的柱状图

代码语言:javascript
复制
    var data = google.visualization.arrayToDataTable([
              ['Date',  'Count'],  
      ['2012-07-11',  5],
      ['2012-07-13',  1],
      ['2012-07-14',  1]
    ]);

有几个问题:-我如何在var数据数组中获得标题?-数组中的双引号或单引号有区别吗?-我是否正确地将数组$chartData从php传递到Google chart javascript?- Google示例在数组周围有'[]‘,我如何也在我的数组周围获得这些标题?

(顺便说一下,我知道所有关于cakephp的Find(全部),但我只是迷失在如何获得我想要的东西的文档中,sql要简单得多)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-07 18:12:18

您在控制器中使用的是json_encode,但在视图中使用的是-

代码语言:javascript
复制
google.visualization.arrayToDataTable($chartData);

json_encode创建json对象,而不是javascript数组。

在控制器函数图()中使用json_encode尝试:

代码语言:javascript
复制
$chartData['cols'] = array(
    array('id' => 'visit_date', 'label' => 'Visit date', 'type' => 'date'),
    array('id' => 'count_visits', 'label' => 'Count', 'type' => 'number')
);
foreach($results AS $result) {
    $time = strtotime($result[0]['visit_date']);
    $dateJs = 'Date('.date("Y", $time).', '.(date('n', $time) - 1).', '.date('j', $time).')';
    $row = array(
        'c' => array(
            array('v' => $dateJs),
            array('v' => $result[0]['count_visits']),
         )
    );
    $chartData['rows'][] = $row;
}
//make the data available for view
$this->set('chartData', json_encode($chartData);

在您的视图中使用:

代码语言:javascript
复制
var data = new google.visualization.DataTable($chartData);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11497114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档