我使用一些代码可以很好地生成一个带有来自mysql表中数据的谨慎x轴的谷歌折线图。但是当我将列类型更改为" date"为了使x轴连续,我只是不断收到错误:
a.getTime不是函数
这是从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类型是&#34; date&#34;则仍然会得到相同的错误。任何帮助将不胜感激。
修改: 仍然有这个问题。我无法理解它。以下是我现在得到的数组输出。希望这有助于指出我出错的地方。
编辑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}]}]}
答案 0 :(得分: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>
答案 1 :(得分: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;
?>