0

我试图通过 php 从我的 SQL 服务器获取数据,并将其输出为 JSON,因此我可以将其用于 HighCharts。到目前为止,如果有意义的话,我可以将我的结果发布为不同的系列。

SQL/PHP:

$params = array(&$_POST['query']);

$tsql1 = "SELECT TOP 10 Company_Names, Revenue_Value1, Revenue_Value2

FROM Database.test report
GROUP BY Company_Name 
ORDER BY Revenue_Value1

$options = array("Scrollable" => SQLSRV_CURSOR_KEYSET);

$getProducts = sqlsrv_query($conn, $tsql1, $params, $options);

if ($getProducts === false)

die( FormatErrors( sqlsrv_errors() ) );



while( $row = sqlsrv_fetch_array( $getProducts, SQLSRV_FETCH_ASSOC) ) 
{
    $rows[] = $row;
}

echo json_encode($rows, JSON_NUMERIC_CHECK); 

sqlsrv_free_stmt( $getProducts );?>

sql打印出这样的东西

http://i.imgur.com/ww0kasV.png

并打印此图表:

http://i.imgur.com/rh8ICVH.png

显然,这不是我希望它输出的方式..

我希望它将 xAxis 输出为 Quarters,yAxis 输出为 Revenue_Value1,Series-name 输出为 Company_Name。

我目前正在使用它来获取我的 php 数据。

<script type="text/javascript">
$(function () {
    var chart;
    $(document).ready(function() {
        $.getJSON("data.php", function(json) {

            chart = new Highcharts.Chart({
                chart: {
                    renderTo: 'container',
                    type: 'line',
                    marginRight: 130,
                    marginBottom: 25
                },
                title: {
                    text: 'Revenue',
                    x: -20 //center
                },
                subtitle: {
                    text: '',
                    x: -20
                },
                xAxis: {
                    categories: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'],
                    title: { text: 'Months'}
                },
                yAxis: {
                    title: {
                        text: 'Revenue'
                    },
                    plotLines: [{
                        value: 0,
                        width: 1,
                        color: '#808080'
                    }]
                },
                tooltip: {
                    formatter: function() {
                            return '<b>'+ this.series.name +'</b><br/>'+
                            this.x +': '+ this.y;
                    }
                },
                legend: {
                    layout: 'vertical',
                    align: 'right',
                    verticalAlign: 'top',
                    x: -10,
                    y: 100,
                    borderWidth: 0
                },
                series: json
            });
        });

    });

});
        </script>

data.php 回显:

{"Company_Names":"Company_Name","Revenue_Value1":45443,"Revenue_Value2":4654}

当然,由于一些规则,我不得不改变一些价值观。我希望你仍然可以看到我想要实现的目标。

编辑:

    $arr = array();

while( $row = sqlsrv_fetch_array( $getProducts, SQLSRV_FETCH_ASSOC) ) 
{
    $name = $row['Distributor'];
    $data = array($row['Value']);

    $arr[] = array('name' => $name, 'data' => $data);
}

echo json_encode($arr, JSON_NUMERIC_CHECK);

这使我的数据以 HighCharts 可以读取的方式显示

4

1 回答 1

0

你的系列应该在一个数组中尝试一些 varj =[]; j.push(json);然后做series: j

于 2013-02-18T19:24:30.497 回答