1

我正在使用 PHP 和 MySQL。我有一个页面,显示由人员创建的会议,并带有查看详细信息的链接。现在我只使用一个简单的表格来显示按日期排序的所有内容。数据库中的表称为“会议”,有 3 列 -

'meetingid' (int)

“时间”(日期时间)

“创作者”(文字)

我的问题是,当创建了很多会议时,它看起来有点凌乱且难以阅读,因为它们都只是一大堆。我想按周将它们分开(从周一开始,周日结束 - 或者周日至周六,如果这样更容易的话)。我已经链接到底部的文档,显示了我目前拥有的内容(第一页)以及更像我想要的内容(第二页)。只要有预定的会议,周标签(例如 9 月 3 日 - 9 月 9 日)就需要继续。因此,如果最近一次会议是 10 月 7 日,那么显示的最后一周应该是“10 月 1 日 - 10 月 7 日”。弄清楚如何按月将它们分开似乎很容易,但我无法弄清楚如何按周进行。我假设有一些 php 日期函数会对此有很大帮助,但我可以 找不到它。希望大家能帮忙。

做这个的最好方式是什么?

我还没有决定是否要在没有会议的周显示周标签。(例如,9 月 10 日至 9 月 16 日之间没有会议。 - 显示或不显示该标签。

示例链接(无需登录谷歌) https://docs.google.com/document/d/16cvRfPmovNBsx9QQ0U5qhVoW8bo0xjEABil3wTtEurA/edit

4

2 回答 2

1

使用 date("W") 获取一年中的周数。然后您可以根据周数分隔结果。

于 2012-09-06T19:16:39.597 回答
0

不知道您的数据是如何构成的;您可以使用该date()函数返回的周数来跟踪您所在的周并以这种方式将其分解。

$currentWeekNumber = -1;
$rows = array(
    array('id' => 5, 'started_by' => 'Ben', 'when' => '2012-09-06 09:00:00'),
    array('id' => 6, 'started_by' => 'Julie', 'when' => '2012-09-07 18:00:00'),    
    array('id' => 18, 'started_by' => 'Ben', 'when' => '2012-09-18 20:00:00')
);

foreach($rows as $row) {
    $eventSeconds = strtotime($row['when']);

    $rowWeek = intval(date('W', $eventSeconds));

    if( $rowWeek !== $currentWeekNumber && $currentWeekNumber !== -1) {
        echo "----- Week Break ------\n";
    }

    $currentWeekNumber = $rowWeek;
    echo "Meeting #{$row['id']}, started by {$row['started_by']}, occurs at ".strftime('%c', $eventSeconds)."\n";
}

产生以下输出:

Meeting #5, started by Ben, occurs at Thu Sep  6 09:00:00 2012
Meeting #6, started by Julie, occurs at Fri Sep  7 18:00:00 2012
----- Week Break ------
Meeting #18, started by Ben, occurs at Tue Sep 18 20:00:00 2012
于 2012-09-06T19:21:38.947 回答