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))
);