mysql - 即使值为零,条形图也会出现 - Google Charts

标签 mysql charts google-visualization bar-chart

我使用 Google 图表创建了月度图表,但即使值为零时也会显示条形图。

这是截图

Monthly Sale Chart

这是代码,我知道代码容易受到 SQL 注入(inject)攻击。你可以忽略它。这仅用于测试目的

以前 order_total_amount 列被设置为“VARCHAR”数据类型,然后有人建议它应该设置为“INT”。所以我把它从 Varchar 改成了 Int。但这并没有解决问题。尽管值为 0,条仍然显示

     <script type="text/javascript">
      google.charts.load('current', {'packages':['bar']});
      google.charts.setOnLoadCallback(drawChart);

      function drawChart() {
        var data = google.visualization.arrayToDataTable([
          ['Monthly', 'Sales'],
          <?php   
            
    $sale_chart = "SELECT 
    SUM(IF(month = 'Jan', total, 0)) AS 'Jan',
    SUM(IF(month = 'Feb', total, 0)) AS 'Feb',
    SUM(IF(month = 'Mar', total, 0)) AS 'Mar',
    SUM(IF(month = 'Apr', total, 0)) AS 'Apr',
    SUM(IF(month = 'May', total, 0)) AS 'May',
    SUM(IF(month = 'Jun', total, 0)) AS 'Jun',
    SUM(IF(month = 'Jul', total, 0)) AS 'Jul',
    SUM(IF(month = 'Aug', total, 0)) AS 'Aug',
    SUM(IF(month = 'Sep', total, 0)) AS 'Sep',
    SUM(IF(month = 'Oct', total, 0)) AS 'Oct',
    SUM(IF(month = 'Nov', total, 0)) AS 'Nov',
    SUM(IF(month = 'Dec', total, 0)) AS 'Dec'
    FROM
    (SELECT 
        MIN(DATE_FORMAT(order_date, '%b')) AS month,
            SUM(order_total_amount) AS total
    FROM
        invoice_order
    WHERE
        user_id = '$user_id'
    GROUP BY YEAR(order_date) , MONTH(order_date)
    ORDER BY YEAR(order_date) , MONTH(order_date)) AS sale";

$sale_chart_query = mysqli_query($connection,$sale_chart) or die(mysqli_error($connection));

$sale_chart_array = mysqli_fetch_assoc($sale_chart_query);
            
          foreach($sale_chart_array as $x => $val) { ?>
          ['<?php echo $x; ?>','<?php echo $val; ?>'],
           <?php } ?>
        ]);

        var options = {
        
        };

        var chart = new google.charts.Bar(document.getElementById('chart_div'));

        chart.draw(data, google.charts.Bar.convertOptions(options));
      }
     </script>

将零替换为null后,结果是这样显示的

screenshot

最佳答案

在图表的数据表中使用值 null 将防止出现柱状图。
请参阅以下工作片段...

在这种情况下,您在数据表中包括字符串而不是数字。
从第二个数组值中删除单引号,这里...

['<?php echo $x; ?>',<?php echo $val; ?>],

google.charts.load('current', {
  packages: ['bar']
}).then(function drawChart() {
  var data = google.visualization.arrayToDataTable([
    ['Monthly', 'Sales'],
    ['Jan', 1000],
    ['Feb', null],
    ['Mar', null],
    ['Apr', null],
    ['May', 40000],
    ['Jun', null],
    ['Jul', null],
    ['Aug', null],
    ['Sep', null],
    ['Oct', null],
    ['Nov', null],
    ['Dec', null]
  ]);

  var options = {};

  var chart = new google.charts.Bar(document.getElementById('chart_div'));

  chart.draw(data, google.charts.Bar.convertOptions(options));
});
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="chart_div"></div>

关于mysql - 即使值为零,条形图也会出现 - Google Charts,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67416441/

相关文章:

mysql - 如何使用第二个表中的 select group by 作为 MySQL 中的数据源来更新表?

mysql - 使用 SQL Server 后端将 iOS 应用程序连接到本地网络上的托管网站

mysql - 试图让 mysql 子字符串搜索工作

Excel 2010 VBA 删除图表

javascript - 如何在 Javascript 中将查询字符串传递到 Google Sheets API v4

mysql - 更新计数仅为 1 的值

php - Highcharts 中柱形图的 3 级向下钻取?

javascript - 如何在条形图上放置标签 google.charts.Bar()

javascript - 核心图而不是折线图

javascript - 减少 AngularJS 中图表的 Canvas html 代码