Javascript JSON Highcharts可绘制多条线

Javascript JSON Highcharts可绘制多条线,javascript,php,mysql,json,highcharts,Javascript,Php,Mysql,Json,Highcharts,我完全迷上了海图!。我必须画一幅有多条线的图。我需要这样的JSON输出: [{ "name": "2", "data": [1398333600000,1],[1398333600000,1],.... }, { "name": "16", "data": [1398333600000,1],[1398333600000,1]... }, { .... .... } ] …但是,我从PHP文件中只得到一个格

我完全迷上了海图!。我必须画一幅有多条线的图。我需要这样的JSON输出:

[{
    "name": "2",
    "data": 
    [1398333600000,1],[1398333600000,1],....
  },
  {
    "name": "16",
    "data": 
    [1398333600000,1],[1398333600000,1]...
  },
  {
    ....
    ....
  }
]
…但是,我从PHP文件中只得到一个格式错误的JSON响应。一些利他主义的灵魂能开导道路吗?事先非常感谢。对不起,我是个超级新手:(

我的BD表Mysql:

对不起,我不能上传带有表BD的图片,我需要至少10个声誉! 链接

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]]}

我想我的数组有问题,格雷西亚斯!

你很接近。我保留了与你类似的代码,以便你能看到细微的差异

$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);

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

在您的json编码中,我建议设置json数字检查,那么数字将不是字符串。

…:(…我不能投票支持你的答案…我没有投票的最小范围。。。sorry@xavi-这不是问题-只要你得到了你需要的结果。你也许可以接受答案-如果你愿意,试试看。好的!我已经看到“数据”中每个“名称”只有一个值。要绘制高图线,需要字段“数据”包含所有值​​使用相同的“名称”…(如果我解释得太好就不会了…)您得到的输出是什么?或者更确切地说,如果您将一些数据放入其中,可能会更容易帮助您。您好!您的解决方案非常有效…!我想…我有一个设计问题和方法。返回结果是:[{“数据”:[1398330000000,1],“名称”:[2]},{“数据”:[1398332700000,1],“名称”:[2]},{“数据”:[1398331800000,1],“名称”:[16]},{“数据”:[1398332700000,1],“名称”:[16]}]在Mysql中执行查询时,预期的响应是什么。但我需要在Highcharts中绘制线条。具体来说,有两行(一行代表名称2,一行代表16).非常感谢!我非常感谢社区的合作。我会设法修复它,看看它是否有效。