Php 我的';谷歌图表派';只显示薄片
当我将数据回送到饼图时,仅显示百分比为1%和0.2%的薄片。这显然不是它应该显示的100%。我试过各种组合,但运气不好。 请参见此处的示例: 我的代码:Php 我的';谷歌图表派';只显示薄片,php,pie-chart,Php,Pie Chart,当我将数据回送到饼图时,仅显示百分比为1%和0.2%的薄片。这显然不是它应该显示的100%。我试过各种组合,但运气不好。 请参见此处的示例: 我的代码: <?php include "config.php"; $query = "SELECT COUNT(CASE WHEN Success = '1' THEN 1 ELSE NULL END) AS Successes, COUNT(CASE WHEN Success = '0
<?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>
如果我在下面回显,图表确实显示100%,并且看起来它正在工作。因此,我想添加第二个值是这里的问题,我错过了一个重要的步骤/功能/选项
echo "['Successes', '$row[0]']";
提前谢谢 根据,您误用了google.visualization.arrayToDataTable
此外,您不需要使用循环,因为您始终只有一行
以下各项应正确初始化数据
变量:
<?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]; ?>')]
]);
var data=google.visualization.arrayToDataTable([
[
{label:'output',type:'string'},
{标签:'Count',类型:'number'},
],
['Success',parseInt(''),
['Fail',parseInt('')]
]);
如果短开放标记被激活,您可以使用
而不是
,根据,您误用了google.visualization.arrayToDataTable
此外,您不需要使用循环,因为您始终只有一行
以下各项应正确初始化数据
变量:
<?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]; ?>')]
]);
var data=google.visualization.arrayToDataTable([
[
{label:'output',type:'string'},
{标签:'Count',类型:'number'},
],
['Success',parseInt(''),
['Fail',parseInt('')]
]);
如果短开放标记被激活,您可以使用
而不是
我相信问题来自您的SQL查询。你得到的四个值是什么?我怀疑Total
比successfulls+Failures
大得多。多亏了费边,总数将是227(成功181次,失败33次,未完成10次)。因此,即使它把所有的都占了,也应该远远超过1%。此外,如果我选择成功或失败,它将显示100%,值为181或33。我相信问题来自您的SQL查询。你得到的四个值是什么?我怀疑Total
比successfulls+Failures
大得多。多亏了费边,总数将是227(成功181次,失败33次,未完成10次)。因此,即使它把所有的都占了,也应该远远超过1%。此外,如果我选择成功或失败,它将显示100%,值为181或33。如果我使用字符串1:1,它将完全不显示任何数据。删除“标签”行,也不会发生任何事情。但是如果我把[success',“failed']
添加到
上面,它将带我回到这个原因的根源<代码>['Succes','fail','],['Success',','','fail','''],通过在@FabianPijckevar data=google.visualization.arrayToDataTable的脚本中添加parseInt解决了这个问题。([{label:'Success',type:'string'},{label:'fail',type:'number},],['successfulls',parseInt('']),['Failures',parseInt('])代码>谢谢你的帮助!很高兴听到你把事情搞定了!:-)祝你今天愉快我根据你的评论更新了我的答案。请随意将我的答案标记为正确,以便StackOverflow成员知道他们不再需要关注这个问题:-)哦,实际上我认为这是因为Javascript将“42”视为字符串。因此,您可能只需执行['Success',],
(PHP标记周围没有撇号)。你能告诉我这是否有效吗?这样我们就有了最好的答案?谢谢,如果我使用字符串1:1,它将完全不显示任何数据。删除“标签”行,也不会发生任何事情。但是如果我把[success',“failed']
添加到
上面,它将带我回到这个原因的根源<代码>['Succes','fail','],['Success',','','fail','''],
通过在@FabianPijckevar data=google.visualization.arrayToDataTable的脚本中添加parseInt解决了这个问题。([{label:'Success',type:'string'},{label:'fail',type:'number},],['successfulls',parseInt('']),['Failures',parseInt('])代码>谢谢你的帮助!很高兴听到你把事情搞定了!:-)祝你今天愉快我根据你的评论更新了我的答案。请随意将我的答案标记为正确,以便StackOverflow成员知道他们不再需要关注这个问题:-)哦,实际上我认为这是因为Javascript将“42”视为字符串。因此,您可能只需执行['Success',],
(PHP标记周围没有撇号)。你能告诉我这是否有效吗?这样我们就有了最好的答案?非常感谢。