【问题标题】:MySQL to display number of entries per hour in a tableMySQL在表中显示每小时的条目数
【发布时间】:2016-02-06 00:28:55
【问题描述】:

New link - results off by 1我需要在表格中回显给定日期每小时的条目数,即使它们是 0。这似乎正在发生,但以一种奇怪的方式......如您所见,小时数列没有打球,因为这应该是 0:00-1 .... 22.00-23.00 等。预期结果的总数是 19,当您将结果加在一起时也是正确的。到了我现在不知道脚本中发生了什么并且不知道从哪里开始修复格式问题的地步。非常感谢任何帮助。Current Result in HTML Page

// Get list of times per hour for reader 
$sqltimea = "SELECT   CONCAT(Hour, ':00-', Hour+1, ':00') AS hours,
 COUNT(r.readerid) AS tapcount
FROM 
   (
     SELECT  '0' AS Hour
     UNION ALL SELECT  '1' UNION ALL SELECT  '2' UNION ALL SELECT  '3'
     UNION ALL SELECT  '4' UNION ALL SELECT  '5' UNION ALL SELECT  '6'
     UNION ALL SELECT  '7' UNION ALL SELECT  '8' UNION ALL SELECT  '9'
     UNION ALL SELECT '10' UNION ALL SELECT '11' UNION ALL SELECT '12'
     UNION ALL SELECT '13' UNION ALL SELECT '14' UNION ALL SELECT '15'
     UNION ALL SELECT '16' UNION ALL SELECT '17' UNION ALL SELECT '18'
     UNION ALL SELECT '19' UNION ALL SELECT '20' UNION ALL SELECT '21'
     UNION ALL SELECT '22' UNION ALL SELECT '23'
 ) AS h
  LEFT JOIN taps t ON HOUR(t.`time`) = Hour 
AND
    DATE(t.time) = '2016-01-15' LEFT JOIN
 readers r
 ON r.readerid = t.readerid AND r.type = 'A'
GROUP BY Hour
ORDER BY Hour";
$qtimea = mysql_query($sqltimea);

// THE CHALLENGE! Put it in a table!

$hours = array("0:00-1:00", "1:00-2:00", "2:00-3:00", "3:00-4:00", "4:00-5:00", "5:00-6:00", "6:00-7:00", "7:00-8:00", "8:00-9:00", "9:00-10:00", "11:00-12:00", "12:00-13:00", "13:00-14:00", "14:00-15:00", "15:00-16:00", "16:00-17:00", "17:00-18:00", "18:00-19:00", "19:00-20:00", "20:00-21:00", "21:00-22:00", "22:00-23:00", "23:00-24:00");

for($i = 0; $i <= 23; $i++) {
    while($timea = mysql_fetch_assoc($qtimea)) {
        $tapsa = $timea['tapcount'];
        echo "<tr><td>" . $hours[$i] . "</td><td>" . $tapsa . "</td></tr>";
    }
}
?>

【问题讨论】:

  • 您能告诉我们您期望看到的结果吗?请阅读stackoverflow.com/help/how-to-ask这里是START的好地方
  • 如果您在 HTML 中看到当前结果,则它几乎是所需的结果。左侧列应该是 24 小时制的小时时间框架,但您可以看到它重复第一个小时框架。右侧的列似乎在显示每个小时帧中出现了多少条目。

标签: php html mysql


【解决方案1】:

我不是 PHP 专家,但您的 i 变量不会在 while 内递增,只需添加 $hours[$i++] 或从 $timea['hours'] 获取标签

你可能不需要for,只需初始化i = 0

while($timea = mysql_fetch_assoc($qtimea)) {
        $tapsa = $timea['tapcount'];
        $hour_label = $timea['hours'];
        echo "<tr><td>" . $hour_label . "</td><td>" . $tapsa . "</td></tr>";
}

【讨论】:

  • 谢谢,有帮助!我的小时数列是正确的。我已经针对数据库测试了这些值,这些值是正确的,但它们没有显示在正确的时间范围内。例如,15 结果应该在 18.00 和 19.00 之间,而目前在 11.00-12.00 之间......有什么想法吗?
  • 你能把你的查询结果$sqltimea贴在mysql上吗?
  • 如果我回显查询结果,我会得到“Resource id #6”...我也可以尝试在 mysql 中运行查询?
  • 对不起,我对此很陌生,我如何显示图片...查询运行并给出正确的结果,但时间都混乱了
  • 上面有问题的链接
猜你喜欢
  • 2013-07-12
  • 1970-01-01
  • 2014-11-18
  • 1970-01-01
  • 1970-01-01
  • 2014-06-14
  • 1970-01-01
  • 2019-12-29
  • 1970-01-01
相关资源
最近更新 更多