【问题标题】:How to change the cell color in php based on the given date如何根据给定日期更改php中的单元格颜色
【发布时间】:2018-04-25 08:44:30
【问题描述】:

我有一个 sql 表,用于比较三个不同案例的今天日期和项目的 Expiry_Date 并显示每个案例的相关消息,我正在尝试更改每个单元格与已识别案例相关的颜色。

例如,

案例1:如果今天的日期> Expiry_Date 单元格颜色应为红色

案例 2:如果今天的日期 = Expiry_Date,则单元格颜色应为 Yello

案例 3:如果今天的日期

我已经添加了下面的代码,但是只有case3正在执行,并且对于其他情况也给出了绿色(错误的颜色)

那么有没有办法根据它的情况改变单元格的颜色呢?

我的代码

$sql = "SELECT 
    ID,
    Item_Name,
    Expiry_Date,
    CASE 
        WHEN `Expiry_Date` < CURDATE() THEN CONCAT (`Item_Name`, ' has EXPIRED already')
        WHEN `Expiry_Date` = CURDATE() THEN CONCAT(`Item_Name`,' is going to expire today')
        WHEN `Expiry_Date` BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 1 DAY) THEN CONCAT(`Item_Name`,' will expire tomorrow')
        WHEN `Expiry_Date` > DATE_ADD(CURDATE(), INTERVAL 1 DAY) THEN CONCAT(`Item_Name`,' has not expire yet')
        ELSE 'Error processing expiration date.'
   END AS `Expiration_Message`
FROM
    test;";

$result = mysqli_query($con,$sql);
while($row = mysqli_fetch_array($result))
{      
    echo "<tr>";
    echo "<td>" . $row['ID']. "</td>";
    echo "<td>" . $row['Item_Name']. "</td>";
    if($row['Expiry_Date']<['CURDATE()']) //  green
            echo "<td style='background-color: #00FF00;'>".$row['Expiry_Date']."</td>"; 
    else if($row['Expiry_Date']>['CURDATE()'])//  red
            echo "<td style='background-color: #FF0000;'>".$row['Expiry_Date']."</td>"; 
    else if($row['Expiry_Date']==['CURDATE()']) //  yellow
            echo "<td style='background-color: #FFFF00;'>".$row['Expiry_Date']."</td>"; 
    echo "<td>" . $row['Expiration_Message']. "</td>";
    echo "</tr>";

}

My table

【问题讨论】:

  • 你知道 date('Y-m-d', strtotime($somedatetocheck)) 吗?
  • 罗尼的回答会做的工作
  • 感谢 Anil,只是想知道为什么人们不赞成它,虽然它可能是答案.. 或者至少留下评论为什么不赞成。

标签: php css sql colors


【解决方案1】:

案例1:如果今天的日期> Expiry_Date 单元格颜色应为红色

案例 2:如果今天的日期 = Expiry_Date,则单元格颜色应为 Yello

案例 3:如果今天的日期

代码:

while($row = mysqli_fetch_array($result))
{
    echo "<tr>";
    echo "<td>" . $row['ID'] . "</td>";
    echo "<td>" . $row['Item_Name'] . "</td>";
    if(strtotime($row['Expiry_Date']) < strtotime(date('Y-m-d'))) //  green
    {
        echo "<td style='background-color: #00FF00;'>" . $row['Expiry_Date'] . "</td>";
    }
    else if(strtotime($row['Expiry_Date']) > strtotime(date('Y-m-d')))//  red
    {
        echo "<td style='background-color: #FF0000;'>" . $row['Expiry_Date'] . "</td>";
    }
    else if(strtotime($row['Expiry_Date']) == strtotime(date('Y-m-d'))) //  yellow
    {
        echo "<td style='background-color: #FFFF00;'>" . $row['Expiry_Date'] . "</td>";
    }
    echo "<td>" . $row['Expiration_Message'] . "</td>";
    echo "</tr>";
}

试试这个。

date('Y-m-d', strotime($row['Expiry_Date']) 会将您的$row['Expiry_Date'] 转换为Y-m-d 格式。 date('Y-m-d') 检查当前(服务器/客户端,不确定,认为它的客户端)日期。

【讨论】:

  • 感谢您的帮助,我尝试了该代码,但没有任何改变,所有到期日期单元格仍为绿色
  • 你能帮我 var_dump $row 吗?我需要知道您的查询是否正确。
  • 是 var_dump ($result) 吗? 因为我得到的是object(mysqli_result)#4 (5) { ["current_field"]=&gt; int(0) ["field_count"]=&gt; int(4) ["lengths"]=&gt; NULL ["num_rows"]=&gt; int(9) ["type"]=&gt; int(0) } 或 var_dump ($row['Expiry_Date'])?,因为我在这种情况下得到 NULL
  • &lt;pre&gt; &lt;?php var_dump($result); ?&gt; &lt;/pre&gt;(应该是echo $row['Expiry_Date'],你看到var_dump 和echo 的区别了吗?)。我看到您的 $result 数组中没有 expiry_date,这意味着您的数据库请求不正确。请将您的查询更改为: $sql = "SELECT ID, Item_Name, Expiry_Date, FROM test;";让我知道结果;)!
  • 对不起,我没明白你的意思,Expiry_Date 已经在 sql 查询中了
猜你喜欢
  • 1970-01-01
  • 2023-01-06
  • 1970-01-01
  • 2018-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-25
  • 1970-01-01
相关资源
最近更新 更多