问题描述
- php预约功能的时间和数据库的架构问题
- PHP实现某位医生的预约 必须提前一天预约 今天凌晨24点前只能预约第二天上午10:00-21:00的医生.
假如预约了医生A 明天的10点那么这个医生明天10点11点都不能再预约 这个怎么实现?拜托了各位前辈小弟刚实习好不容易找到个工作 遇到这样的问题 希望各位能帮忙下
解决方案
按你上面说的,被预约时长一个小时
最简单的,那只要记录被预约的时刻,如
医生id | 日期 | 时刻 | 预约人
1 20150508 10 a1
1 20150508 13 a2
1 20150508 14 a3
1 20150508 16 a4
这个时候 a5 来了 想预约15时,只要查询 ""select * from [预约表] where 日期=20150508 and 时刻=15 and 医生=1"",如果存在记录说明被预约了
同样的,如果任务时长为 n 小时,只要把一天分成 m 个 n 小时时长的段,并编号,就可以按上面的做法。
如果更高级一点,可以内存中存一个矩阵,一个医生按上面的思路,行为医生、列为时间编号,被预约置1,然后查询对应点是否为0,为0即有空。
当然,还有更复杂的调度算法,不过,我没有接触,但想来上面这个思路应该就够用了
解决方案二:
这个,你不是描述得很清楚了吗?
最简单的就是在保存预约时判断,先判断预约时间是符合条件,再判断目标医生第二天是否有空,条件满足后保存信息。
需要记录的
1、自己预约的时间点
2、目标医生的被预约时间点
解决方案三:
给你个逻辑讲一讲吧,代码最好还是自己写,这样对自己好。
如果预约的 不是 明天10:00-21:00,返回错误提示
如果预约的明天的医生的工作时间段,与库中保存的时间段有冲突,返回错误提示
然后就可以成功预约了。
解决方案四:
每个医生有个被约的有效起始时间,如果他已经被约,这样他的能被约的有效时间起始就在第二天11点,这样就行了
解决方案五:
利用预约的时间作为条件用SQL语句筛选,直接过滤不能预约的医生