php 根据日期更改背景颜色的代码

php code to change background colour based on date

您好,我有这段代码,如果日期临近到期 2 个月,它应该会更改背景颜色,但由于某种原因,它无法正常工作。我认为它只有在年份小于实际日期时才会改变。任何帮助表示赞赏。 我的代码是:

    $expires  = date("Y/m/d",(mktime(0, 0, 0, date("m")+2, date("d"), date("Y"))));
    echo ($expires."<br>");
    $dateDue = date('m/d/Y');

    $result = $db->prepare("SELECT * FROM tblitemdates ORDER BY name ");

    $result->execute();

    for($i=0; $row = $result->fetch(); $i++){

?>

<tr class="record">
<?php


if ($row["dateDue"] == NULL)
echo '<tr style="background-color:#ffffff">';
else if ($row["dateDue"]< $expires)
    echo '<tr style="background-color:#FFCC99">';
else if ($row["st1"] == NULL)
    echo '<tr style="background-color:#ffffff">';
else if ($row["st1"]< $expires)
    echo '<tr style="background-color:#FFCC99">';

  else
  echo '<tr style="background-color:#ffffff">'; ?>

此致, B

去掉多余的<tr class="record">

$expires  = date("Y/m/d",(mktime(0, 0, 0, date("m")+2, date("d"), date("Y"))));
    echo ($expires."<br>");
    $dateDue = date('m/d/Y');

    $result = $db->prepare("SELECT * FROM tblitemdates ORDER BY name ");

    $result->execute();

    for($i=0; $row = $result->fetch(); $i++){

?>

<?php
if ($row["dateDue"] == NULL)
echo '<tr style="background-color:#ffffff">';
else if ($row["dateDue"]< $expires)
    echo '<tr style="background-color:#FFCC99">';
else if ($row["st1"] == NULL)
    echo '<tr style="background-color:#ffffff">';
else if ($row["st1"]< $expires)
    echo '<tr style="background-color:#FFCC99">';

  else
  echo '<tr style="background-color:#ffffff">'; ?>

首先,我发现比较 unix 时间戳总是更好,因为在比较日期方面它是一种更容易使用的格式。

你可以用你的 expires 变量得到这个,如下所示...

$expires  = date("Y/m/d",(mktime(0, 0, 0, date("m")+2, date("d"), date("Y"))));
$expiresUnix = strtotime($expires); // This should give you the unix timestamp of your formatted date.

[ RUN DB FETCH CODE ]

$dateDueUnix = strtotime($row['dateDue']);
$st1Unix = strtotime($row['st1']);

然后在你的 if else 中...

<?php
if ($dateDueUnix == NULL)
echo '<tr style="background-color:#ffffff">';
else if ($dateDueUnix< $expiresUnix)
    echo '<tr style="background-color:#FFCC99">';
else if ($st1Unix == NULL)
    echo '<tr style="background-color:#ffffff">';
else if ($st1Unix < $expiresUnix)
    echo '<tr style="background-color:#FFCC99">';

  else
  echo '<tr style="background-color:#ffffff">'; ?>

请注意,您可能需要将 == NULL 更改为 == 0,因为我不太确定如果没有提供参数,$st1Unix 是否会进行转换。希望这能让你有所收获