MSSQL/PHP通过JSON转换为HighChart


MSSQL/PHP to HighChart via JSON

我试图通过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打印出类似于的内容

https://i.stack.imgur.com/cNS3q.png

并打印此图表:

https://i.stack.imgur.com/7kdaf.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读取

您的系列应该在一个数组中,尝试var j =[]; j.push(json);,然后执行series: j