2016-03-24 3 views
1

Я построил webapp, который проверяет содержимое папки (watchfolder), сейчас Я пытаюсь покрасить элементы <tr></tr> на основе их времени создания, например, если папка была создана минуту назад, тр элемент должен быть желтым и так далее ...Php change css класс внутри foreach

код выглядит следующим образом:

<?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 массив, который содержит все папки определенного пути.

Я получаю патроны (и подпапки) и их время, которое работает.

Но окраска элементов tr в зависимости от времени создания каждой папки не работает должным образом, в моем случае все элементы tr окрашены в зеленый цвет, даже если я создаю новую папку, она будет окрашена в зеленый цвет, тогда как она должна быть красной.

Некоторые советы были бы крутыми.

Таким образом, если вы считаете, что можете улучшить свой код, добро пожаловать!

ответ

0

Я думаю, это потому, что

strtotime($currentWatchPath) 

возвращает ложь в вашем случае, потому что вы даете FilePath в качестве аргумента, а не «DateTime» или что-то подобное.

И последнее, если заявление

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

всегда будет правдой, так что ваш класс всегда будет зеленым.

Посмотрите на файлmtime ($ currentWatchPath) или что-то вроде вместо strtotime()

Смежные вопросы