Witam
Jak zrobić żeby tło komórki zmieniało się w zależności od czasu pozostającego do wyznaczonego terminu?
<table> <tr> <td style="width: 10%; text-align: center;">Lp</td> <td style="width: 45%; text-align: center;">Data</td> <td style="width: 45%; text-align: center;">Termin</td> </tr> <?php $czas = date("Y-m-d"); mysqli_query($connect, 'SET @i:=0'); $zapytanie = "SELECT *, @i:=@i+1 Lp FROM tabela"; $wykonaj = mysqli_query ($connect, $zapytanie); while ($wiersz=mysqli_fetch_array ($wykonaj)) function kolorczas() { if(strtotime($wiersz['termin']) <= strtotime("$czas +3 day")) echo "<td style=\"background-color:orange;\">" . $wiersz['termin'] . "</td>"; else echo "<td style=\"background-color:blue;\">" . $wiersz['termin'] . "</td>"; } { echo "<tr><td>" . $wiersz['Lp']. "</td><td>" . $czas . "</td>" . kolorczas() . "</tr>"; } ?> </table>
Hej Andrzeju,
problemem jest policzenie, ile czasu zostało do danej daty, czy też pokolorowanie komórki?
Z tego co widzę, poprawnie ustawiasz background-color w CSS, stąd zakładam, że w liczeniu daty jest trudność.
Do dat polecam klasę DateTime, której możesz używać obiektowo lub proceduralnie. Do policzenia różnicy możesz użyć metody diff:
<php $start = '2020-10-15 20:25'; $end = '2020-10-16 21:21'; $dateStart = new DateTime($start); $dateEnd = new DateTime($end); $difference = $dateStart->diff($dateEnd); // w obiekcie $difference jest zawarta różnica w czasie $difference->days; // tutaj jest liczba dni $difference->h; // tutaj godzin, z tym że gdy wartość osiągnie 24, liczba dni zwiększa się o 1 a godziny wracają do zera $roznica_w_godzinach = $difference->days * 24 + $difference->h;
Natomiast wersja z strtotime również powinna zadziałać bez problemu.
Opiszesz dokładniej, co konkretnie nie działa?