php - 在 Google 饼图中按列值/类别对行进行分组

标签 php mysql charts google-visualization

我有一个如下所示的表格:

sub_note | item_amount | sub_cat       |
---------------------------------------|
Spotify  |  $5.99      | entertainment |
Vodafone |  $35        | phone         |
Netflix  |  $5.99      | entertainment |

我想显示一个 Google 饼图,告诉我每个类别(即娱乐、电话等)花费了多少。

我使用了 Google Quick Start 示例的以下改编版,但我看到的只是一张空白图表,其中包含“无数据”。

<script type="text/javascript">

  // Load the Visualization API and the corechart package.
  google.charts.load('current', {'packages':['corechart']});

  // Set a callback to run when the Google Visualization API is loaded.
  google.charts.setOnLoadCallback(drawChart);

  // Callback that creates and populates a data table,
  // instantiates the pie chart, passes in the data and
  // draws it.
  function drawChart() {

    // Create the data table.
     var data = new google.visualization.DataTable();
    data.addColumn('string', 'Category');
    data.addColumn('number', 'Total');
    data.addRows([
     <?php 
     $query = "SELECT SUM(sub_amount) AS sub_cat, subs_total FROM subscriptions WHERE sub_user_id ='".$user_id."' GROUP BY sub_cat ORDER BY sub_cat";
      $exec = mysqli_query($connect,$query);
      while($row = mysqli_fetch_array($exec)){
      echo "['".$row['sub_cat']."',".$row['subs_total']."],";
      }
 ?>]);

    // Set chart options
    var options = {'title':'Spending by Category',
                   'width':600,
                   'height':400};

    // Instantiate and draw our chart, passing in some options.
    var chart = new google.visualization.PieChart(document.getElementById('chart_div'));
    chart.draw(data, options);
  }
</script>

很明显,查询代码和它的分组方式有问题,但我正在摸不着头脑试图解决这个问题。

任何指针都会很棒!

更新:感谢@WhiteHat 的 SQL 更正,这是功能代码:

<script type="text/javascript">

  // Load the Visualization API and the corechart package.
  google.charts.load('current', {'packages':['corechart']});

  // Set a callback to run when the Google Visualization API is loaded.
  google.charts.setOnLoadCallback(drawChart);

  // Callback that creates and populates a data table,
  // instantiates the pie chart, passes in the data and
  // draws it.
  function drawChart() {

    // Create the data table.
    var data = new google.visualization.DataTable();
    data.addColumn('string', 'Category');
    data.addColumn('number', 'Total');
    data.addRows([
     <?php 
     $query = "SELECT sub_cat, SUM(sub_amount) as subs_total FROM subscriptions WHERE sub_user_id ='".$user_id."' GROUP BY sub_cat ORDER BY sub_cat";
      $exec = mysqli_query($connect,$query);
      while($row = mysqli_fetch_array($exec)){
      echo "['".$row['sub_cat']."',".$row['subs_total']."],";
      }
   ?>]);

    // Set chart options
    var options = {'title':'How Much Pizza I Ate Last Night',
                   'width':600,
                   'height':400};

    // Instantiate and draw our chart, passing in some options.
    var chart = new google.visualization.PieChart(document.getElementById('chart_div'));
    chart.draw(data, options);
  }
</script>

最佳答案

试试这个sql...

$query = "SELECT sub_cat, SUM(sub_amount) as subs_total FROM subscriptions WHERE sub_user_id ='".$user_id."' GROUP BY sub_cat ORDER BY sub_cat";

类别应该在第一列,小计在第二列。

关于php - 在 Google 饼图中按列值/类别对行进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35952545/

相关文章:

php - fatal error : Uncaught PDOException: SQLSTATE[HY000]: General error: fetch mode requires the classname argument in

php - mysql_fetch_array()/mysql_fetch_assoc()/mysql_fetch_row()/mysql_num_rows 等...期望参数 1 是资源

php - 需要双击才能插入数据库

c# - 如何让用户在 MSChart 上创建注释?

php - 在没有 SSH 访问的情况下将大量数据加载到 MySQL?

php - 用于视差背景的图像是从 http 本地主机而不是 style.css 中的 wordpress url 中提取的

php - 触发器阻止 INSERT

Mysql连接查询帮助显示2条单独的记录

javascript - 如何使用 google.visualization.Table 显示精确值

javascript - Google Charts - 具有相同值的相邻列的共享标签