2013-06-21 3 views
0

Я создал запрос MySQL, который выводит два набора цифр для «Посещения» и посетителей»Highstock - две серии данных из MySQL Query

<?php 
$con = mysql_connect("localhost","name","pass"); 

if (!$con) { 
die('Could not connect: ' . mysql_error()); 
} 

mysql_select_db("fandang_gvmaster", $con); 

$sth = mysql_query("SELECT Unixdate, visits FROM WebWeekly where (`Unixdate` >   
1299456000000) and (`Unixdate` < 1000 * UNIX_TIMESTAMP(NOW()));"); 
$rows = array(); 
$rows['name'] = 'Visits'; 
while($r = mysql_fetch_array($sth)) { 
$rows['data'][] = $r['visits']; 
} 

$sth = mysql_query("SELECT Unixdate, visitors FROM WebWeekly where (`Unixdate` >  
1299456000000) and (`Unixdate` < 1000 * UNIX_TIMESTAMP(NOW()));"); 
$rows1 = array(); 
$rows1['name'] = 'Visitors'; 
while($rr = mysql_fetch_assoc($sth)) { 
$rows1['data'][] = $rr['visitors']; 
} 

$result = array(); 
array_push($result,$rows); 
array_push($result,$rows1); 

print json_encode($result, JSON_NUMERIC_CHECK); 

mysql_close($con); 
?> 

Это дает мне следующий вывод:

[{ "имя": "Визиты", "данные": [293319287]}
{ "имя": "посетители", "данные": [157167157]}]

Я потом установить высокий уровень к графику, чтобы прочитать данные:

$(function() { 
var seriesOptions = [], 
    yAxisOptions = [], 
    seriesCounter = 0, 
    names = ['Visits', 'Visitors'], 
    colors = Highcharts.getOptions().colors; 

$.each(names, function(i, name) { 

    $.getJSON('calc_tables/Allyears_calc.php', function(data) { 

     seriesOptions[i] = { 
      name: name, 
      data: data 
     }; 

     // As we're loading the data asynchronously, we don't know what order it will arrive. So 
     // we keep a counter and create the chart when all the data is loaded. 
     seriesCounter++; 

     if (seriesCounter == names.length) { 
      createChart(); 
     } 
    }); 
}); 



// create the chart when all data is loaded 
function createChart() { 

    $('#graphcontainerslide').highcharts('StockChart', { 
     chart: { 
     }, 

     rangeSelector: { 
      selected: 4 
     }, 

     yAxis: { 
      labels: { 
       formatter: function() { 
        return (this.value > 0 ? '+' : '') + this.value + '%'; 
       } 
      }, 
      plotLines: [{ 
       value: 0, 
       width: 2, 
       color: 'silver' 
      }] 
     }, 

     plotOptions: { 
      series: { 
       compare: 'percent' 
      } 
     }, 

     tooltip: { 
      pointFormat: '<span style="color:{series.color}">{series.name}</span>: <b>{point.y}</b> ({point.change}%)<br/>', 
      valueDecimals: 2 
     }, 

     series: seriesOptions 
    }); 
} 

}); 

Я действительно обучения, как я иду вперед, но я не могу получить эту работу - я знаю, что я кормлю информацию в неправильно. Может кто-нибудь дать мне указатель, пожалуйста?

ответ

0

Это неверно, потому что в ваших данных вы получаете структуру серии (это понятно), а не данные. Но вы запускаете

seriesOptions[i] = { 
     name: name, 
     data: data 
    }; 

так что вы пытаетесь установить структуру серии на объект, который вы определили. В результате вы достигаете:

 seriesOptions[i] = { 
      name: name, 
      data: [{"name":"Visits","data":[293,319,287]}, 
{"name":"Visitors","data":[157,167,157]}] 
     }; 

Попробуйте использовать данные в объекте серии как:

series: data 
Смежные вопросы