2013-04-21 3 views
0

У меня проблема с моим HighStock, мне нужна еще одна серия от JSON.Несколько серий от JSON Highstock

Мой код в get_json.php

include('config.php'); 

$cp = $_REQUEST["c_prot"]; 

$r=("SELECT * FROM data WHERE cp='$cp'"); 
$result=mysql_query($r); 

while($row = mysql_fetch_array($result)){ 
    $date= strtotime($row['cas'])*1000; // timestamp 
    $values=hexdec($row['data']);  // series1 
    $val=hexdec($row['src']);   // series2 

    $array[]=array($date, $values,$val); //output array 
} 
echo json_encode($array); 

вывода JSON в правильном формате: [1364852734000, 557, 2884], .... Но проблема в том, что я не нашел, как добавить вторую серию из JSON в Highstock код

Я хотел бы, чтобы отобразить на диаграмме оси х: TIMESTAMP ось у: series1-> данные series2-> ЦСИ

диаграмма теперь отображается только на оси х метки времени и данных по оси Y ... но Series2 не работает:/

High Код складе:

<script> 
$(function() { 
    $.getJSON('http://localhost/vojto/get_json.php?c_prot=<?=$_REQUEST[' 
    c_prot '];?>', function (data) { 

     // Create the chart 
     $('#container').highcharts('StockChart', { 

      chart: { //zooming 
       zoomType: 'x', 
       height: 400, 
      }, 

      legend: { //legenda 
       enabled: true, 
       align: 'left', 
       backgroundColor: '#FCFFC5', 
       borderColor: 'black', 
       borderWidth: 1, 
       layout: 'vertical', 
       verticalAlign: 'top', 
       y: 100, 
       shadow: true 
      }, 

      rangeSelector: { //range selector 
       buttonTheme: { 
        width: 40, 

       }, 

       buttonSpacing: 3, //mezera mezi buttony 
       enabled: true, 

       buttons: [{ 
        type: 'minute', 
        count: 60, 
        text: 'Hour' 
       }, { 
        type: 'day', 
        count: 1, 
        text: 'Day' 
       }, { 
        type: 'week', 
        count: 1, 
        text: 'Week' 
       }, { 
        type: 'all', 
        text: 'Reset' 
       }] 
      }, 

      title: { //title grafu 
       text: 'Chart' 
      }, 

      series: [{ //serie 
       name: 'Data', 
       data: data, 
       color: '#57c72f', 
       marker: { 
        enabled: true, 
        radius: 3 
       }, 
       shadow: true, 
       tooltip: { 
        valueDecimals: 2 
       } 
      }], 

      xAxis: { // X-osa 
       type: 'datetime', 
       title: { 
        text: 'Date/time axis', 
       }, 
       minRange: 600000, 

      }, 
      yAxis: { 
       min: 0, 
      }, 
      navigator: { 
       series: { 
        color: '#57c72f', 
        fillOpacity: 0.3, 
       } 
      }, 
      credits: { 
       enabled: false 
      }, 

      tooltip: { // formátování hodnot po najetí kurzoru... hover 
       formatter: function() { 
        var s = '<b>' + Highcharts.dateFormat('DateTime ' + '%d-%m-%y ' + '%H:%M:%S', this.x) + '</b>'; 

        $.each(this.points, function (i, point) { 
         s += '<br/>Data value : ' + point.y; 
        }); 

        /* formát 23-04-13 09:34:27 */ 
        return s; 
       } 
      }, 
     }); 
    }); 
}); 
</script> 

ответ

0

В вас сценарий:

$array = []; 
while($row = mysql_fetch_array($result)){ 
    $date= strtotime($row['cas'])*1000; // timestamp 
    $values=hexdec($row['data']);  // series1 
    $val=hexdec($row['src']);   // series2 

    $array[0][]=array($date, $values); //output array 
    $array[1][]=array($date ,$val); 
} 

Вам нужно вставить значения в соответствующий индекс серии. Другими словами, вы можете подготовить свой массив $ array() и добавить точку к одной из серий. Честно говоря, у меня нет данных, так что это только концепция.

+0

Спасибо, я изменил свой код, но теперь не отображается диаграмма, я думаю, что проблема в ** echo json_encode ($ array); ** Выход JSON по-прежнему в том же формате: [1364852734000,2884], .. .. и как определить новую серию в код higstock, пожалуйста? – forgatn

+0

После цикла вы можете использовать print_f ($ array) и вставить здесь? Я предлагаю ограничить ваши строки до i.e 5, чтобы проверить только структуру массива –

+0

Я отредактировал код и добавлю print(); но он показывает мне ошибку:/ – forgatn

Смежные вопросы