【问题标题】:php/mysql display number of days left until a date?php/mysql 显示距离某个日期还剩多少天?
【发布时间】:2014-05-29 21:09:30
【问题描述】:

我正在使用这个脚本来通知您距离特定日期还有多少天,在我的数据库中有一个名为“insurance_date”的表格,它采用 DATETIME 格式并且是唯一的到期日期。

然后我的脚本会告诉用户距离该日期还有多少天,即距离保险到期还有 4 天,或者距离保险到期还有 3 天。

它还使用红色或绿色交通灯指示器,因此如果到期日为 7 天或以下,它将显示红色,否则如果 8 天或更多天,它将显示绿色。

目前脚本运行良好,但最多只有“2 天”,然后脚本假设说“保险明天到期,如果还有 1 天,或者说“今天”,如果到期日是今天的日期。

谁能告诉我我做错了什么,谢谢

代码:

 <?php include 'config.php';
     $data = mysql_query("SELECT *, TIMESTAMPDIFF(DAY, insurance_date, NOW()) AS expire_date FROM supplier_stats") 
     or die(mysql_error()); 

     echo "<table class=\"table\" style=\"width:900px;  font-family: 'Lucida Grande', Tahoma, Verdana, Arial, sans-serif;
     font-size:11px;\" >

<tr>
<td style=\"width:150px;\">ID:</td><td>Company Name:</td><td>Note:</td><td>Status:</td></tr>";


     while($row = mysql_fetch_array( $data )) { 
       $days = $row['expire_date'] -1;

       echo "<tr><td style=\"width:150px;\"><p>".$row['id'] . "</p></td>"; 
       echo "<td style=\"width:150px;\"><p>".$row['company_name'] . "</p></td>"; 

       if ($days > 0) {
            echo "<td style=\"width:150px;\"><p>Insurance expires in <font color=\"red\">{$row['expire_date']} day(s)!</font></p></td>"; 
        } else {
          $when = $days*-1;           

          echo "<td style=\"width:150px;\"><p>Insurance expires";

          if ($when > 1){
              echo " in {$when} days</p></td>";
          }

          if ($when >= 8){
            echo "<td style=\"width:150px;\"><div class=\"green_light\"></div></td>";
          }

          if ($when <= 7){
            echo "<td style=\"width:150px;\"><div class=\"red_light\"></div></td>";

          } elseif ($when > -1) {
            echo " tomorrow</p></td>";
          } elseif ($when === 0) {
            echo " today</p></td>";
          }
        }

        echo "<tr>";
      }

      echo "</table>"; //Close the table in HTML
    ?>

【问题讨论】:

  • 以防万一新闻没有传到地球的某些角落,不推荐使用mysql,使用mysqli

标签: php mysql datetime


【解决方案1】:

我不知道您在数据库中存储了什么,但假设您存储的是保险到期日期的时间戳,我会这样做。

$expiry_date=$row['expire_date'];
$current_date=time();
$seconds_to_expire=$expiry_date-$current_date;
$days_to_expire=floor($seconds_to_expire/86400);

if($days_to_expire<=0)
{
echo "Expired";
}
else if($days_to_expire==1)
{
echo "Expires tomorrow";
}
else if($days_to_expire==2)
{
echo "Expires in two days";
}
else
{
echo "Expires in ".$days_to_expire." days";
}

【讨论】:

  • 顺便说一句。你不应该把样式放在 html 中。
  • 他已经和mysql有秒差了TIMESTAMPDIFF(DAY, insurance_date, NOW())你们为什么要在php中重新计算?
猜你喜欢
  • 2012-08-13
  • 1970-01-01
  • 2014-04-13
  • 1970-01-01
  • 2011-11-20
  • 1970-01-01
  • 2020-02-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多