Попытка изменить цвет таблицы, если заданное время равно или больше текущего времени

#php #html #css

#php #HTML #css

Вопрос:

У меня есть форма, в которой вы можете ввести заданное время, например, 12:30.

По умолчанию цвет таблицы синий, но я хочу, чтобы он менял цвет, если текущее реальное время равно 12:30 или выше (пример: 12: 40).

Мне нужно извлечь заданное время из базы данных (я уже справился с этим), но следующая часть — получить текущее время и, если оно равно или больше времени ввода, изменить цвет всей таблицы

(Inntid — это значение, в котором вы вводите свое собственное время)

HTML:

 <table>
    <tr>
        <th>Båt ut</th>
        <th>Båt inn</th>
        <th>Båtnr</th>
        <th>Fornavn</th>
        <th>Etternavn</th>
        <th>Tid</th>
        <th>Kr</th>
    </tr>
  

CSS:

 table {
    color: blue;
outline-style: solid;
width: 100%;
font-family: monospace;
font-size: 25px;
text-align:left;

}

  th {
color: red;
font-family: monospace;
font-size: 25px;
text-align:left;
  }
  

PHP:

 $sok = @$_POST['searchh'];
$sql = "SELECT utleid, inntid, baatnr, fornavn, etternavn, tid, kr FROM     utleie WHERE baatinn = '0' ORDER BY id desc";

$result = $conn-> query($sql);


if ($result-> num_rows > 0) {
    while ($row = $result-> fetch_assoc()) {
        echo "<tr><td>". 
        $row["utleid"] ."</td><td>".
        $row["inntid"] ."</td><td>".
        $row["baatnr"] ."</td><td>". 
        $row["fornavn"] ."</td><td>". 
        $row["etternavn"] ."</td><td>". 
        $row["tid"] ."</td><td>".
        $row["kr"] ."</td></tr>"; 
    }
echo "</table>";
}
else {
    echo "0 results";
}

echo $row;

$conn-> close();

?>

</table>
  

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

1. Вы пробовали использовать JavaScript для этого? Я бы так поступил

2. Я понял, что мне пришлось использовать javascript. Пробовал что-то, но потерпел неудачу: P

3. Для этого вам не нужен JS. Используя PHP для этого, вы устанавливаете класс по мере загрузки страницы и не зависите от рендеринга частей таблицы после ее загрузки. Я бы сказал, что использование JS требует больше усилий, чем выполнение этого при загрузке результатов в PHP.

Ответ №1:

Определите свой класс CSS таким, каким вы хотели бы, чтобы он был, если условие истинно, затем проверьте, равно ли время $row['tid'] текущей дате или больше — если true, добавьте этот класс в свой td элемент.

CSS был бы чем-то вроде

 .future_time {
    background-color: red;
}
  

И ваш PHP был бы примерно таким,

 <?php 
$sok = @$_POST['searchh'];
$sql = "SELECT utleid, inntid, baatnr, fornavn, etternavn, tid, kr FROM utleie WHERE baatinn = '0' ORDER BY id desc";

$result = $conn-> query($sql);


if ($result-> num_rows > 0) {
    echo '<table>';
    $now = new DateTime();
    while ($row = $result-> fetch_assoc()) {
        $tid = new DateTime($row["tid"]);
        $tid_class = $tid >= $now ? 'future_time' : '';
        ?>
        <tr>
            <td><?php echo $row["utleid"]; ?></td>
            <td><?php echo $row["inntid"]; ?></td>
            <td><?php echo $row["baatnr"]; ?></td>
            <td><?php echo $row["fornavn"]; ?></td>
            <td><?php echo $row["etternavn"]; ?></td>
            <td class="<?php echo $tid_class; ?>"><?php echo $tid ?></td>
            <td><?php echo $row["kr"]; ?></td>
        </tr>
        <?php 
    }
    echo "</table>";
} else {
    echo "0 results";
}
$conn-> close();
  

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

1. Хм, похоже, не сработало. Может ли это быть потому, что DateTime () получает больше значений, чем просто часы и минуты. Или я ошибаюсь?

2. DateTIme Класс довольно умный. Каково фактическое значение $row['tid'] , в каком формате оно?

3. И когда вы говорите «похоже, не сработало», вам нужно быть немного более конкретным. Что происходит, появляются ли какие-либо ошибки (если нет, вы их проверяете и регистрируете?)

4. Мне нужно было идти на работу, но я получил длинный код ошибки. Я проверю, когда приду домой.

5. Как вы можете видеть из этой изолированной среды , DateTime довольно умен и вычислит, что вы указываете ему только время (и по умолчанию это будет дата 1 января 1970 года, но это не имеет значения). Покажите вашу ошибку, без этого невозможно помочь .. 🙂