1

伙计们

我正在创建一个 php web 应用程序,它允许管理员勾选谁已经上课。

我在数据库上有以下数据

学期开始日期、学期结束日期、上课日期和时间

例如,

5 March 2012,9th April 2012 Monday{9,12},Thursday{14,17}

我可以获得基于开始和结束日期的总周数。现在的问题在于我如何获得课程应该是的日期,比如星期一,它应该是 9 日,但是星期四?动态的。

是否有任何 php 类或任何方法?

非常感谢

4

2 回答 2

4

不要自己实现日期函数,处理日期时有很多陷阱。您可以使用strtotime通过使用以下字符串来遍历日期:strtotime("next Thursday", yourdate)

于 2012-04-10T15:40:29.290 回答
1

不确定此时是否易于更改数据格式,但我建议构建数据库的方式(这将大大简化查询您询问的信息类型)将是这样的:

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`)
)
于 2012-04-10T15:56:34.280 回答