2016-03-24 7 views
1

Ich baute eine Webapp, die den Inhalt eines Ordners überprüft (Watchfolder), jetzt versuche ich die <tr></tr> Elemente basierend auf ihrer Erstellungszeit, wie wenn der Ordner vor einer Minute erstellt wurde tr Element sollte gelb sein und so weiter ...PHP Änderung css Klasse innerhalb foreach

-Code sieht wie folgt aus:

<?php 

$currentTimeFormat = date("d.m.Y H:i",$currentTime); 

echo "current time " . $currentTimeFormat; 

if (count($watchFolder) > 0) { 

    echo '<table class=\'table table-reponsive table-bordered\'>'; 

     echo '<tbody>'; 

     foreach ($watchFolder as $key => $value) { 

      $currentWatchPath = $watchFolderPath . $key; 

      if(strtotime($currentWatchPath) < strtotime('-1 minute')) { 
       $class = "redtest"; 
      } 
      if(strtotime($currentWatchPath) < strtotime('-1 hour')) { 
       $class = "bluetest"; 
      } 
      if(strtotime($currentWatchPath) < strtotime('-1 day')) { # Older than one day 
       $class = "greentest"; 
      } 

      echo '<thead class=\'thead-inverse\'> 
        <tr> 
         <th scope=\'row\' class='.$class.'>'.$key.'&nbsp;|&nbsp;Last change '.date("d.m.Y H:i", filemtime($currentWatchPath)).'</th> 
        </tr> 
        </thead>'; 

      foreach ($value as $key => $valueSub) { 

       $currentWatchPath2 = $currentWatchPath . '\\' . $key; 

       echo '<tr> 
         <td class=\'grey\'>&nbsp;&nbsp;&nbsp;&nbsp; 
         <span class="glyphicon glyphicon-arrow-right"></span>&nbsp;&nbsp;'.$key.'&nbsp;|&nbsp;Last change '.date("d.m.Y H:i", filemtime($currentWatchPath2)).'</td> 
         </tr>'; 

       foreach ($valueSub as $content) { 

        $currentWatchPath3 = $currentWatchPath2 . '\\' . $content; 

        echo '<tr> 
          <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
          <span class="glyphicon glyphicon-arrow-right"></span>&nbsp;&nbsp;'.$content.'&nbsp;|&nbsp;Last change '.date("d.m.Y H:i", filemtime($currentWatchPath3)).'</td> 
          </tr>'; 

       } 

      } 

     } 

     echo '</tbody>'; 

    echo '</table>'; 

} 
?> 

$ Watchfolder ist ein Array, das alle Ordner eines bestimmten Pfad hält.

Ich bekomme die Watchfolders (und Unterordner) und ihre Zeit, das funktioniert.

Aber die Färbung der tr Elemente basierend auf den Erstellungszeiten jedes Ordners funktioniert nicht richtig, in meinem Fall sind alle tr Elemente grün gefärbt, auch wenn ich einen neuen Ordner grün gefärbt habe, während es rot sein sollte.

Einige Ratschläge wären cool.

Also wenn Sie denken, dass Sie meinen Code verbessern können, sind Sie willkommen!

Antwort

0

Ich denke, es liegt daran,

strtotime($currentWatchPath) 

falsche kehrt in Ihrem Fall, weil Sie einen Dateipfad als Argument geben, nicht eine ‚Datetime‘ oder so ähnlich.

Und die letzte if-Anweisung

if(strtotime($currentWatchPath) < strtotime('-1 day')) 

wird immer wahr sein, so wird Ihre Klasse immer grün sein.

Werfen Sie einen Blick auf die Dateizeit ($ currentWatchPath) oder etwas ähnliches anstelle von strtotime()

Verwandte Themen