好吧,假设我有一个下表:
CREATE TABLE booking (
idBooking INTEGER PRIMARY KEY,
bookingDate DATE,
roomId INTEGER,
startHour TIME,
endHour TIME
);
表格有 3 条记录: enter image description here
我使用框架 codeigniter,这是我的观点:
<table border="1">
<thead>
<tr>
<th>Start Hour</th>
<th>Status</th>
</tr>
</thead>
<tbody>
<?php
$open_time = "07:00:00";
$close_time = "15:00:00";
for( $i=$open_time; $i<$close_time; $i+=3600) { ?>
<tr>
<td >
<?php $timeloop = date('H:i:s', $i); echo $timeloop; ?> </h1>
</td>
<td>
<?php
$count = count($bookingList);
for ($j=0; $j < $count ; $j++) {
$endtime1 = strtotime($timeloop)+3600;
$endtime2 = date('H:i:s', $endtime1);
if ($bookingList[$j]->startHour == $timeloop ||$bookingList[$j]->endHour == $endtime2 ) {
?> <span>Booked </span> <?php
}
else { ?> <span> Available</span>
<?php
}
} ?>
</td>
</tr>
<?php } ?>
</tbody>
所以,我想根据预订表显示可用时间,这意味着表中没有记录。 这是我的期望:
07:00:00 Available 08:00:00 Booked 09:00:00 Booked 10:00:00 Available 11:00:00 Available 12:00:00 Booked 13:00:00 Available 14:00:00 Available 15:00:00 Available
但是,循环有问题,我不知道如何定义逻辑,当表只有 1 条记录时它工作得很好, 但是,当我插入另一条记录时,出了点问题,这就是发生的事情
07:00:00 Available Available Available 08:00:00 Booked Available Available 09:00:00 Available Booked Available 10:00:00 Available Available Available 11:00:00 Available Available Available 12:00:00 Available Available Booked 13:00:00 Available Available Available 14:00:00 Available Available Available 15:00:00 Available Available Available
非常感谢您的及时回复,我已经坚持了好几天:(
最佳答案
不要使用“for”语句来遍历数据库表。使用“while”,因为您知道记录数可能会发生变化。
1) 将逻辑传递给SQL查询; 2) 用PHP执行查询;
例子:
/* open th database connection */
$mysqli = new mysqli("localhost", "my_user", "my_password", "my_database");
/* check if the connection was successful */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
/* query your database using the logic inside the query*/
$query = "SELECT * FROM booking WHERE openHour = '12:00' AND closeHour = '17:00'";
$result = $mysqli->query($query);
while($row = $result->fetch_array())
{
?>
<td><?php echo $row['openHour']; ?><td>
<td><?php echo $row['closeHour']; ?><td>
<td>
<?php
if(date('H:m:i') == $row['openHour'] OR date('H:m:i') == $row['closeHour']){
echo "Booked";
}
?>
<td>
<?php
}
?>
关于php - 循环逻辑 PHP 出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33338103/