我有一个标题为'my_cal'的MySQL表,其中包含一个标题为'start_time'的列,用于日历中的特定事件。
项目添加到数据库的方式,没有重叠事件。 也可能没有特定日期/时间的事件,在这种情况下,我们将其留空或放空值。
我的问题在于每天按顺序运行00:01 AM到23:59 PM会很容易,但我希望得到以下数据:
周一00:00,周二00:00,周三00:00等等
周一01:00,周二01:00,周三01:00等等
周二02:00,周二02:00,周二02:00等等
这是建立一个25行的表(一天24小时+标题1)和8列(一周7天+ 1小时标题)
以下是HTML表结构的日历应如何显示的示例: http://www.wmnf.org/programs/grid
我试图让它发挥作用, 运行MySQL结果,并将其保存为 $数据[$ hour_of_the_day] [$ DAY_OF_THE_WEEK]
然后我会为每小时递归while()循环,然后每天,
$hour=0;
while($hour > 24)
{
$day=0;
while($day > 8)
{
if(isset($data[$hour][$day]))
{ echo "event"; }
$day++;
}
hour++;
}
我相信这可能让我感到高兴,但它似乎并不优雅。
我还希望日历开始时间是早上6点,而不是凌晨12点。 我希望今天列出的第一天 - 3(今天将日历置于中心位置)
I.e:
$calendar_begin_day = date("j", mktime()) - 3;
我正在寻找任何方法来使这更容易,因为我希望它由于大的命中数而尽可能高效地运行。
由于
答案 0 :(得分:1)
当您检索结果时,我认为您可以使用您的ORDER BY子句和日期函数按小时,然后按天排序,而不是相反。这样您就可以迭代结果并避免将数据存储在php数组中。