php开放日

php开放日,php,time,Php,Time,我正在建设餐厅服务,目前我正在琢磨如何展示像谷歌商务这样的开放式每日餐厅 我有桌子设计 +-----+----------+------+----------+----------+ | ref | id_resto | day | open | close | +-----+----------+------+----------+----------+ | 2 | 5 | 1 | 13:00:00 | 21:00:00 | | 5 |

我正在建设餐厅服务,目前我正在琢磨如何展示像谷歌商务这样的开放式每日餐厅

我有桌子设计

+-----+----------+------+----------+----------+
| ref | id_resto | day  | open     | close    |
+-----+----------+------+----------+----------+
|   2 |        5 |    1 | 13:00:00 | 21:00:00 |
|   5 |        5 |    2 | 13:00:00 | 21:00:00 |
|   7 |        5 |    3 | 13:00:00 | 21:00:00 |
|   9 |        5 |    4 | 13:00:00 | 21:00:00 |
|  10 |        5 |    6 | 13:00:00 | 22:00:00 |
|  11 |        5 |    7 | 14:00:00 | 21:00:00 |
+-----+----------+------+----------+----------+
第7天=星期天,1=星期一,2=星期二,3=星期三和星期一

根据我的表格,它应该被显示出来

Monday-Thursday 13:00 - 21:00
Saturday 13:00 - 22:00
Sunday 14:00 - 21:00
我尝试了一些算法,但什么也没发生-_- 有什么想法吗?
谢谢

对您的表结构做了一个小小的更改,它应该很容易实现

以下是我创建表的代码:

CREATE TABLE `daytype` (
  `id` int(11) NOT NULL,
  `description` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`id`)
);
INSERT INTO `daytype` VALUES (1,'Monday - Thursday'),(2,'Saturday'),(3,'Sunday');

CREATE TABLE `hours` (
  `ref` int(11) NOT NULL,
  `id_resto` int(11) DEFAULT NULL,
  `id_daytypes` int(11) DEFAULT NULL,
  `open` char(5) DEFAULT NULL,
  `close` char(5) DEFAULT NULL,
  PRIMARY KEY (`ref`)
);

INSERT INTO `hours` VALUES (2,5,1,'13:00','21:00'),(5,5,2,'13:00','21:00'),(7,5,3,'14:00','21:00');
这样,您就可以通过简单的连接轻松获得所需的数据:

SELECT d.description, CONCAT(open, ' - ', close) as hours FROM test.hours AS h INNER JOIN daytype AS d ON (d.id = h.id_daytypes);
输出:

这种结构的另一个好处是,如果需要,您可以为每个餐厅设置不同的休息时间和不同的展示。例如,如果一家餐厅在星期一有不同的时间,您可以在daytypes表中添加一个条目,用于星期一、星期二和星期四

总的来说,这将节省一些空间,因为您不需要为相同的每一天输入重复的信息

希望这能帮助你开始

更新:根据请求,这里有一个示例,说明如何检查今天是否有打开的内容

您可以使用一个php函数返回当前日期的所有有效日期类型的逗号分隔列表。大概是这样的:

<?php

/*
1   Monday - Thursday
2   Saturday
3   Sunday
4   Friday
5   Monday
*/

function getDayType()
{
    $dayOfWeek = date('l');
    switch($dayOfWeek)
    {
        case "Monday":
            return "1, 5"
        case "Tuesday":
        case "Wednesday":
        case "Thursday":
            return "1";
        case "Friday":
            return "4":
        case "Saturday":
            return "2";
        case "Sunday":
            return "3"
    }
}

你用Php试过了吗?所以你想让它分别显示星期一、星期四、星期六和星期天的条目吗?devpro是的,我试过了,但什么也没发生;(techdude yap,你是对的如果我使用这个表,我如何显示今天是否开放?
SELECT 
    h.id_resto
FROM
    test.hours AS h
        INNER JOIN
    daytype AS d ON (d.id = h.id_daytypes)
WHERE
    id_daytypes IN (1 , 5)
    AND (
            (HOUR(NOW()) > HOUR(open) AND HOUR(NOW()) < HOUR(close))
        OR 
            (HOUR(NOW()) = HOUR(open) AND MINUTE(NOW()) >= MINUTE(open))
        OR
            (HOUR(NOW()) = HOUR(close) AND MINUTE(NOW()) < MINUTE(close))
    );