我希望你们都好。
我目前正在自学PHP,作为其中的一部分,我一直在尝试开发一个反馈系统,用于存储我工作的餐厅的客户反馈卡上的信息。
我遇到的问题与我用来生成json输出的php代码有关,jqplot随后会使用该输出来创建图形。
下面是我用来做这件事的代码:
<?php
// $toDate and $fromDate will eventually be values coming over via post however i am using static values at the moment for testing
$toDate = time();
$fromDate = time() - (7 * 24 * 60 * 60);
$sql = "SELECT * FROM feedback WHERE visitDateTime BETWEEN FROM_UNIXTIME($fromDate) AND FROM_UNIXTIME($toDate)";
$result = mysql_query($sql) or die(mysql_error());
?>在获得数据之后,我在javascript和php中使用此代码来生成jqplot数据。
<script>
$(document).ready(function(){
var line1 = [
<?php
while ($row = mysql_fetch_assoc($result)){
echo '[';
echo "'";
echo $row['visitDateTime'];
echo "',";
echo $row ['foodScore'];
echo ']';
echo ',';
}
?>
];
// code then goes on to generate the chart, etc....
</script>这可以很好地工作,并生成以下json输出:
var line1 = [
['2012-04-20 19:00:00',7],['2012-04-20 19:00:00',8],['2012-04-20 12:00:00',8],['2012-04-22 16:00:00',5],['2012-04-21 20:00:00',9], ];
然而,我遇到的问题是,当两个日期和时间相同时,这会在图表上导致问题,因为我对一个日期有多个值。
经过深思熟虑后,我得出的结论是,我实际需要做的是计算日期和时间的平均得分,以便生成如下所示的输出:
var line1 = ['unique date/time', average of all scores from this date/time ]但我甚至不知道如何开始这样做。
我知道这可能是错误的,但我认为我需要遍历所有检索到的记录,并检查日期/时间是否相同。所以基本上,不是返回这个:
['2012-04-20 19:00:00',7],['2012-04-20 19:00:00',8],['2012-04-20 12:00:00',8],['2012-04-20 12:00:00',5],['2012-04-20 12:00:00',9]我需要返回这个:
['2012-04-20 19:00:00',7.5],['2012-04-20 12:00:00',7.3]如果有人能给我任何关于如何做这件事的建议,那将会对我有很大的帮助。
谢谢大家。
发布于 2012-04-24 19:01:00
您可以让MySQL为您做平均计算,而不是在服务器上进行平均计算。您可以使用这样的查询直接从MySQL检索分组和平均的数据
SELECT avg(foodScore), visitDateTime FROM feedback WHERE visitDateTime BETWEEN FROM_UNIXTIME($fromDate) AND FROM_UNIXTIME($toDate) group by visitDateTime如果这个不起作用,请告诉我
https://stackoverflow.com/questions/10296515
复制相似问题