【问题标题】:JSON Highcharts to draw multiple linesJSON Highcharts 绘制多条线
【发布时间】:2014-06-09 12:57:42
【问题描述】:

我完全迷失了 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]]}

我认为我的数组有问题,Gracias!

【问题讨论】:

    标签: javascript php mysql json highcharts


    【解决方案1】:

    你很亲密。我保留了与您的代码相似的代码,以便您可以看到细微的差异。

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

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

    【讨论】:

    • ....:( ...我无法投票赞成您的答案... ....我没有最低投票范围...抱歉
    • @xavi - 这不是问题 - 只要你得到你需要的结果。不过,您也许可以接受答案 - 如果您愿意,请尝试一下。
    • 好的!我已经看到“数据”每个“名称”只有一个值。要绘制Highcharts的线条需要字段“数据”包含具有相同“名称”的所有值......(如果我解释得太好了......)
    • 你得到的输出是什么?或者更确切地说,如果您将一些数据放入sqlfiddle.com,它可能会更容易帮助您。
    • 您好!您的解决方案完美运行......!我认为......我有一个设计问题和方法。返回结果是这样的:[{"data":[1398330000000,1],"name":[2]},{"data":[1398332700000,1],"name":[2]},{"data ":[1398331800000,1],"name":[16]},{"data":[1398332700000,1],"name":[16]}] 当我在 Mysql 中进行查询时,预期的响应是什么。但我需要在 Highcharts 中画线。具体是 2 行(1 行用于名称 2 名称,1 行用于 16)。非常感谢!
    【解决方案2】:

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

    【讨论】:

    • 感谢社区的合作。我会尝试修复它,看看它是否有效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-13
    • 2019-08-31
    • 2019-10-27
    • 2014-01-13
    • 2012-09-22
    • 1970-01-01
    相关资源
    最近更新 更多