PHP每小时日历,运行存储在数据库中的时间戳

时间:2010-07-16 12:09:18

标签: php mysql arrays calendar

我有一个标题为'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;

我正在寻找任何方法来使这更容易,因为我希望它由于大的命中数而尽可能高效地运行。

由于

1 个答案:

答案 0 :(得分:1)

当您检索结果时,我认为您可以使用您的ORDER BY子句和日期函数按小时,然后按天排序,而不是相反。这样您就可以迭代结果并避免将数据存储在php数组中。