JSON Highcharts绘制多条线

时间:2014-04-24 09:53:52

标签: javascript php mysql json highcharts

我完全迷失了Highcharts!我必须绘制一条包含多行的图表。我需要一个像这样的JSON输出:

[{
    "name": "2",
    "data": 
    [1398333600000,1],[1398333600000,1],....
  },
  {
    "name": "16",
    "data": 
    [1398333600000,1],[1398333600000,1]...
  },
  {
    ....
    ....
  }
]

...但是,我只从PHP文件中得到格式错误的JSON响应。 ¿有些利他主义的灵魂可以启发的方式?非常感谢你提前。对不起,我是超级新手:(

我的BD表Mysql:

我无法上传带有表格BD的图片,对不起! ...我需要至少10个声望! ...链接... http://i57.tinypic.com/2efj43n.jpg

javascript代码:

chart = new Highcharts.Chart({
                chart: {
                    renderTo: 'divStatsGrupo',
                    plotBackgroundColor: null,
                    plotBorderWidth: null,
                    plotShadow: false
                },
                title: {
                    text: titulo
                },
                tooltip: {
                enabled: false,        
                },
                xAxis: {    
                type: 'datetime',
                dateTimeLabelFormats : {
                hour: '%H:%M',
                labels: {
                     style: {
                     width: '200px','min-width': '100px'
                        },
                    useHTML : true
                }
                }   
                },

                yAxis: {
                categories: [ 'APAGADO', 'ACTIVO', 'ALARMA'],   
                title: {
                text: 'ESTADO'
                },
                min: 0
                },
               series : [{
                showInLegend: true,
                name : data.name,
                type : 'line',
                data: data.data 
                        }]
        });
});

PHP代码:

require_once('Connections/conexion.php'); 
$sesionUser = $_SESSION['MM_Username'];
$sesionIdGrupo = $_GET['idGrupo'];
$sesionFechaActual = $_GET['fechaActual'];
///ARREGLO FECHA RECIBIDA PARA ADAPTARLA A FORMATO DE LA BD YY-MM-DD
$sesionFechaActualArreglo = date_format(new DateTime($sesionFechaActual),"Y-m-d");

mysql_select_db($database_conexion, $conexion); 
$query_RecordsetTabla = "SELECT * FROM registros WHERE idUsuario = (SELECT idUsuario FROM usuarios WHERE userName = '$sesionUser') AND idGrupo = '$sesionIdGrupo' AND fecha = '$sesionFechaActualArreglo'";
$RecordsetTabla = mysql_query($query_RecordsetTabla, $conexion) or die(mysql_error());
$totalRows_RecordsetTabla = mysql_num_rows($RecordsetTabla); 

$arr = array();
while ($row_RecordsetTabla = mysql_fetch_assoc($RecordsetTabla))
{
$idDispositivo = $row_RecordsetTabla['idDispositivo'];
$fecha = $row_RecordsetTabla['fecha'];
$hora = $row_RecordsetTabla['hora'];
$estado = $row_RecordsetTabla['estado']; 
$arregloFecha = date_format(new DateTime($fecha),"Y-m-d");
$arregloHora = date_format(new DateTime($hora),"H:i");
$arregloHora2 = strtotime($arregloHora) * 1000;
$arr[] = array($arregloHora2, floatval($estado));
$arrDisp[] = array(floatval($idDispositivo));
}
$arr2 = array('data' => $arr, 'name' => $arrDisp);
echo json_encode($arr2);
mysql_free_result($RecordsetTabla);

我从PHP文件中收到了这个......

{"data":[[1398330000000,1],[1398332700000,1],[1398331800000,1],[1398332700000,1]],"name":[[2],[2],[16],[16]]}

我认为阵列有问题,格拉西亚斯!

2 个答案:

答案 0 :(得分:0)

你非常接近。我保持代码与你的代码类似,所以你可以看到细微的差别。

$items = array();
while ($row_RecordsetTabla = mysql_fetch_assoc($RecordsetTabla))
{
$idDispositivo = $row_RecordsetTabla['idDispositivo'];
$fecha = $row_RecordsetTabla['fecha'];
$hora = $row_RecordsetTabla['hora'];
$estado = $row_RecordsetTabla['estado']; 
$arregloFecha = date_format(new DateTime($fecha),"Y-m-d");
$arregloHora = date_format(new DateTime($hora),"H:i");
$arregloHora2 = strtotime($arregloHora) * 1000;
// changed $arr and $arrDisp to scalar
$arr = array($arregloHora2, floatval($estado));
$arrDisp = array(floatval($idDispositivo));
// name and data should be put as part of a single array
$items[]  = array ( 'data' => $arr , 'name' => $arrDisp );
}
// $arr2 = array('data' => $arr, 'name' => $arrDisp);
echo json_encode($items);
mysql_free_result($RecordsetTabla);

请注意我无法测试它,但如果它不起作用,请告诉我,我会进一步研究它。

答案 1 :(得分:0)

在你的json_encode中,我建议设置JSON_NUMERIC_CHECK,然后数字将不是字符串。