首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php如何实现动态考勤系统

问php如何实现动态考勤系统
EN

Stack Overflow用户
提问于 2012-04-10 23:33:49
回答 2查看 1.3K关注 0票数 1

哈啦,伙计们

我正在创建一个php网络应用程序,它允许管理员勾选谁参加了课程。

我在数据库中有以下数据

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

例如,

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

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

有没有什么php类或者方法?

非常感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-10 23:40:29

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

票数 4
EN

Stack Overflow用户

发布于 2012-04-10 23:56:34

不确定在这一点上是否适合更改数据的格式,但我建议的数据库结构方式(这将极大地简化查询您询问的信息类型)将如下所示:

代码语言:javascript
复制
CREATE TABLE `student_attendance` (
  `student` INT(11) NOT NULL,
  `class` DATETIME NOT NULL,
  `attended` BOOLEAN NOT NULL,
  PRIMARY KEY (`student`,`class`)
)

然后,要查询学生参加的天数,您可以这样做:

代码语言:javascript
复制
SELECT COUNT(*) 
FROM `student_attendance` 
WHERE `student` = '1'
AND `attended` = TRUE;

当然,如果不知道你到底想要实现什么,我就不能确定这是否完全合适。尽管您用来存储数据的格式似乎会使您的工作变得不必要地困难(您正在将不同的数据点组合到单个列中;这是一个禁忌),但我认为这是一种改进。

编辑:更精确地说,保存日期和期间(而不是日期和时间);例如:

代码语言:javascript
复制
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`)
)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10091751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档