Как можно использовать запрос SQL для получения значений из БД в массивах для линейной диаграммы - PullRequest
0 голосов
/ 07 мая 2020

Я пытаюсь получить данные из БД для линейного графика, используя приведенный ниже код.

    <?php
        $dataPoints = array( 

            $sql1 = "SELECT * FROM chart_data_column WHERE value = 'now'";
            $result1 = $conn->query($sql1);
            if ($result1->num_rows > 0) {                               
            while($row1 = $result1->fetch_assoc()) { 

         array("y" => 25, "label" => "Sunday"), ?>

             } } else { } 
      );
    ?>
<script>
 window.onload = function () {

   var chart = new CanvasJS.Chart("chartContainer", {
  title: {
  text: ""
      },
  axisY: {
  title: ""
      },
   data: [{
type: "line",
   dataPoints: <?php echo json_encode($dataPoints, JSON_NUMERIC_CHECK); ?>
   }]
   });
  chart.render();
 }
</script>
<script src="https://canvasjs.com/assets/script/canvasjs.min.js"></script>
         <div id="chartContainer" style="height: 370px; width: 100%;"></div>

Используя приведенный выше код, он выдает ошибку как Неожиданная синтаксическая ошибка, ожидая) вместо; в строке $ dataPoints

Однако, если я удаляю запрос sql, графики с данными stati c будут идеально.

Любая помощь приветствуется ..

Ответы [ 2 ]

1 голос
/ 07 мая 2020

Я должен поблагодарить вас за разделение PHP кода и JavaScript. Это очень хорошая идея. Однако, если вы хотите получить все записи из MySQL, используя PHP и библиотеку mysqli, вам не нужно иметь l oop. Вы можете просто получить все в массив, а затем отобразить с json_encode() в JavaScript.

<?php

// import your mysqli connection before

$result1 = $conn->query("SELECT * FROM chart_data_column WHERE value = 'now'");
$dataPoints = $result1->fetch_all(MYSQLI_ASSOC);

?>
<script>
 window.onload = function () {

   var chart = new CanvasJS.Chart("chartContainer", {
  title: {
  text: ""
      },
  axisY: {
  title: ""
      },
   data: [{
type: "line",
   dataPoints: <?= json_encode($dataPoints, JSON_NUMERIC_CHECK); ?>
   }]
   });
  chart.render();
 }
</script>

<?= - это сокращение от <?php echo

0 голосов
/ 07 мая 2020

Вы помещаете весь запрос в массив. Вам нужно их разделить. Кроме того, у вас есть "chart_data_column", где должно быть имя таблицы.

$dataPoints = array();

$sql1 = "SELECT * FROM chart_data_column WHERE value = 'now'";
$result1 = $conn->query($sql1);
if ($result1->num_rows > 0) {
    while ($row = $result1->fetch_assoc()) {
        $dataPoints[] = $row;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...