Czego się nauczysz?
- Pracy z datami i czasem w PHP (DateTime)
- Obliczania różnicy między datami
- Sortowania wydarzeń chronologicznie
- Tworzenia alertów i powiadomień
Stworzysz Licznik dni do wydarzenia - aplikację webową do zarządzania ważnymi datami i wydarzeniami. Użytkownik dodaje wydarzenia (np. egzamin, urodziny, wakacje), a system automatycznie oblicza ile dni pozostało do każdego z nich. Aplikacja pomaga w planowaniu i przypomina o zbliżających się terminach.
Czego się nauczysz?
W prawdziwej pracy...
Zarządzanie terminami i kalendarzami to fundament aplikacji produktywnościowych - od prostych przypomnień po zaawansowane systemy CRM i project management. Umiejętność pracy z datami jest niezbędna w każdym projekcie webowym.
Dodawanie wydarzenia Użytkownik wprowadza nazwę wydarzenia i datę. Aplikacja waliduje dane (data nie może być z przeszłości dla nowych wydarzeń).
Obliczanie dni System automatycznie oblicza ile dni pozostało do każdego wydarzenia i wyświetla tę informację przy każdym wpisie.
Lista wydarzeń Wszystkie wydarzenia są wyświetlane na liście, posortowane od najbliższego do najdalszego.
Przykładowa struktura pliku JSON:
{ "events": [ { "id": 1, "name": "Egzamin INF.03", "date": "2026-06-15", "category": "nauka", "created_at": "2026-02-13 10:30:00" }, { "id": 2, "name": "Wakacje", "date": "2026-06-28", "category": "osobiste", "created_at": "2026-02-13 10:35:00" }, { "id": 3, "name": "Urodziny mamy", "date": "2026-03-20", "category": "rodzina", "created_at": "2026-02-13 10:40:00" } ]}Wymagane funkcje:
Przykładowy scenariusz:
Ocena: 3.0Uczeń dodaje wydarzenie “Egzamin INF.03” z datą 15.06.2026. Na liście widzi: “Egzamin INF.03 - za 122 dni”. Dodaje kolejne wydarzenie i widzi obie pozycje.
Wszystko z wariantu A, plus:
Przykładowy scenariusz:
Ocena: 4.0-5.0Na liście ucznia najwyżej wyświetla się “Sprawdzian z matematyki - za 3 dni” (na czerwono). Poniżej “Urodziny mamy - za 15 dni” (na żółto). Na dole “Egzamin - minął 5 dni temu” (szary).
Wszystko z wariantu B, plus:
Przykładowy scenariusz:
Ocena: 5.0-6.0Użytkownik klika “Najbliższy tydzień” i widzi 3 wydarzenia. Jedno z nich już nieaktualne - przenosi je do archiwum. Eksportuje listę do CSV, żeby mieć backup w Excelu.
Obliczanie dni do wydarzenia:
<?php$eventDate = new DateTime('2026-06-15');$today = new DateTime('today');
$diff = $today->diff($eventDate);$days = (int)$diff->format('%r%a'); // %r daje znak + lub -
if ($days > 0) { echo "Za $days dni";} elseif ($days < 0) { echo "Minęło " . abs($days) . " dni temu";} else { echo "Dzisiaj!";}?>Walidacja daty:
<?php$date = $_POST['date'] ?? '';$eventDate = DateTime::createFromFormat('Y-m-d', $date);
if (!$eventDate) { $errors[] = 'Nieprawidłowy format daty';} elseif ($eventDate < new DateTime('today')) { $errors[] = 'Data nie może być z przeszłości';}?>Sortowanie po dacie (najbliższe najpierw):
<?php$events = json_decode(file_get_contents('events.json'), true)['events'];
usort($events, function($a, $b) { return strtotime($a['date']) - strtotime($b['date']);});?>Kolorowanie według pilności:
<?phpfunction getUrgencyClass($days) { if ($days < 0) return 'past'; // szary if ($days <= 7) return 'urgent'; // czerwony if ($days <= 30) return 'soon'; // żółty return 'normal'; // zielony}?><style>.past { color: #888; text-decoration: line-through; }.urgent { color: #dc3545; font-weight: bold; }.soon { color: #ffc107; }.normal { color: #28a745; }</style>Wykorzystaj lekcje!
Cotygodniowe spotkania podczas lekcji to idealny moment, by:
Pracuj iteracyjnie - lepiej mieć działający wariant A niż niedokończony C!