php - 循环逻辑 PHP 出错

标签 php mysql loops date datetime

好吧,假设我有一个下表:

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/

相关文章:

mysql - 这种情况我必须使用外键的哪一种方式??

java - MySQLIntegrityConstraintViolationException : column "question_id" cannot be null error

c - 缩放二维数组 C

php - 单独模块中的 Laravel 5 Assets 和 lang 文件夹

php - 有没有办法使用 php 捕获 get 或 post 变量?

mysql - 连接mysql中不同行中的字段

java - 如何在通过循环修改数据时立即从对象访问数据

java - JAVA 中未输入 Switch case

php - FILTER_VALIDATE_EMAIL 是否使字符串可以安全地插入数据库?

php - 在 PHP 中解析本地化的日期字符串