2014-04-24 4 views
1

전적으로 Highcharts와 함께 분실했습니다!. 여러 줄의 그래프를 그려야합니다. 다음과 같은 JSON 출력이 필요합니다.JSON 하이 차트로 여러 줄을 그립니다.

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

...하지만 PHP 파일의 형식이 잘못된 JSON 응답이 표시됩니다. ¿ 어떤 이타적인 영혼이 그 길을 밝힐 수 있습니까? 대단히 감사드립니다. 미안 해요, 난 슈퍼 초보자 :(

내 BD 테이블 MySQL의 이니!

내가 게시물에 테이블 BD와 ​​이미지를 업로드 할수 없어, 미안 해요 ... 난 적어도 10 평판 필요 !. ..link ... http://i57.tinypic.com/2efj43n.jpg

자바 스크립트 코드 :

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 파일에서이받을 617,451,515,

...

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

는 내가 배열, 그라시아에 문제가있는 것 같아요!

답변

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

유의할 점은 테스트 할 수 없었지만 작동하지 않는 경우 알려 주시면 자세히 살펴 보겠습니다.

+0

.... (... 나는 답변을 투표 할 수 없습니다 ... ... 투표 할 수있는 범위가 없습니다 ... 죄송합니다. – xavi

+0

@xavi - 그게 문제가 아닙니다. 당신이 원하는 결과를 얻었 으면 오랫동안 대답을 받아 들일 수 있습니다. 당신이 원한다면 그것을 시도해보십시오. – Duniyadnd

+0

좋아요! "데이터"에는 각 "이름" Highcharts의 라인을 그릴 때 "data"필드에는 같은 "이름"을 가진 모든 값이 포함되어 있어야합니다 ... (너무 잘 설명하지 않으면 ...) – xavi

0

json_encode에서 JSON_NUMERIC_CHECK를 설정하는 데 도움이됩니다. 숫자는 문자열이 아닙니다.

+0

지역 사회의 협력에 감사드립니다. 나는 그것이 효과가 있는지보기 위해 그것을 고치려고 노력할 것이다. – xavi

관련 문제