使用PHP根据数据库条目突出显示表中的单元格

时间:2016-01-21 22:42:40

标签: php html mysql sql html-table

我正在尝试在我的网页上显示各种时间表。我需要使用PHP来突出显示表格单元格,具体取决于它们是否具有今天日期的数据库条目。我目前有一张桌子,上面有房间,下面是时间,如下所示:

echo "<table border-1>
    <tr>
        <th></th>
        <th>B-12</th>
        <th>G.05</th>
        <th>G.06</th>
        <th>1.04</th>
        <th>1.05</th>
        <th>1.06</th>
        <th>2.04</th>
        <th>2.05</th>
        <th>2.06</th>
        <th>3.04</th>
        <th>3.05</th>
        <th>3.06</th>
    </tr>

    <tr>
        <th>9.00</th>
        <td></td>
    </tr>
    <tr>
        <th>9.30</th>
        <td></td>
    </tr>
    <tr>
        <th>10.00</th>
        <td></td>
    </tr>
    <tr>
        <th>10.30</th>
        <td></td>
    </tr>";

我需要读取数据库中的条目并根据输入日期在正确的房间列和正确的时间行中突出显示相应的单元格, like this

有没有办法在PHP中执行此操作?我错了吗?我是PHP的新手,所以我不完全确定什么是实现我需要的最佳方法。

我到处寻找解决方案,但没有找到回答我的问题。如果有人有任何想法或可以告诉我最好的方法,我会非常感激。

1 个答案:

答案 0 :(得分:1)

如果你质疑更多关于如何与mysql交互或如何在每个房间显示占用/可用性,我仍然有点困惑。

我认为是后者。我还假设您知道如何从mysql获取数据,而您只需要了解如何显示占用率。

<?php

$roomsAvailability = [
    '1' => ['9:30', '10:30'],
    '2' => ['10:00'],
    '3' => ['9:00', '11:00'],
];

$times = ['8:30', '9:00','9:30', '10:00', '10:30',  '11:00'];

?>
<style>
table, th, td {
    margin:5px;
    border: 1px solid black;
}
.available {
    background-color: lightblue;
}
</style>
<table>
    <tr><th>&nbsp;</th><th>g1</th><th>g2</th><th>g3</th></tr>
<?php

foreach($times as $time)
{?>
    <tr>
    <?php
        echo "<td>$time</td>";
        foreach($roomsAvailability as $roomNumber => $roomAvailability)
        {
            if(in_array($time , $roomAvailability))
            {
                echo "<td class='available'>&nbsp;</td>";
            }
            else{
                echo "<td class='notAvailable'>&nbsp;</td>";
            }
        }
    ?>
    </tr>
<?php
}

?>
</table>

在上面的脚本中,您可以看到我如何表示房间变量的可用性(假设您从数据库中获取此数组)。此外(例如业务/时段的时间)也在数据库中。

一般来说,在数据库中,你会得到关系,并且我会从答案中跳过更精细的内容。

该脚本会显示一个类似于您在问题中添加的表格,其中的单元格分配了标有浅蓝色背景的房间。

您可以在PHP Fiddle上复制并运行它以查看输出。

如果您正在寻找

,请告诉我