conditional formatting html table in php with time stamp comparison

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>';

}

I want to change the background of the row turned a different color is the time stamp is more than 60 minutes past the current time. any help would be much appreciated. i dont even know where to begin.

Thanks

edit: format of my time stamp "2015-07-17 19:17:31"

Answer

Solution:

Do an if to see if time is over 60 minutes and if so assign it a class with a different background color. Since you didn't clarify I'm going to assume you are using unix timestamp 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>';
}

Then add CSS to define the two classes

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

Answer

Solution:

$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>';
}

Answer

Solution:

It seems like your timestamp is a String, you need to convert your string to a Unix TimeStamp using strtotime:

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

and then substract it from the actual time, as the previous answer, to obtain the difference in seconnds. Divide it by 60 and you get it on minutes.

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

and then check if the difference is bigger than 60:

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

and then use that CSS Style ($myCSS) in your table row:

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

You need to define those two styles in your CSS file or your HTML Header like:

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

And that's it. Hope it helps.

Source