伙计们
我正在创建一个 php web 应用程序,它允许管理员勾选谁已经上课。
我在数据库上有以下数据
学期开始日期、学期结束日期、上课日期和时间
例如,
5 March 2012
,9th April 2012
Monday{9,12},Thursday{14,17}
我可以获得基于开始和结束日期的总周数。现在的问题在于我如何获得课程应该是的日期,比如星期一,它应该是 9 日,但是星期四?动态的。
是否有任何 php 类或任何方法?
非常感谢
不要自己实现日期函数,处理日期时有很多陷阱。您可以使用strtotime通过使用以下字符串来遍历日期:strtotime("next Thursday", yourdate)
不确定此时是否易于更改数据格式,但我建议构建数据库的方式(这将大大简化查询您询问的信息类型)将是这样的:
CREATE TABLE `student_attendance` (
`student` INT(11) NOT NULL,
`class` DATETIME NOT NULL,
`attended` BOOLEAN NOT NULL,
PRIMARY KEY (`student`,`class`)
)
然后,要查询学生参加了多少天,您可以:
SELECT COUNT(*)
FROM `student_attendance`
WHERE `student` = '1'
AND `attended` = TRUE;
当然,如果不知道更多关于你究竟想要完成什么,我不能确定这是否完全合适。尽管您用来存储数据的格式似乎会让您的生活变得不必要地困难(您将不同的数据点组合到一个列中;这是一个禁忌),所以我认为这是一种改进。
编辑:更准确地说,保存日期和期间(而不是日期和时间);例如:
CREATE TABLE `student_attendance` (
`student` INT(11) NOT NULL,
`class_date` DATE NOT NULL,
`class_period` TINYINT(4) NOT NULL,
`attended` BOOLEAN NOT NULL,
PRIMARY KEY (`student`,`class_date`,`class_period`)
)