MS SQL Сервер в PHP Массив в JSON Кодирование в Highcharts - PullRequest
0 голосов
/ 25 января 2020

У меня есть очень простые данные, которые пришли с моего сервера MS SQL в JSON_Encode.

Вот мой код PHP (находится в myPHPFile. php):

<?php
$serverName = "MyServer";
$connectionInfo = array( "Database"=>"MyDatabase", "UID"=>"MyUID", "PWD"=>"MyPWD");
$conn = sqlsrv_connect( $serverName, $connectionInfo);


$tsql = "SELECT * FROM [MyDatabase].[dbo].[MyView] ORDER BY Year";  

$stmt = sqlsrv_query( $conn, $tsql); 

$rows = array();
while($r = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
    $res[] = $r;
}

print json_encode($res, JSON_NUMERIC_CHECK);

sqlsrv_free_stmt( $stmt);  
sqlsrv_close( $conn);  
?> 

Это дает мне следующий отпечаток:

[{"Year":2016,"Number":41},{"Year":2017,"Number":512},{"Year":2018,"Number":1895},{"Year":2019,"Number":3132}] 

Отлично. Там есть данные.

Я перепробовал каждый учебник, каждое сообщение на форуме о высоких чартах и ​​каждый вопрос о стековом потоке, чтобы получить эти простые данные из моего php файла в формате JSON в диаграмму высоких диаграмм. Возможно, я упускаю что-то очевидное.

Итак, давайте посмотрим на мой HTML файл:

В голове:

<script src="https://code.highcharts.com/highcharts.js"></script>
<script src="https://code.highcharts.com/modules/exporting.js"></script>
<script type="text/javascript">
$(function () {
    var chart;
    $(document).ready(function() {
        $.getJSON("myPHPFile.php", function(json) {

            chart = new Highcharts.Chart({
                chart: {
                    renderTo: 'container',
                    type: 'line',
                },
                xAxis: {
                    title: { text: 'Year'}
                },
                yAxis: {
                    title: {
                        text: 'Number'
                    },
                    plotLines: [{
                        value: 0,
                        width: 1,
                        color: '#808080'
                    }]
                },
                series: json
            });
        });

    });

});
        </script>

И затем, очевидно, мой div

<div id="container"></div>

Чего мне не хватает? Окно HTML просто пустое. Диаграмма не отображается.

1 Ответ

1 голос
/ 25 января 2020

Примеры Highchart показывают еще один пример для настройки графика. Можно использовать следующий формат:

$(document).ready(function() {
  $.getJSON("myPHPFile.php", function(json) {
    var series = json.map(function(record){
        return [record.Year, record.Number];
    })

    Highcharts.chart('container', {
      chart: {
        renderTo: 'container',
        type: 'line',
      },
      xAxis: {
        title: {
          text: 'Year'
        }
      },
      yAxis: {
        title: {
          text: 'Number'
        },
      },
      series: [{
        data: series
      }],
    });

  });
});

Оформить демонстрацию ниже:

const data = [{
  "Year": 2016,
  "Number": 41
}, {
  "Year": 2017,
  "Number": 512
}, {
  "Year": 2018,
  "Number": 1895
}, {
  "Year": 2019,
  "Number": 3132
}];

const series = data.map(record => [record.Year, record.Number])

Highcharts.chart('container', {
  chart: {
    renderTo: 'container',
    type: 'line',
  },
  xAxis: {
    title: {
      text: 'Year'
    }
  },
  yAxis: {
    title: {
      text: 'Number'
    },
  },
  series: [{
    data: series
  }],
});
<script src="https://code.highcharts.com/highcharts.js"></script>
<script src="https://code.highcharts.com/modules/series-label.js"></script>
<script src="https://code.highcharts.com/modules/exporting.js"></script>

<div id="container"></div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...