【发布时间】:2018-01-29 06:16:21
【问题描述】:
目前我正在开发一个小型预订系统,以创建已预订时间段的概览。
在我的数据库中,预订信息是这样保存的:
_______________________________________________________________
|id|user_id| starttime | endtime |facilityID|
---------------------------------------------------------------
|1 | 100|2017-08-21 21:00:00|2017-08-21 22:00:00| 11|
---------------------------------------------------------------
现在我想构建一个 HTML 表格,显示当天的时间表,也代表所有空闲时间段。
<table>
<thead>
<th>Time</th>
<th>Facility #11</th>
<th>Facility #12</th>
</thead>
<tr>
<td>08:00</td>
<td>09:00</td>
...
<td>21:00</td>
<td>22:00</td>
</tr>
<tr>
<td></td>
<td></td>
...
<td>User 100</td>
<td></td>
</tr>
</table>
Time Facility #11 Facility #12
08:00 09:00 21:00 22:00
User 100
要自动填充表格,我认为最好是 创建一个关联数组,其中包含所有可能的开始时间作为键,预订信息作为值(如果存在)。
array(xy) {["08:00"][1]=>string(0) "" [2]=>string(0) "" ["09:00"][1]=>string(0) "" [2]=>string(0) "" ... ["21:00"] [1]=>string(3) "100" [2]=>string(2) "11" ... }
因此,我创建了两个要合并为一个的数组。
数组 1 - 开始时间
array1 = array();
for ($hours = 8; $hours <= 22; $hours++) {
for ($m = 0; $m < 60; $m += 60) {
$starttime_html = sprintf('%02u:%02u', $hours, $m);
$array1[$starttime_html]='';
}
}
数组 2 - 预订
array2 = array();
$statement = $pdo->prepare("SELECT id, user_id, starttime, facility_id FROM mpbs_bookings WHERE starttime >= '2017-08-21 00:00:00'");
$statement->execute(array($id));
while($row = $statement->fetch()) {
$starttime_currentday = explode(" ",$row['starttime']);
$starttime_curr_hm = substr($starttime_currentday[1],0,5);
array_push($array2, array($starttime_curr_hm, $row['facility_id'], $row['user_id']));
}
现在我找不到组合这两个数组的方法。 除此之外,如果有任何关于如何实现我的目标的建议,我都会很高兴。
这是两个数组的内容:
print_r(array1);
Array ( [08:00] => [09:00] => ... => [21:00] => [22:00]=> )
print_r(array2);
Array ( [0] => Array ( [0] => 18:00 [1] => 6 [2] => 22 ) [1] => Array ( [0] => 19:00 [1] => 4 [2] => 11 ) [2] => Array ( [0] => 20:00 [1] => 2 [2] => 5 ) [3] => Array ( [0] => 20:00 [1] => 9 [2] => 8 ) [4] => Array ( [0] => 21:00 [1] => 11 [2] => 34 ) )
提前致谢。
拉尔斯
【问题讨论】:
-
你需要第二个数组做什么?只需使用嵌套循环来输出您的日期和时间,并在内部检查您的数据数组中是否有当前日期和时间的条目......如果有,则输出数据,否则“无”作为当前表的内容细胞...
-
我同意 CBroe 的观点,你真的不需要第一个数组。但是,如果您坚持使用它,您可以使用
array_merge函数来实现您想要的。 php.net/manual/en/function.array-merge.php -
嘿,谢谢你的cmets。我正在尝试这两个建议,但我还没有达到我的目标......我在 PHP 编程方面不是很有经验。
-
能否请
print_r($array1)和print_r($array2)在您的OP 中发帖?只需要2或3条数据而不是完整的集合。 -
我在原帖中添加了
print_r($array1)和print_r($array2)。