диаграмма php не показывает все поля - PullRequest
1 голос
/ 08 апреля 2019

Я использую диаграммы Google (на веб-странице php) с данными из базы данных sql.Проблема, которую я имею, состоит в том, что это не отображает имена полей и значения должным образом, это просто отображает значение первого поля «расход».Должны быть показаны два поля «расход» и «доход» со значениями в БД.Любые идеи, что я делаю неправильно?

мой код ниже:

<?php

$dbhandle = new mysqli('localhost','root','','useraccounts');
echo $dbhandle->connect_error;

$query = "SELECT * FROM ctincome";
$res = $dbhandle->query($query);
?>


<html>
<head>
<script type="text/javascript" 
src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript">
  google.charts.load("current", {packages:["corechart"]});
  google.charts.setOnLoadCallback(drawChart);
  function drawChart() {
    var data = google.visualization.arrayToDataTable([
      ['expense','income'],
  <?php 
  while($row=$res->fetch_assoc())

  {
      echo "['".$row['expense']."','".$row['income']."'],";
  }

  ?>
    ]);

    var options = {
      title: 'Expenses to Income',
      pieHole: 0.4,
    };

    var chart = new 
   google.visualization.PieChart(document.getElementById
   ('donutchart'));
    chart.draw(data, options);
   }
   </script>
   </head>
   <body>
   <div id="donutchart" style="width: 900px; height: 500px;"></div>
   </body>
   </html>

Ответы [ 2 ]

0 голосов
/ 08 апреля 2019

У меня есть три предложения, основанные на моем опыте с кросс-браузерными или javascript-ошибками, которые я решил.

Первый пункт: вы просто повторяете , вам необходимо использовать объединение .

<?php 
  $data = '';
  while($row=$res->fetch_assoc())

  {
      $data .= "['".$row['expense']."','".$row['income']."'],";
  }

  ?>

 var data = google.visualization.arrayToDataTable([
      ['expense','income'],
      <?php echo $data; ?>
    ]);

второй пункт: в javascript последняя запятая может работать или не работать, лучше не добавлять запятую, если это последняя строка.

var data = google.visualization.arrayToDataTable([
      ['expense','income'],
  <?php 
  while($row=$res->fetch_assoc())

  {
      if(last row )
       $data .= "['".$row['expense']."','".$row['income']."']";
       else  $data .= "['".$row['expense']."','".$row['income']."'],";
  }

  ?>
    ]);

третье предложение: проверить тип данных var data до и после объединения

0 голосов
/ 08 апреля 2019

значения для столбца дохода должны быть числами, а не строками.

удалить одинарные кавычки из второго столбца.

от ...

echo "['".$row['expense']."','".$row['income']."'],";

до ...

echo "['".$row['expense']."',".$row['income']."],";
...