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

我正在寻找一个小的脚本,用户可以在其中插入他们的“时间表”.但是,我需要一些帮助来确定如何创建数据库结构以及如何在数据库中输入事件的“时间”的逻辑.

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

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

MWF-8:00 am-10:00 am
MW-2:00 pm-3:00 pm
等等…

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

考虑到这一点,最好的方法是将其存储在数据库中,因为最终我可能会“查询”数据库以搜索可用时间.

我应该输入毫秒还是秒?星期日的12:00是“ 0”吗?

任何建议都很好.

谢谢!

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

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

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替换为您在此处检查的任何时间.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


mysql中%不能表示什么
mysql中的column什么意思
mysql中asc什么意思
mysql中的where什么意思
mysql中如何求百分比
mysql中no是不是关键字
mysql中column可以省略吗
mysql中before是什么意思
mysql中主键约束和唯一约束是什么关系
mysql中的varchar是什么意思
在mysql中用来查询结果的函数是?
mysql中enum是什么意思
mysql中on是什么意思
mysql中主键约束和唯一约束怎么区分出来的
mysql中表更新数据的命令是哪个
mysql中or的用法
mysql中的unique如何实现唯一
mysql中and和or的区别
desc在mysql中什么意思
mysql中的unique是什么意思