哈啦,伙计们
我正在创建一个php网络应用程序,它允许管理员勾选谁参加了课程。
我在数据库中有以下数据
开学日期、结束日期、上课日期和时间
例如,
5 March 2012,9th April 2012 Monday{9,12},Thursday{14,17}
我可以得到基于开始和结束日期的总周数。现在的问题在于,我如何获取课程的日期,比如周一,应该是9号,但是周四呢?动态的。
有没有什么php类或者方法?
非常感谢
发布于 2012-04-10 23:40:29
不要自己实现日期函数,在处理日期时有很多陷阱。您可以通过使用如下字符串使用strtotime来迭代日期:strtotime("next Thursday", yourdate)
发布于 2012-04-10 23:56:34
不确定在这一点上是否适合更改数据的格式,但我建议的数据库结构方式(这将极大地简化查询您询问的信息类型)将如下所示:
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`)
)https://stackoverflow.com/questions/10091751
复制相似问题