Результаты Google MySQL Chart - PullRequest
0 голосов
/ 22 мая 2018

Я пытаюсь использовать диаграммы Google для отображения результатов моего запроса.Вот часть php:

<?php

include('db.php');

$mysqli = SQLConnect();
$myArray = array();

$sql = "select id, rating from ratings order by RateDate DESC limit 5";

if ($result = $mysqli->query($sql)) {
    while($row = $result->fetch_assoc()) {
            $myArray[] = $row;
    }
    echo json_encode($myArray);
}
$result->close();
$mysqli->close();
?>

И это фактическая часть, где я пытаюсь ее использовать:

  google.charts.load('current', {'packages':['corechart']});    
  google.charts.setOnLoadCallback(drawChart1);

  function drawChart1() {

    var options = {
      title: 'Last 5 Ratings',
      height: 400,
      legend: { position: 'bottom' }
    };

    var jsonData = $.post({

      url: '../resources/db/getDataForChart1.php',
      dataType:"json",
      async: false,
      success: function(jsonData){
        var data = new google.visualization.arrayToDataTable(jsonData);

        var chart = new google.visualization.BarChart(document.getElementById('lastEvaluations'));
        chart.draw(data, options);

      }
    }).responseText;
  }

В качестве ошибки функции arrayToDatabaseTable я получаю:

Uncaught Error: First row is not an array.

Это предположительно означает, что массив, извлеченный скриптом php, искажен, но, глядя на их документы, я не понимаю, что с ним не так.

Может ли кто-нибудь просветить меня?

1 Ответ

0 голосов
/ 23 мая 2018

$row, скорее всего, выглядит как объект {}, вместо массива []

в вашем выражении while, создайте новый массив и добавьте каждое значение из результата
, затем добавьте новый массив к $myArray

while($row = $result->fetch_assoc()) {
    $rowArray = array();
    $rowArray[] = $row["id"];
    $rowArray[] = $row["rating"];
    $myArray[] = $rowArray;
}

. Кроме того, arrayToDataTable ожидает, что первый массив будет меткой столбца,
, если второй параметр не равен true, то есть первая строкаdata

Итак, вам нужно либо добавить метки столбцов ...

$rowArray = array();
$rowArray[] = "id";
$rowArray[] = "rating";
$myArray[] = $rowArray;
while($row = $result->fetch_assoc()) {
    $rowArray = array();
    $rowArray[] = $row["id"];
    $rowArray[] = $row["rating"];
    $myArray[] = $rowArray;
}

или установить второй параметр на true ...

var data = google.visualization.arrayToDataTable(jsonData, true);

note: arrayToDataTable - статический метод, ключевое слово new не должно использоваться ...

...