php如何基于动态考勤系统

时间:2012-04-10 15:33:49

标签: php mysql

holla guys

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

我有关于数据库的以下数据

学期开学日期,学期结束日期,课日和时间

例如,

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

我可以获得总周数的开始和结束日期。现在的问题在于我如何得到类假设的日期,就像星期一一样,它假设是9日,但是在星期四?动态。

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

非常感谢

2 个答案:

答案 0 :(得分:3)

不要自己实现日期功能,处理日期时会有很多陷阱。您可以使用strtotime来使用以下字符串迭代日期:strtotime("next Thursday", yourdate)

答案 1 :(得分: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;

当然,如果不知道你究竟想要完成什么,我不能确定这是完全合适的。虽然您用来存储数据的格式似乎会让您的生活变得不必要(您将不同的数据点合并到一个列中;这是禁忌),所以我认为这是一种改进。

编辑:更准确地说,保存日期和期间(而不是日期和时间); e.g:

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`)
)