php如何实现动态考勤系统

php如何实现动态考勤系统,php,mysql,Php,Mysql,大家好 我正在创建一个php网络应用程序,它允许管理员勾选谁参加了课程 我在数据库中有以下数据 学期开始日期、学期结束日期、上课日期和时间 比如说, 2012年3月5日,2012年4月9日周一{9,12},周四{14,17} 我可以得到基于开始和结束日期的总周数。现在的问题是,我怎么才能知道上课的日期,比如周一,应该是9号,但是周四?动态地 有什么php类或方法吗 非常感谢您不要自己实现日期函数,处理日期时有很多陷阱。您可以使用以下字符串来迭代日期:strotime(“下周四”,yourdate

大家好

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

我在数据库中有以下数据

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

比如说,

2012年3月5日
2012年4月9日
周一{9,12},周四{14,17}

我可以得到基于开始和结束日期的总周数。现在的问题是,我怎么才能知道上课的日期,比如周一,应该是9号,但是周四?动态地

有什么php类或方法吗


非常感谢您不要自己实现日期函数,处理日期时有很多陷阱。您可以使用以下字符串来迭代日期:
strotime(“下周四”,yourdate)
不要自己实现日期函数,处理日期时有很多陷阱。您可以使用以下字符串来迭代日期:
strotime(“下周四”,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;
当然,如果不知道你到底想完成什么,我不能确定这是完全合适的。虽然您用来存储数据的格式似乎会给您的生活带来不必要的困难(您将不同的数据点合并到一个列中;这是不允许的),但我认为这是一种改进

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


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

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:


为什么要以这种格式存储数据:
星期一{9,12},星期四{14,17}
??您只是问如何从字符串
星期一{9,12},星期四{14,17}
?如果是这样,请使用正则表达式。为什么要以这种格式存储数据:
星期一{9,12},星期四{14,17}
??您只是问如何从字符串
星期一{9,12},星期四{14,17}
中动态提取14和17?如果是,请使用正则表达式。非常感谢,我将首先尝试使用此函数,然后将日期转换为unix_时间戳。非常感谢,我将首先尝试使用此函数,然后将日期转换为unix_时间戳。呃,这是有道理的,但问题是它们可以在不同的日期和时间添加几个类,在那个特定的时候,我认为这是最好的方式,但现在显然不是这样!实际上,编写一个重新格式化数据的脚本,然后查询重新格式化的数据可能更容易呃,这是有道理的,但问题是他们可以在不同的日子和时间增加一些课程,在那个特定的时间,我认为这将是最好的方式,但现在显然不是这样!实际上,编写一个重新格式化数据的脚本,然后查询重新格式化的数据可能更容易