我想存储和检索一个完全不依赖于实际日期的动态每周计划。
数据将存储在这样的 MySQL 表中(不按时间排序):
(Class 和 Instructor 列将存储其他表的引用 ID,但我在这里使用了实际名称以便一目了然地阅读)
----------------------------------------------------------------------
| id | time | dayofweek | class | instructor |
----------------------------------------------------------------------
| 1 | 6:30a | 1 | Zumba | Julie |
----------------------------------------------------------------------
| 2 | 9:00a | 3 | Kickbox | Devon |
----------------------------------------------------------------------
| 3 | 11:00a | 4 | Zumba | Alex |
----------------------------------------------------------------------
| 4 | 6:30a | 4 | Dance | Karen |
----------------------------------------------------------------------
| 5 | 5:00p | 1 | R-BAR | Karen |
----------------------------------------------------------------------
| 6 | 5:00p | 6 | Dance | Karen |
----------------------------------------------------------------------
| 7 | 9:00a | 7 | Kinder | Julie |
最终输出在视觉上看起来像这样(按时间排序):
---------------------------------------------------------
| Sun | Mon | Tue | Wed | Thu | Fri | Sat |
-------------------------------------------------------------------
| 6:30a | Zumba | | | Dance | | | |
-------------------------------------------------------------------
| 9:00a | | |Kickbox| | | |Kinder |
-------------------------------------------------------------------
| 11:30a | | | | Zumba | | | |
-------------------------------------------------------------------
| 5:00p | R-BAR | | | | | Dance | |
-------------------------------------------------------------------
但我不知道如何有效地完成这项工作。我今天已经在 Google 上搜索了几个小时,并且遇到了一些看起来可能有用的帖子,但它从来都不是我想要的。
我开始考虑通过函数或其他方式为每个时间段的 7 天中的每一天运行一个单独的查询,但这对于这样一个简单的任务来说非常草率并且查询太多。显然,所有 7 天(列)将始终显示,但时间段(行)可以随时添加或删除,具体取决于当时是否有事件。
接下来,我研究了将所有内容存储在一个数组中,并将所有行与重复时间组合起来,然后逐个处理它们的日子。我不确定我会如何动态地做到这一点......
我找到了这个例子,我认为它非常接近我所需要的: PHP - Merge duplicate array keys in a multidimensional array
毕竟,我计划制作一个简单的管理页面供用户添加或删除事件。有任何想法吗?