我有一个问题,我认为有一个非常简单的解决方案,但我现在忙了12个小时,而且我不知道这个问题的解决方案。
我有一个包含多个数据的数据库。重要的数据是我在数据库中保存的时间。我想构建一个模块,提供数据08:00到17:00。例如:
08:00 available 09:00 not available 10:00 available 11:00 available 12:00 available 13:00 available 14:00 available 15:00 available 16:00 available 17:00 not available
我将使用以下代码
$mysql['avail'] = mysql_query("SELECT time FROM `module` WHERE `date` = '" . $dbdate . "' ORDER BY date");
while($avail = mysql_fetch_assoc($mysql['avail'])){
$hour = date('s',$avail['time']);
for ($i = 8;$i <= 17; $i++) {
if($hour == $i) {
echo $i.':00 not available<br />';
} else {
echo $i.':00 available<br />';
}
}
}
现在我得到以下输出:
08:00 available 09:00 not available 10:00 available 11:00 available 12:00 available 13:00 available 14:00 available 15:00 available 16:00 available 17:00 available 08:00 available 09:00 available 10:00 available 11:00 available 12:00 available 13:00 available 14:00 available 15:00 available 16:00 available 17:00 not available
无论我尝试什么,我都无法解决问题。有没有人可以帮助我?
答案 0 :(得分:5)
您必须首先获取所有可用时间,然后使用您的时间表进行一次循环,并检查每小时是否在可用小时数组中。
像这样的东西
$not_available_hours = array();
$mysql['avail'] = mysql_query("SELECT time FROM `module` WHERE `date` = '" . $dbdate . "' ORDER BY date");
while($avail = mysql_fetch_assoc($mysql['avail'])){
$not_available_hours[] = date('s',$avail['time']);
}
for ($i = 8;$i <= 17; $i++) {
if (in_array($i, $not_available_hours) {
echo $i.':00 not available<br />';
} else {
echo $i.':00 available<br />';
}
}
答案 1 :(得分:0)
您应该使用mysql HOUR
函数来获取小时。
$mysql['avail'] = mysql_query("SELECT HOUR(time) as `hour` FROM `module` WHERE `date` = '" . $dbdate . "' ORDER BY date");
while($avail = mysql_fetch_assoc($mysql['avail'])){
$hour = $avail['hour'];
for ($i = 8;$i <= 17; $i++) {
if($hour == $i) {
echo $i.':00 not available<br />';
} else {
echo $i.':00 available<br />';
}
}
}
并且您不应使用mysql
函数,而应使用mysqli
答案 2 :(得分:0)
我认为这会产生欲望结果:
$mysql['avail'] = mysql_query("SELECT time FROM `module` WHERE `date` = '" . $dbdate . "' ORDER BY date");
$notAvailable = array();
while($avail = mysql_fetch_assoc($mysql['avail'])){
$notAvailable[] = date('s',$avail['time'])
}
for ($i = 8;$i <= 17; $i++) {
if(in_array($i, $notAvailable) {
echo $i.':00 not available<br />';
} else {
echo $i.':00 available<br />';
}
}