Mad_Geek 2015-04-27 15:05 采纳率: 0%
浏览 3631
已采纳

php预约功能的时间和数据库的架构问题

PHP实现某位医生的预约, 必须提前一天预约 今天凌晨24点前只能预约第二天上午10:00-21:00的医生.
假如预约了医生A 明天的10点,那么这个医生明天10点11点都不能再预约 这个怎么实现?拜托了各位前辈,小弟刚实习好不容易找到个工作 遇到这样的问题 希望各位能帮忙下

  • 写回答

5条回答 默认 最新

  • 路边摆摊的 2015-05-07 03:49
    关注

    按你上面说的,被预约时长一个小时
    最简单的,那只要记录被预约的时刻,如
    医生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即有空。

    当然,还有更复杂的调度算法,不过,我没有接触,但想来上面这个思路应该就够用了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 删除虚拟显示器驱动 删除所有 Xorg 配置文件 删除显示器缓存文件 重启系统 可是依旧无法退出虚拟显示器
  • ¥15 vscode程序一直报同样的错,如何解决?
  • ¥15 关于使用unity中遇到的问题
  • ¥15 开放世界如何写线性关卡的用例(类似原神)
  • ¥15 关于并联谐振电磁感应加热
  • ¥15 this signal is connected to multiple drivers怎么解决
  • ¥60 请查询全国几个煤炭大省近十年的煤炭铁路及公路的货物周转量
  • ¥15 请帮我看看我这道c语言题到底漏了哪种情况吧!
  • ¥66 如何制作支付宝扫码跳转到发红包界面
  • ¥15 pnpm 下载element-plus