我正在尝试重新使用PHP,但我真的在努力解决这个问题。 我正在建立一个预订网球场的预订系统。用户可以在特定时间查看时间以及法院是否被预订。 预订存储在MySQL表中,只有两列:datetime和预订它的用户的id。 我可以检索这样的数据:
$sth = $this->dbh->prepare('SELECT bookingDate, booked_by FROM Court1 WHERE bookingDate LIKE ?');
$sth->execute(array("%$time%"));
// Array to hold the bookings
$getCourt1 = array();
//Getting the data from db
while($r=$sth->fetch()){
$courtData[0] = substr($r['bookingDate'], 10, 12);
$courtData[1] = $r['booked_by'];
array_push($getCourt1, $courtData);
}
我的想法是将检索到的数据与预定义的数组“合并”,保留可能的时间来预订法庭。
$base = array(array('08:00:00',''), array('09:00:00', ''), array('10:00:00', ''), array('11:00:00', ''), array('12:00:00', ''), array('13:00:00', ''), array('14:00:00', ''), array('15:00:00', ''), array('16:00:00', ''), array('17:00:00', ''), array('18:00:00', ''), array('19:00:00', ''), array('20:00:00', ''));
原因是我需要显示预订时间,即使他们没有被预订。 我尝试了几种方法,但这是我最接近的方法:
$aCourt1 = array_replace($base, $getCourt1);
将合并后的数组返回给控制器,控制器构建html,然后将其作为变量传递给视图,如下所示:
$aCourt1 = $booking->showBookings($time);
$court1 = '
<tr>
<td class="courtTime">'.$aCourt1[0][0].'</td>
<td class="courtBook '.$aCourt1[0][1].'" data-target="#confirmBooking">'.$aCourt1[0][1].'</td>
</tr>
<tr>
<td class="courtTime">'.$aCourt1[1][0].'</td>
<td class="courtBook '.$aCourt1[1][1].'" data-target="#confirmBooking">'.$aCourt1[1][1].'</td>
</tr>
<tr>
<td class="courtTime">'.$aCourt1[2][0].'</td>
<td class="courtBook '.$aCourt1[2][1].'" data-target="#confirmBooking">'.$aCourt1[2][1].'</td>
</tr>
<tr>
<td class="courtTime">'.$aCourt1[3][0].'</td>
<td class="courtBook '.$aCourt1[3][1].'" data-target="#confirmBooking">'.$aCourt1[3][1].'</td>
</tr><tr>
<td class="courtTime">'.$aCourt1[4][0].'</td>
<td class="courtBook '.$aCourt1[4][1].'" data-target="#confirmBooking">'.$aCourt1[4][1].'</td>
</tr>
<tr>
<td class="courtTime">'.$aCourt1[5][0].'</td>
<td class="courtBook '.$aCourt1[5][1].'" data-target="#confirmBooking">'.$aCourt1[5][1].'</td>
</tr>';
该表显示正常,但是首先显示特定日期的条目,然后其余时间按时间顺序显示。 我已经尝试了大多数数组函数并使它通过循环工作,但到目前为止我一直没有成功。我必须离开某个地方,但不确定在哪里,所以希望有人可以给我建议。提前致谢。 PS:我计划使用布尔值来检查时间段是否已被预订,但问题是我试图避免为每天创建一个完整时间表,并且只使用每个法庭按日期时间索引的一个表。也许有更好的方法来建立默认表而不是合并数组?