PHP/SQL Server:根据时间改变 <div> 颜色
Posted
技术标签:
【中文标题】PHP/SQL Server:根据时间改变 <div> 颜色【英文标题】:PHP/SQL Server: Change <div> color according to time 【发布时间】: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>
谁能帮帮我?
【问题讨论】:
【参考方案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 中执行,但这只是我。以上是关于PHP/SQL Server:根据时间改变 <div> 颜色的主要内容,如果未能解决你的问题,请参考以下文章
通过 PHP、SQL STATE IM004 连接到 SQL Server 时出错,驱动程序的 SQLAllocHandle on SQL_HANDLE_ENV 失败