Highcharts and JSON problems


Highcharts and JSON problems

我正在制作一个时间轴图,我对所需的数据有问题-对数据库的查询结果没有出现双引号(")。他们留下了我如何获得结果的示例

[{"name":"Tv Cable","data":["[13709250000000100]"]},{"name":"电视卫星","data":["[1365646000100]","[136805800000200]"[137032000001500]","[13707250000500]","[13792500000560]","[1370925000,50]","[33709250000500]",,"[137925000000800]",,{"名称":"电视互联网","数据":["[1371097800000500]"]},{

我需要它跟随

{"名称":"电视有线","数据":[[137092500000100]]},{"姓名":"Tv Satelital","资料":[[1365654600000100],[136805800000200],[337032000001500],[13709250000500],[13792500000560],[137092500000,50],[13702500000500],[33792500000800],[11370925000000500]500]]},{"name":"Tv Telefonia"}]

我一直在努力解决它,但我没有做到?

我让我的图形代码看看我做什么

sql.php

<?php
$fecha = date("d-m-Y"); // fecha actual 
$ano = date("Y"); // A単o actual 
$mes = date("m"); // Mes actual 
$dia = date("d"); // Dia actual  
$mes_inicio= $mes-2;
$con = mysql_connect("localhost","xyolcarx_inter","xYolcar19572059");
if (!$con) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db("xyolcarx_inter", $con);
$rows = array();
for ($i=1;$i<=4;$i++){
$sth = mysql_query("SELECT monto,(unix_timestamp(fecha)*1000) FROM ventas WHERE codigo_ser = '".$i."' ORDER BY fecha ASC ");
$sth2 = mysql_query("SELECT * FROM servicio WHERE codigo_ser= '".$i."'");
while($r2 = mysql_fetch_array($sth2)) {
$rows[$i]['name'] = $r2['servicio'];
}
while($r = mysql_fetch_array($sth)) {
$rows[$i]['data'][] = '['.$r['(unix_timestamp(fecha)*1000)'].','.$r['monto'].']';
}
}
$result = array();
for ($i=1;$i<=4;$i++){  
array_push($result,$rows[$i]);
}
print json_encode($result, JSON_NUMERIC_CHECK);
mysql_close($con);
?>

index.php

<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title> - jsFiddle demo</title>
  <script type='text/javascript' src='https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js'></script>
<link rel="stylesheet" type="text/css" href="/css/result-light.css">
  <style type='text/css'>
  </style>

<script type='text/javascript'>//<![CDATA[ 
$(function() {
    $.getJSON('sql.php', function(data) {
        // Create the chart
        window.chart = new Highcharts.StockChart({
            chart : {
                renderTo : 'container'
            },
            rangeSelector : {
                selected : 1
            },
            title : {
                text : 'AAPL Stock Price'
            },
            series : data
        });
    });
});
//]]>  
</script>

</head>
<body>
  <script src="http://code.highcharts.com/stock/highstock.js"></script>
<script src="http://code.highcharts.com/stock/modules/exporting.js"></script>
<div id="container" style="height: 500px; min-width: 500px"></div>
</body>

</html>

此行

$rows[$i]['data'][] = '['.$r['(unix_timestamp(fecha)*1000)'].','.$r['monto'].']';

应该看起来像这个

$rows[$i]['data'][] = array($r['(unix_timestamp(fecha)*1000)'],$r['monto']);

不要自己构建json。只需构建数组结构,让json_encode为您完成其余的工作。


编辑更多建议:

更改此项:

SELECT monto,(unix_timestamp(fecha)*1000) FROM ventas...

到此:

SELECT monto, (unix_timestamp(fecha)*1000) AS fecha_timestamp FROM ventas...

因此您可以在php:中更轻松地访问它

$rows[$i]['data'][] = array($r['fecha_timestamp'],$r['monto']);

编辑更多建议:

Mysql有时会遇到unix_timestamp(fecha)*1000的性能问题,因为它必须将它认为的32位int转换为64位int,这很糟糕。在php中执行此操作。

更改此项:

SELECT monto, (unix_timestamp(fecha)*1000) AS fecha_timestamp FROM ventas...

到此:

SELECT monto, unix_timestamp(fecha) AS fecha_timestamp FROM ventas...

因此您可以在php:中完成工作

$rows[$i]['data'][] = array($r['fecha_timestamp']*1000,$r['monto']);