2013-07-02 40 views
0

我試圖格式化和通過AJAX用PHP加載多個系列數據按本example:highcharts變換JSON數據與Date.UTC

以下PHP代碼,

<?php 
$connection = pg_connect("host=localhost port=5432 dbname=pccs user=michael     password=huskies1975") or die(" " . pg_last_error($connection)); 

$chart1 = pg_query($connection, "SELECT sample_date, a FROM monitor_nutrient WHERE station_num_id = 201 ORDER BY sample_date ASC LIMIT 5"); 
$row_a = array(); 
$row_a['name'] = 'Temperature'; 
while ($ra = pg_fetch_array($chart1)) { 
    $date = str_replace("-",",",$ra['sample_date']); 
    $row_a['data'][] = array($date, $ra['a']); 
} 

$chart1 = pg_query($connection, "SELECT sample_date, b FROM monitor_nutrient WHERE  station_num_id = 201 ORDER BY sample_date ASC LIMIT 5"); 
$row_b = array(); 
$row_b['name'] = 'Salinity'; 
while ($rb = pg_fetch_array($chart1)) { 
    $date = str_replace("-",",",$rb['sample_date']); 
    $row_b['data'][] = array($date, $rb['b']); 
} 

$chart1 = pg_query($connection, "SELECT sample_date, c FROM monitor_nutrient WHERE station_num_id = 201 ORDER BY sample_date ASC LIMIT 5"); 
$row_c = array(); 
$row_c['name'] = 'Dissolved Oxygen'; 
while ($rc = pg_fetch_array($chart1)) { 
    $date = str_replace("-",",",$rc['sample_date']); 
    $row_c['data'][] = array($date, $rc['c']); 
} 

$result = array(); 
array_push($result, $row_a); 
array_push($result, $row_b); 
array_push($result, $row_c); 

echo(json_encode($result, JSON_NUMERIC_CHECK)); 
//print json_encode($result, JSON_NUMERIC_CHECK); 

pg_close($connection); 
?> 

產生這有效( JsonLint)輸出中:

[ 
    { 
     "name": "Temperature", 
     "data": [ 
      [ 
       "2012,06,12", 
       20.38 
      ], 
      [ 
       "2012,06,21", 
       24.62 
      ], 
      [ 
       "2012,07,03", 
       25.96 
      ], 
      [ 
       "2012,07,20", 
       24.92 
      ], 
      [ 
       "2012,08,03", 
       25.56 
      ] 
     ] 
    }, 
    { 
     "name": "Salinity", 
     "data": [ 
      [ 
       "2012,06,12", 
       31.49 
      ], 
      [ 
       "2012,06,21", 
       31.47 
      ], 
      [ 
       "2012,07,03", 
       31.11 
      ], 
      [ 
       "2012,07,20", 
       30.75 
      ], 
      [ 
       "2012,08,03", 
       30.94 
      ] 
     ] 
    }, 
    { 
     "name": "Dissolved Oxygen", 
     "data": [ 
      [ 
       "2012,06,12", 
       5.53 
      ], 
      [ 
       "2012,06,21", 
       7.07 
      ], 
      [ 
       "2012,07,03", 
       5.3 
      ], 
      [ 
       "2012,07,20", 
       3.49 
      ], 
      [ 
       "2012,08,03", 
       6.67 
      ] 
     ] 
    } 
] 

首先,這是一個Highcharts系列格式正確,第二,如何以及在哪裏我的日期轉換爲Date.UTC()之類的例子,的javascrip T/PHP?最後是下面的代碼甚至接近我想要的。

function chartParser(data) { 

     $.each(data, function (key, value) { 
      var series = {name: key, data: []}; 

      $.each(value, function (key, val) { 
       if (key == 'name') { 
        series.name = val; 
       } 
       else { 
        $.each(val, function (key, val) { 
         options.series.push([val[0], val[1]]); 

        }); 
       } 

      }); 
      var chart1 = new Highcharts.Chart(options); 
     }); 

    } 

任何幫助和示例將不勝感激。我一直在這裏折磨自己幾個星期。

回答

3

你可以做到這一點在客戶端,這樣說:

$.each(val, function (key, val) { 
    options.series.push([new Date(val[0]).getTime(), val[1]]); 
}); 
+0

不錯,非常感謝你。我每一步都遇到困難,每一點都有所幫助。 – geomajor56

+0

因此它可以解決您的問題? :) –

+0

是的,謝謝。現在到下一個問題。 – geomajor56