Нужно проверить дату и время и добавить класс в мой div

#php

#php

Вопрос:

  foreach($this->connection->query($sql) as $row) {

                     $class = "";
                     if($row['datum'] > date("Y-m-d") amp;amp; $row['tijd'] > date("H:i:s")) { $class = "toekomst"; }
                     if($row['datum'] == date("Y-m-d") amp;amp; $row['tijd'] == date("H:i:s")) { $class = "vandaag"; }
                     if($row['datum'] < date("Y-m-d") amp;amp; $row['tijd'] < date("H:i:s")) { $class = "verleden"; }

                     var_dump($class);
                     $output .= "<tr class='$class'>";
                          $output .= "<td>";
                               //Rotate date from sql to dutch notation
                               $datum   = $row['datum'];
                               $dag     = substr($datum, 8, 2);
                               $maand   = substr($datum, 5, 2);
                               $jaar    = substr($datum, 0, 4);
                               $datum   = $dag . "-" . $maand . "-" . $jaar;

                               $output .= $datum;
  

я думаю, что у меня почти получилось, но все еще не работает идеально, если я сброшу класс, который он мне дает

 string(0) "" string(8) "verleden" string(0) "" string(0) "" string(0) "" string(0) "" string(0) "" string(0) "" string(0) "" string(0) "" string(8) "verleden" string(0) "" string(0) "" string(8) "toekomst" string(8) "toekomst"
  

Комментарии:

1. Похоже, вместо if($row['datum'] == date("Y-m-d H:i:s")) того, чтобы вам нужно что-то вроде if($row['datum'] == date("Y-m-d") amp;amp; $row['tijd'] == date("H:i:s"))

2. Зачем вам для этого два разных столбца? Просто есть один столбец datetime.

3. Я думаю, что я все понял @Amunium теперь все они белые, без каких-либо подсказок?

4. @Qirel это школьный приказ: P я не могу изменить это дерьмо

5. Facepalm , на мой взгляд, это довольно плохое обучение, но все в порядке. После выполнения условий выполните дамп $class , чтобы посмотреть, что в нем содержится, это то, что вы ожидаете?

Ответ №1:

Создайте два объекта DateTime и сравните их в ваших условиях. Объекты DateTime можно сравнить, чтобы определить, какой из них самый большой (в зависимости от даты и времени).

Предпочтительно, чтобы у вас был один столбец date , а не разделенный на два разных столбца.

 $now = new DateTime();
$date = new DateTime($row['datum']." ".$row['tijd']);

if ($now > $date) {
    $class = 'toekomst';
} elseif ($now == $date) {
    $class = 'vandaag';
} elseif ($now < $date) {
    $class = 'verleden';
}
  

Ответ №2:

 if($row['datum'] > date("Y-m-d")) { $class = "toekomst"; }
if($row['datum'] == date("Y-m-d")) {
    if($row['tijd'] > date("H-i-s")) {$class = "vandaag"; }
else{ $class = "verleden"; }}
  

Комментарии:

1. Пожалуйста, добавьте некоторые пояснения к вашему коду, чтобы другие могли извлечь из него уроки.