【问题标题】:PHP/SQL Server: Change <div> color according to timePHP/SQL Server:根据时间改变 <div> 颜色
【发布时间】:2020-01-06 21:01:54
【问题描述】:

我创建了一个用于预订房间的 PHP 页面。在该预订中,每个会议室都有一个调度程序。调度器按天查看,时间格式为24小时。

所以在我的 SQL 数据库中,时间有两列,分别是“StartTime”和“EndTime”。

假设现在的时间是 2019-09-04 09:26:00.000,那么预订时间是从 'StartTime' = 2019-09-04 06:00:00.000 到 2019-09-04 结束'EndTime' 10:00:00.000,div 颜色为绿色,因为预定正在运行。

但如果现在是 2019-09-04 14:00:00.000,则 div 颜色将变为灰色,因为会议已经过去。

以下只是我的简单测试代码

<html>
<thead>
</thead>
<tbody>
<?php 

    require_once('configPDO.php');
    $query = $conn->query("SELECT * FROM booking ORDER BY Book_No DESC");
    while($row = $query->fetch(PDO::FETCH_ASSOC)){
        $end = $row['EndTime'];

        if($end == GETDATE()){
            $color="background-color:green";
        }
        else if ($end > GETDATE()){
            $color="background-color:blue";
        }else{
            $color="background-color:grey";
        }

        echo "<div style='$color'>".$end."</div><br>";
    }

?>

</tbody>
</html>

谁能帮帮我?

【问题讨论】:

    标签: php css sql sql-server


    【解决方案1】:

    这个更容易处理。获取 sql 查询中的逻辑。

     <?php 
    
        require_once('configPDO.php');
        $query = $conn->query("SELECT *, case when getdate() between StartTime and EndTime then '1' when StartDate > getdate() then '2' else '0' end as rColor FROM booking ORDER BY Book_No DESC");
            while($row = $query->fetch(PDO::FETCH_ASSOC)){
        $rColor = $row['rColor'];
    
    
        if($rColor == "1"){
            $color="background-color:green";
        }
        else if ($rColor  == "2"){
    
            $color="background-color:blue";
    
        }else{
            $color="background-color:grey";
        }
    
        echo "<div style='$color'>".$row['EndTime']."</div><br>";
    
        }
    ?>
    

    注意:如果我们的EndTime列不是datetime,在对getdate()current_date()(MySQL)进行逻辑运算之前先将其强制转换

    【讨论】:

    • 如果会议正在运行,则div为蓝色,当会议尚未开始时,它也是蓝色的,但如果会议已经通过,它将变为灰色。你能修复你的代码吗?
    • 更新到 EndTime > getdate() 或 StartTime > getdate(),所以会是蓝色
    • 现在试试,我只换了绿色的。尝试先回显 $rColor 并告诉我输出
    • 解决!!但是为什么需要在查询中做条件呢?
    • 因为就像编程中的几乎所有事情一样,解决问题的方法不止一种。我主张从查询中删除逻辑并在代码所属的 PHP 中执行,但这只是我。
    猜你喜欢
    • 2014-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-13
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多