【发布时间】:2020-08-27 10:46:54
【问题描述】:
您好 StackOverflow 社区,我正在努力在 Google 折线图中使用 PHP 显示 MySQL 查询。问题是折线图没有显示。 我会感谢任何能够为我指明正确方向的人。以下 MySQL 查询是我试图在折线图中表示的内容:
SELECT
DATE(`VISIT_TIME`) AS `Date`,
SUM(IF(HOUR(`VISIT_TIME`) = 0,
1,
0)) AS `TwelveAM`,
SUM(IF(HOUR(`VISIT_TIME`) = 1,
1,
0)) AS `OneAM`,
SUM(IF(HOUR(`VISIT_TIME`) = 2,
1,
0)) AS `TwoAM`,
SUM(IF(HOUR(`VISIT_TIME`) = 3,
1,
0)) AS `ThreeAM`,
SUM(IF(HOUR(`VISIT_TIME`) = 4,
1,
0)) AS `FourAM`,
SUM(IF(HOUR(`VISIT_TIME`) = 5,
1,
0)) AS `FiveAM`,
SUM(IF(HOUR(`VISIT_TIME`) = 6,
1,
0)) AS `SixAM`,
SUM(IF(HOUR(`VISIT_TIME`) = 7,
1,
0)) AS `SevenAM`,
SUM(IF(HOUR(`VISIT_TIME`) = 8,
1,
0)) AS `EightAM`,
SUM(IF(HOUR(`VISIT_TIME`) = 9,
1,
0)) AS `NineAM`,
SUM(IF(HOUR(`VISIT_TIME`) = 10,
1,
0)) AS `TenAM`,
SUM(IF(HOUR(`VISIT_TIME`) = 11,
1,
0)) AS `ElevenAM`,
SUM(IF(HOUR(`VISIT_TIME`) = 12,
1,
0)) AS `TwelvePM`,
SUM(IF(HOUR(`VISIT_TIME`) = 13,
1,
0)) AS `OnePM`,
SUM(IF(HOUR(`VISIT_TIME`) = 14,
1,
0)) AS `TwoPM`,
SUM(IF(HOUR(`VISIT_TIME`) = 15,
1,
0)) AS `ThreePM`,
SUM(IF(HOUR(`VISIT_TIME`) = 16,
1,
0)) AS `FourPM`,
SUM(IF(HOUR(`VISIT_TIME`) = 17,
1,
0)) AS `FivePM`,
SUM(IF(HOUR(`VISIT_TIME`) = 18,
1,
0)) AS `SixPM`,
SUM(IF(HOUR(`VISIT_TIME`) = 19,
1,
0)) AS `SevenPM`,
SUM(IF(HOUR(`VISIT_TIME`) = 20,
1,
0)) AS `EightPM`,
SUM(IF(HOUR(`VISIT_TIME`) = 21,
1,
0)) AS `NinePM`,
SUM(IF(HOUR(`VISIT_TIME`) = 22,
1,
0)) AS `TenPM`,
SUM(IF(HOUR(`VISIT_TIME`) = 23,
1,
0)) AS `ElevenPM`
FROM
`jurl_analytics`
WHERE
`URL_ID` = 'westonsupermare'
GROUP BY
DATE(`VISIT_TIME`)
LIMIT 7
这是我尝试过的: //如果您决定创建数据库,请填写服务器、用户名、密码和数据库字段。
<?php
$server = "";
$username = "";
$password = "";
$database = "";
$connect = mysqli_connect($server,$username,$password,$database);
if ($connect)
{
echo "You are connected!". "<br>";
}
function runAndCheckSQL($connection, $sql){
$run = mysqli_query($connection, $sql);
if ($run) {
if(is_array($run) || is_object($run)){
return $run;
}else{
return true;
}
} else {
die(showError($sql, $connection));
}
}
$sevenDaysHours = "SELECT
DATE(`VISIT_TIME`) AS `Date`,
SUM(IF(HOUR(`VISIT_TIME`) = 0,
1,
0)) AS `TwelveAM`,
SUM(IF(HOUR(`VISIT_TIME`) = 1,
1,
0)) AS `OneAM`,
SUM(IF(HOUR(`VISIT_TIME`) = 2,
1,
0)) AS `TwoAM`,
SUM(IF(HOUR(`VISIT_TIME`) = 3,
1,
0)) AS `ThreeAM`,
SUM(IF(HOUR(`VISIT_TIME`) = 4,
1,
0)) AS `FourAM`,
SUM(IF(HOUR(`VISIT_TIME`) = 5,
1,
0)) AS `FiveAM`,
SUM(IF(HOUR(`VISIT_TIME`) = 6,
1,
0)) AS `SixAM`,
SUM(IF(HOUR(`VISIT_TIME`) = 7,
1,
0)) AS `SevenAM`,
SUM(IF(HOUR(`VISIT_TIME`) = 8,
1,
0)) AS `EightAM`,
SUM(IF(HOUR(`VISIT_TIME`) = 9,
1,
0)) AS `NineAM`,
SUM(IF(HOUR(`VISIT_TIME`) = 10,
1,
0)) AS `TenAM`,
SUM(IF(HOUR(`VISIT_TIME`) = 11,
1,
0)) AS `ElevenAM`,
SUM(IF(HOUR(`VISIT_TIME`) = 12,
1,
0)) AS `TwelvePM`,
SUM(IF(HOUR(`VISIT_TIME`) = 13,
1,
0)) AS `OnePM`,
SUM(IF(HOUR(`VISIT_TIME`) = 14,
1,
0)) AS `TwoPM`,
SUM(IF(HOUR(`VISIT_TIME`) = 15,
1,
0)) AS `ThreePM`,
SUM(IF(HOUR(`VISIT_TIME`) = 16,
1,
0)) AS `FourPM`,
SUM(IF(HOUR(`VISIT_TIME`) = 17,
1,
0)) AS `FivePM`,
SUM(IF(HOUR(`VISIT_TIME`) = 18,
1,
0)) AS `SixPM`,
SUM(IF(HOUR(`VISIT_TIME`) = 19,
1,
0)) AS `SevenPM`,
SUM(IF(HOUR(`VISIT_TIME`) = 20,
1,
0)) AS `EightPM`,
SUM(IF(HOUR(`VISIT_TIME`) = 21,
1,
0)) AS `NinePM`,
SUM(IF(HOUR(`VISIT_TIME`) = 22,
1,
0)) AS `TenPM`,
SUM(IF(HOUR(`VISIT_TIME`) = 23,
1,
0)) AS `ElevenPM`
FROM
`jurl_analytics`
WHERE
`URL_ID` = 'westonsupermare'
GROUP BY
DATE(`VISIT_TIME`)
LIMIT 7"
?>
<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([
['Date', 'TwelveAM', 'OneAM', 'TwoAM', 'ThreeAM', 'FourAM', 'FiveAM', 'SixAM', '7AM', '8AM', '9AM', '10AM', '11AM', '12PM', '1PM', '2PM', '3PM', '4PM', '5PM', '6PM', '7PM', '8PM', '9PM', '10PM', '11PM'],
<?php
$fire = mysqli_query($connect, $sevenDaysHours);
while($result = mysqli_fetch_assoc($fire))
{
echo "['".$result['Date']."',".$result['TwelveAM']."',".$result['OneAM']."',".$result['TwoAM']."',".$result['ThreeAM']."',".$result['FourAM']."',".$result['FiveAM']."',".$result['SixAM']."',".$result['SevenAM']."',".$result['EightAM']."',".$result['NineAM']."',".$result['TenAM']."',".$result['ElevenAM']."',".$result['TwelvePM']."',".$result['OnePM']."',".$result['TwoPM']."',".$result['ThreePM']."',".$result['FourPM']."',".$result['FivePM']."',".$result['SixPM']."',".$result['SevenPM']."',".$result['EightPM']."',".$result['NinePM']."',".$result['TenPM']."',".$result['ElevenPM']."',".$result['TwelvePM']."],";
}
?>
]);
var options = {
title: 'Company Performance',
curveType: 'function',
legend: { position: 'bottom' }
};
var chart = new google.visualization.LineChart(document.getElementById('curve_chart'));
chart.draw(data, options);
}
</script>
</head>
<body>
<div id="curve_chart" style="width: 900px; height: 500px"></div>
</body>
</html>
要创建数据库来帮助解决此问题,请运行以下命令来创建数据库:
CREATE TABLE `JURL_Analytics` (
`VISIT_ID` int(8) NOT NULL,
`VISIT_TIME` timestamp NOT NULL DEFAULT current_timestamp(),
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `JURL_Analytics` (`VISIT_ID`, `VISIT_TIME`) VALUES
(705, '2020-08-26 15:20:26'),
(704, '2020-08-26 13:19:08'),
(703, '2020-08-25 21:40:22'),
(702, '2020-08-25 17:34:29'),
(701, '2020-08-25 17:34:23'),
(700, '2020-08-25 10:12:39'),
(699, '2020-08-25 09:26:57'),
(698, '2020-08-25 09:26:57'),
(697, '2020-08-25 09:26:32'),
(696, '2020-08-25 09:22:43'),
(695, '2020-08-25 09:18:58'),
(694, '2020-08-25 09:12:25'),
(693, '2020-08-24 16:18:45'),
(692, '2020-08-24 14:22:20'),
(691, '2020-08-24 14:19:39'),
(690, '2020-08-24 14:19:03'),
(689, '2020-08-24 13:48:00'),
(688, '2020-08-24 06:21:50'),
(687, '2020-08-23 20:22:26'),
(686, '2020-08-23 19:55:26'),
(685, '2020-08-23 19:54:09'),
(684, '2020-08-23 07:34:47'),
(683, '2020-08-22 23:28:29'),
(682, '2020-08-22 13:24:44'),
(681, '2020-08-22 09:56:58'),
(680, '2020-08-22 06:54:50'),
(679, '2020-08-22 06:53:37'),
(678, '2020-08-22 03:13:39'),
(677, '2020-08-22 03:11:30'),
(676, '2020-08-21 16:47:31'),
(675, '2020-08-20 18:13:02'),
(674, '2020-08-20 17:28:48'),
(673, '2020-08-20 10:57:27'),
(672, '2020-08-19 15:21:29'),
(671, '2020-08-19 14:57:21'),
(670, '2020-08-19 10:25:26'),
(669, '2020-08-18 18:53:22'),
(668, '2020-08-18 18:04:46'),
(667, '2020-08-18 18:00:13'),
(666, '2020-08-18 17:59:59'),
(665, '2020-08-18 14:35:04'),
(664, '2020-08-18 11:49:22'),
(663, '2020-08-18 11:43:47'),
(662, '2020-08-18 11:25:02'),
(661, '2020-08-18 08:07:09'),
(660, '2020-08-18 07:57:51'),
(659, '2020-08-18 01:09:30'),
(658, '2020-08-17 21:43:36'),
(657, '2020-08-17 21:43:07'),
(656, '2020-08-17 20:53:50'),
(655, '2020-08-17 20:15:12'),
(654, '2020-08-17 18:08:16')
我为响应 DroopSnoot 所做的尝试:
echo "['".$result['Date']."',".$result['TwelveAM']."','".$result['OneAM']."','".$result['TwoAM']."','".$result['ThreeAM']."','".$result['FourAM']."','".$result['FiveAM']."','".$result['SixAM']."','".$result['SevenAM']."','".$result['EightAM']."','".$result['NineAM']."','".$result['TenAM']."','".$result['ElevenAM']."','".$result['TwelvePM']."','".$result['OnePM']."','".$result['TwoPM']."','".$result['ThreePM']."','".$result['FourPM']."','".$result['FivePM']."','".$result['SixPM']."','".$result['SevenPM']."','".$result['EightPM']."','".$result['NinePM']."','".$result['TenPM']."','".$result['ElevenPM']."','".$result['TwelvePM']."],";
【问题讨论】:
-
您到底遇到了什么问题?
-
当我按照手册编写所有内容时,折线图未显示的问题。从逻辑上讲,它应该可以工作,我已经花了很多时间唉!无济于事。作为最后的手段,我来 StackOverflow。
-
不要尝试手动创建 JSON。在 PHP 中填充适当的数据结构,然后使用
json_encode创建适当的输出。 -
您能详细说明一下吗?我不确定 JSON 是不是问题。
-
到目前为止,您似乎还不确定问题出在哪里根本 - 所以至少将其排除为潜在的错误原因,但要以“正确的方式” ” 开始。
标签: php html mysql charts google-visualization