我的 'GoogleChart Pie' 只显示薄片

My 'GoogleChart Pie' shows only thin slices

当我将数据回显到我的饼图时,只会显示薄片,百分比为 1% 和 0.2%。显然,这不是它应该显示的 100%。我已经尝试了所有类型的组合,但 w/o 运气不好。 请参阅此处的示例:https://imgur.com/a/164Btqu

我的代码:

<?php
  include "config.php";
           
  $query = "SELECT COUNT(CASE WHEN Success = '1' THEN 1 ELSE NULL END) AS Successes, COUNT(CASE WHEN Success = '0' AND EndTime > '1970-01-01 00:00:00' THEN 1 ELSE NULL END) AS Failures, COUNT(CASE WHEN Success = '0' AND EndTime = '1970-01-01 00:00:00' THEN 1 ELSE NULL END) As Incompletes, COUNT(*) AS Total FROM DiskOperationLog";

 $result = mysqli_query($dbhandle, $query);  
 ?>  
 <!DOCTYPE html>  
 <html>  
      <head>
  <meta http-equiv="refresh" content="300">
  <title>WipeDrive Dashboard</title>
  <link rel="icon" href="favicon.png" sizes="16x16" type="image/png">
  <link rel="shortcut icon" href="favicon.ico" type="image/x-icon"/>
</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([  
                   ['Success', 'Fail'],
                                             
                          <?php  
                         while($row = mysqli_fetch_array($result)) {   
                         echo "['Successes', '$row[0]'], ['Failures', '$row[1]']";
                           }  
                           ?>  
          
                     ]);  
                var options = {  
                      title: 'Wipe Results',
                      pieSliceText: 'value-and-percentage',
                      slices: {0: {color: '#1bbd0e'}, 1:{color: '#ff3333'}}, 
                      is3D:true,  
                     };  

                var chart = new google.visualization.PieChart(document.getElementById('piechart'));  
                chart.draw(data, options);  
           }  
           </script>  
      </head>  
      <body>  
           <br /><br />  
           <div style="width:900px;">  
                <h3 align="left">WipeDrive Dashboard</h3>  
                <br />  
                <div id="piechart" style="width: 755px; height: 375px;"></div>  
           </div>  
      </body>  
 </html>

假设原因在 'echo' 行中,我已经在这里尝试了所有我能想到的。

下面给出了正确的图表,但是name和value是一样的,都是金额。 因此,如果值为 179 和 33,则饼图被正确划分,但名称中没有“成功”和“失败”,而是数字 (179 和 33)。

echo "['".$row["Successes"]."', ".$row[0]."],";
echo "['".$row["Failures"]."', ".$row[1]."],"; 

如果我在下面回显,图表确实显示 100%,看起来它正在运行。所以我想添加第二个值是这里的问题,我错过了一个重要的 step/function/option.

echo "['Successes', '$row[0]']";

提前致谢!

根据 documentation,您误用了 google.visualization.arrayToDataTable

此外,您不需要使用循环,因为您总是只有一行。

以下应正确初始化您的 data 变量:

<?php $row = mysqli_fetch_array($result); ?>
var data = google.visualization.arrayToDataTable([
  [
    {label: 'Outcome', type: 'string'},
    {label: 'Count', type: 'number'},
  ],
  ['Success', parseInt('<?php echo $row[0]; ?>')],
  ['Fail', parseInt('<?php echo $row[1]; ?>')]
]);

如果短开放标签被激活,您可以使用 <?= $row[0] ?> 而不是 <?php echo $row[0]; ?>