gpt4 book ai didi

PHP获取数据库中不存在的可用值

转载 作者:行者123 更新时间:2023-11-29 02:49:12 26 4
gpt4 key购买 nike

我想获取约会网站的可用时间。我的 mySQL 表看起来像这样(带有示例):

id(AI,PK),
date(2016-06-21),
start_time(14:00:00),
end_time(14:30:00),
working(20:00:00),
provider(aaa).

我想回显 start_timeend_time 之间的可用时间。我通过以下方式实现:

$sql = "SELECT * FROM `appo` WHERE date = '2016-06-17'";
$result_set = mysql_query($sql);
while($row = mysql_fetch_array($result_set)) {
for($echodate = 11; $echodate.':00:00' < $row['working']; $echodate++) {
if($row['start_time'] > $echodate.':00:00' && $row['end_time'] > $echodate.':30:00' || $row['start_time'] < $echodate.':00:00' && $row['end_time'] < $echodate.':30:00') {
echo $echodate.':00<br>';
echo $echodate.':15<br>';
echo $echodate.':30<br>';
echo $echodate.':45<br>';
}
}
echo '<br>';
}
}

这很好用!但我的问题是:如果我在数据库中有两个或多个注册表,它会在不同的行上回显时间,如下所示:

假设我们那天有两个约会。 14:00一场,14:30结束,16:00一场,16:30结束。

我的脚本会这样回应:

11:00
11:15
11:30
11:45
12:00
12:15
12:30
12:45
13:00
13:15
13:30
13:45
15:00
15:15
15:30
15:45
16:00
16:15
16:30
16:45
17:00
17:15
17:30
17:45
18:00
18:15
18:30
18:45
19:00
19:15
19:30
19:45

11:00
11:15
11:30
11:45
12:00
12:15
12:30
12:45
13:00
13:15
13:30
13:45
14:00
14:15
14:30
14:45
15:00
15:15
15:30
15:45
17:00
17:15
17:30
17:45
18:00
18:15
18:30
18:45
19:00
19:15
19:30
19:45

现在,问题来了。我想对它们求和并只显示一列。我不太擅长 SQL 查询。如果有办法(PHP 或 SQL)做到这一点,我很乐意听到!

非常感谢您的宝贵时间。

最佳答案

不确定如何直接处理数据库查询,因为您有多个条目。但是你可以用一个循环收集数组中的所有条目,然后在另一个循环中检查所有条目,就像这样,不是吗?也许不是最快的方法,而是一种解决方案。

$sql = "SELECT * FROM `appo` WHERE date = '2016-06-17'";
$result_set = mysql_query($sql);

$working = null;
$blockedEntries = array();

while($row = mysql_fetch_array($result_set)) {
$working = $row['working'];
array_push($blockedEntries, array('start'=>$row['start_time'],'end'=>$row['end_time']));
}

for($echodate = 11; $echodate.':00:00' < $working; $echodate++) {
$entryFound = false;
foreach($blockedEntries as $entry) {
if(!($entry['start'] > $echodate.':00:00' && $entry['end'] > $echodate.':30:00' || $entry['start'] < $echodate.':00:00' && $entry['end'] < $echodate.':30:00')) {
$entryFound = true;
break;
}
}
if($entryFound == false) {
echo $echodate.':00<br>';
echo $echodate.':15<br>';
echo $echodate.':30<br>';
echo $echodate.':45<br>';
}
}

此代码未经测试,但我想,我想要实现的目标变得清晰起来。working 可以在条目中有所不同吗?

关于PHP获取数据库中不存在的可用值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37937734/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com