php - 使用 PHP/MySQL 调度脚本 - 逻辑帮助

标签 php mysql logic schedule

我希望开发一个小脚本,用户可以在其中插入他们的“日程安排”。但是,我需要一些帮助来确定如何创建数据库结构的逻辑以及如何在数据库中输入事件的“时间”。

但是,需要注意的一件事是,当用户输入他们的“日程安排”时,他们不会输入确切的日期。相反,他们将进入“星期几”。有点像“定期”约会。

例如,用户 A 可以输入以下时间表:

MWF - 上午 8:00 - 10:00 中波 - 下午 2:00 - 下午 3:00 等等……

如您所见,我正在寻找一种使用通用“星期几”的方法,不一定是确切的日期。

考虑到这一点,将其存储在数据库中的最佳方式是什么,我知道最终我可能会“查询”数据库以搜索可用时间。

我应该以毫秒还是秒为单位输入它们? “0”是星期日凌晨 12:00?

任何建议都会很棒。

谢谢!

最佳答案

首先,MySQL包含一个time data type .我强烈建议您利用它。

无论如何,对于您的 table (这是用于学术安排,但适用相同的基本思想):

DaysOfWeek
----------
DowID int
DayOfWeek varchar(10)

Users
------------------------
UserID int autoincrement
UserName varchar(50)
PassHash varbinary(100)
FirstName varchar(50)
LastName varchar(50)
DOB datetime

Semesters
----------------------------
SemesterID int autoincrement
SemesterName varchar(50)
SemesterNumber int
AcademicYear int
CalendarYear int

Classes
-------------------------
ClassID int autoincrement
ClassName varchar(50)
ClassCode varchar(25)

Schedule
----------------------------
ScheduleID int autoincrement
UserID int
SemesterID int
DowID int
ClassID int
BeginTime time
EndTime time

现在,要查看某人在星期一 1 点到 2 点之间是否有空,您需要做的就是:

select
    count(*) as classes
from
    schedule sch
    inner join users u on
        sch.userid = u.userid
    inner join semesters sem on
        sch.semesterid = sem.semesterid
where
    u.username = 'rmcdonald'
    and sem.academicyear = 2009
    and sem.semesternumber = 1
    and sch.dowid = dayofweek($mytime)
    and $mytime between sch.begintime and sch.endtime

$mytime 替换为您在那里检查的任何时间。

关于php - 使用 PHP/MySQL 调度脚本 - 逻辑帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1365506/

相关文章:

mysql - Hibernate 不回滚触发器相关的更改

javascript - 调试 15 个谜题中的无效 Action

java - 如何创建 Battleship 战舰游戏算法

php - 无法弄清楚如何从查询中获取我想要的结果

mysql - Yii2 在一侧添加带有 "%"通配符的 LIKE 条件

javascript - 如何使用php和jquery在mysql中提交多个数据

php - 报表生成器 php mysql

c - 在两列中查找匹配项并替换

javascript - Laravel:通过 min.js 文件 "Uncaught ReferenceError: HelloWeek is not defined"包含 javascript 代码

php - 消息:未定义的属性:stdClass::$amnt_paid