【问题标题】:conditional formatting html table in php with time stamp comparisonphp中的条件格式html表与时间戳比较
【发布时间】:2015-10-07 19:53:03
【问题描述】:
echo '<table style="width:100%"> <tr>';
echo '<td>Order</td>'; 
echo '<td>Destination</td>';
echo '<td>Location</td>';
echo '<td>Status</td>';
echo '<td>TimeStamp</td>';
echo '</tr>';
if($result) {
while($row = mysqli_fetch_assoc($result)) {
echo '<tr><td>';
    echo $row['OrderNumber'] . '';
    echo '</td><td>';
    echo $row['Destination'] . '';
    echo '</td><td>';
    echo $row['Location'] . '';
    echo '</td><td>';
    echo $row['Status'] . '';
    echo '</td><td>';
    echo $row['TimeStamp'] . '';
    echo '</td></tr>';
}
echo '</table>';

}

我想改变行的背景变成不同的颜色是时间戳超过当前时间 60 分钟。任何帮助将非常感激。我什至不知道从哪里开始。

谢谢

编辑:我的时间戳“2015-07-17 19:17:31”的格式

【问题讨论】:

    标签: php html formatting conditional


    【解决方案1】:

    执行 if 以查看时间是否超过 60 分钟,如果是,则为其分配具有不同背景颜色的类。由于您没有澄清,我将假设您使用的是 unix 时间戳 time()

    $currTime = time();
    
    if($result) {
    while($row = mysqli_fetch_assoc($result)) { 
        $calc = $currTime - $row['TimeStamp'];
        if($calc > 3600){
        $rowClass = "oldOrder";
        } else {
        $rowClass = "normalOrder";
        }
    echo '<tr class="'.$rowClass.'"><td>';
    echo $row['OrderNumber'] . '';
    echo '</td><td>';
    echo $row['Destination'] . '';
    echo '</td><td>';
    echo $row['Location'] . '';
    echo '</td><td>';
    echo $row['Status'] . '';
    echo '</td><td>';
    echo $row['TimeStamp'] . '';
    echo '</td></tr>';
    }
    

    然后添加CSS来定义这两个类

    .oldOrder{
    background-color: #ccc;
    }
    .normalOrder{
    background-color: #fff;
    }
    

    【讨论】:

    • 用以下代码解决:感谢您的回复。 $NowDT = date("Y-m-d H:i:s"); $NowRDT = strtotime($NowDT); $DateTimeNF = $row['TimeStamp']; $TimeRF = strtotime($DateTimeNF); $TimeDifference = $NowRDT - $TimeRF; $TimeDifferenceHours = $TimeDifference/3600; If ($TimeDifferenceHours > "1") { echo ''; } 其他 { 回声' '; }
    • 我会使用三元运算符来分配$rowClass。或者甚至把它内联。并使用单个回声。但我只是在吹毛求疵。
    【解决方案2】:
    $NowDT = date("Y-m-d H:i:s");
    $NowRDT = strtotime($NowDT);
    $DateTimeNF = $row['TimeStamp'];
    $TimeRF = strtotime($DateTimeNF);
    $TimeDifference = $NowRDT - $TimeRF;
    $TimeDifferenceHours = $TimeDifference/3600;
    If ($TimeDifferenceHours > "1") 
    {
    echo '<tr bgcolor="#E60000"><td>';
    }
    else
    {
    echo '<tr><td>';
    }
    

    【讨论】:

      【解决方案3】:

      您的时间戳似乎是一个字符串,您需要使用 strtotime 将您的字符串转换为 Unix 时间戳:

      $rowTime=strtotime($row['TimeStamp']);
      

      然后从实际时间中减去它,作为前面的答案,以获得以秒为单位的差异。将它除以 60 分钟即可得到。

      $currenTime=time();
      $diffSeconds=$currenTime-$rowTime;
      $diffMinutes=$diffSeconds/60;
      

      然后检查差值是否大于60:

      $myCSS="normalRow";
      if ($diffMinutes>60) { $myCSS="differentRow"; }
      

      然后在表格行中使用该 CSS 样式 ($myCSS):

      echo '<tr class="'.$myCSS.'"><td>';
      

      您需要在 CSS 文件或 HTML Header 中定义这两种样式,例如:

      <style>
      .normalRow {
      background-color: #888;
      }
      .differentRow {
      background-color: #ccc;
      }
      </style>
      

      就是这样。希望对您有所帮助。

      【讨论】:

        猜你喜欢
        相关资源
        最近更新 更多
        热门标签