谢谢你的时间。 我有两个问题,我很新。PHP MySQL计数如果谷歌图表和拉列/行数据
我想完成的是从一个统一数据库中提取数据,然后谷歌图表为我显示一个饼图。我可以得到代码来拉取数据,但它拉动了所有行,这对大多数列都是适用的,但是对于一列“isoverdue”,我只希望在行数为1时对其进行计数。我尝试过有几种不同的方式来添加if语句,但它们总是导致失败的MySQL错误。
我遇到的第二个问题是如何获得动态更新的Google代码?我已经用拉来的结果进行硬编码,但是我想知道我该怎么做,以便它不会被硬编码?也许我会需要一个新的变量,所以它会增加计数?
<?php
$servername = "localhost";
$username = "";
$password = "";
$db = "";
$dbh = new PDO("mysql:host=$servername;dbname=$db", $username, $password);
// Create connection
$conn = new mysqli($servername, $username, $password, $db);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
foreach($dbh->query('SELECT COUNT(created) FROM ost_ticket') as $opened);
foreach($dbh->query('SELECT COUNT(closed) FROM ost_ticket') as $closed1);
foreach($dbh->query('SELECT COUNT(isoverdue) FROM ost_ticket') as $overdue);
echo "<tr>";
echo "<td>".$opened['COUNT(created)']."</td>", "<td>".$closed1['COUNT(closed)']."</td>", "<td>" .$overdue['COUNT(isoverdue)']."</td>";
echo "</tr>";
?>
<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([
['Status', 'Hours per Day'],
['Opened', 8],
['Closed', 5],
['Overdue', 3],
]);
var options = {
title: 'My Daily Activities'
};
var chart = new google.visualization.PieChart(document.getElementById('piechart'));
chart.draw(data, options);
}
</script>
</head>
<body>
<div id="piechart" style="width: 900px; height: 500px;"></div>
</body>
</html>
再次感谢您抽空点评本文。
作为_Update dynamically_,推荐具有PHP构建JSON对象,这是从AJAX调用,然后被传递给一个谷歌的图表[数据表(https://developers.google.com/chart/interactive/docs/参考#constructor_1),类似于[最近的答案](http://stackoverflow.com/a/38955110/5090771) – WhiteHat
如果在实际关闭票据之前闭列为“NULL”,那么这将起作用。由于'COUNT()'只会对非空的行进行计数,它会与'COUNT(已创建)'不同,它可能从未'NULL' –
GentlemanMax
谢谢,不是100%确定... – WhiteHat