2016-02-01 269 views
2

我使用了一些代码,可以很好地用mysql表格中的数据生成具有谨慎x轴的谷歌折线图。但是,当我改变列的类型为“日期”,使x轴连续我只是不断收到错误:谷歌图表连续的x轴从php阵列

a.getTime is not a function

这里是生产从MySQL阵列的代码。

<?php 
include("connect.php"); 
$qry = " mysql query here"; 
$result = mysqli_query($con,$qry); 
mysqli_close($con); 

$table = array(); 
$table['cols'] = array(

array('id' => '', 'label' => 'Date', 'type' => 'date'), 
array('id' => '', 'label' => 'Amount ', 'type' => 'number'), 
); 
$rows = array(); 
foreach($result as $row){ 
$temp = array(); 

$date1 = date_create_from_format('Y-m-d H:i:s', $row['Date']); 
$date2 = date_format($date1, 'd-m-Y'); 
$temp[] = array('v' => (string) $date2); 
$temp[] = array('v' => (float) $row['Amount']); 
$rows[] = array('c' => $temp); 
} 

$result->free(); 
$table['rows'] = $rows; 
$jsonTable = json_encode($table, true); 
echo $jsonTable; 
?> 

我用尽各种事情,如日期格式等,但仍然得到同样的错误,如果cloumn 1类型是“日期”。任何帮助,将不胜感激。

编辑: 仍然有这个问题。我无法绕过它。以下是即时获取的数组输出。希望这有助于指出即将出错的地方。

编辑2:我现在有数组出现如下,但仍然有相同的a.getTime错误。

{"cols":[ 
{"label":"Reading Date","type":"date"}, 
{"label":"Cl Reading(mg\/l) ","type":"number"}, 
"rows":[ 
{"c":[{"v":"new Date(04\/10\/2015)"},{"v":0.4}]}, 
{"c":[{"v":"new Date(04\/11\/2015)"},{"v":0.45}]}, 
{"c":[{"v":"new Date(04\/12\/2015)"},{"v":0.9}]}, 
{"c":[{"v":"new Date(04\/01\/2016)"},{"v":0.5}]}, 
{"c":[{"v":"new Date(04\/02\/2016)"},{"v":0.43}]}, 
{"c":[{"v":"new Date(18\/02\/2016)"},{"v":0.6}]}]} 

回答

2

错误被抛出,因为在第一列中的值需要实际date值。

尝试更换...

{"c":[{"v":"04-10-2015"},{"v":0.4}]}

与...

{"c":[{"v":new Date("10/04/2015")},{"v":0.4}]}

使用...

$date1 = date_create_from_format('Y-m-d H:i:s', $row['Date']); 
$date2 = "new Date(\"".date("m",$date1)."/".date("d",$date1)."/".date("Y",$date1)."\")"; 
$temp[] = array('v' => (string) $date2); 

google.charts.load('current', { 
 
    packages: ['corechart'], 
 
    callback: drawChart 
 
}); 
 

 
function drawChart() { 
 
    var json = { 
 
    "cols":[ 
 
     {"label":"Reading Date","type":"date"}, 
 
     {"label":"Cl Reading(mg\/l) ","type":"number"} 
 
    ], 
 
    "rows":[ 
 
     {"c":[{"v":new Date("10/04/2015")},{"v":0.4}]}, 
 
     {"c":[{"v":new Date("11/04/2015")},{"v":0.45}]}, 
 
     {"c":[{"v":new Date("12/04/2015")},{"v":0.9}]}, 
 
     {"c":[{"v":new Date("01/04/2016")},{"v":0.5}]}, 
 
     {"c":[{"v":new Date("02/04/2016")},{"v":0.43}]}, 
 
     {"c":[{"v":new Date("02/18/2016")},{"v":0.6}]} 
 
    ] 
 
    } 
 

 
    var data = new google.visualization.DataTable(json); 
 

 
    var chart = new google.visualization.LineChart(document.getElementById('chart_div')); 
 
    chart.draw(data, {}); 
 
}
<script src="https://www.gstatic.com/charts/loader.js"></script> 
 
<div id="chart_div"></div>

+0

嗨感谢您的答复,仍然有麻烦。我编辑了我的原始问题,以显示从上述代码中获得的数组。 – user3726827

+0

看到编辑,如果这没有帮助,我会尝试得到一个示例运行... – WhiteHat

+0

谢谢,但仍然得到相同的错误。我已经更新了阵列输出,如上所述。 – user3726827

0

感谢所有帮助的WhiteHat,这里是工作的解决方案:

<?php 

include("connect.php"); 
$qry = " mysql query here"; 
$result = mysqli_query($con,$qry); 
mysqli_close($con); 


    $table = array(
    'cols' => array(
     array('id' => '', 'label' => 'Date', 'type' => 'date'), 
     array('id' => '', 'label' => 'Amount ', 'type' => 'number'), 

    ), 
    'rows' => array(), 
); 
foreach($result as $row){ 
    $date1 = date_create_from_format('Y-m-d H:i:s', $row['Date']); 
    $date2 = date_format($date1, 'Y, m, d'); 
    $table['rows'][] = array(
     'c' => array(
      array('v' => 'Date('.$date2.')'), 
      array('v' => (float) $row['Amount']) 
     ) 
    ); 
} 

$result->free(); 
$jsonTable = json_encode($table, true); 
echo $jsonTable; 

    ?>