Czego się nauczysz?
- Pracy z datami i obliczania wieku (w latach i miesiącach)
- Zarządzania statusami i ich zmianami
- Filtrowania danych po różnych kryteriach
- Generowania raportów i statystyk
Stworzysz Rejestr sprzętu domowego - aplikację webową do ewidencjonowania urządzeń AGD i RTV. Użytkownik dodaje sprzęt z nazwą, datą zakupu i aktualnym statusem (działa/w naprawie/do wymiany). System automatycznie oblicza wiek każdego urządzenia i pomaga planować wymiany lub naprawy.
Czego się nauczysz?
W prawdziwej pracy...
Systemy inwentaryzacji i zarządzania zasobami to podstawa w każdej firmie. Podobne aplikacje służą do śledzenia sprzętu IT, maszyn przemysłowych czy floty samochodowej. Umiejętność tworzenia rejestrów z automatycznymi obliczeniami jest bardzo ceniona.
Dodawanie sprzętu Użytkownik wprowadza nazwę urządzenia (np. “Lodówka Samsung”), datę zakupu oraz status sprawności. Opcjonalnie może dodać kategorię (AGD/RTV/inne).
Lista urządzeń Wszystkie urządzenia wyświetlane są w tabeli z automatycznie obliczonym wiekiem i kolorowym statusem.
Obliczanie wieku System automatycznie pokazuje jak stary jest dany sprzęt (np. “2 lata i 3 miesiące”).
Przykładowa struktura pliku JSON:
{ "devices": [ { "id": 1, "name": "Lodówka Samsung", "category": "AGD", "purchase_date": "2023-05-15", "status": "working", "notes": "Gwarancja do 2026", "created_at": "2026-02-13 10:30:00" }, { "id": 2, "name": "Telewizor LG 55\"", "category": "RTV", "purchase_date": "2022-11-20", "status": "working", "notes": "", "created_at": "2026-02-13 10:35:00" }, { "id": 3, "name": "Pralka Bosch", "category": "AGD", "purchase_date": "2020-03-10", "status": "repair", "notes": "Wymiana pompy", "created_at": "2026-02-13 10:40:00" } ]}Wymagane funkcje:
Przykładowy scenariusz:
Ocena: 3.0Użytkownik dodaje lodówkę kupioną 15.05.2023 że statusem “działa”. Na liście widzi: “Lodówka Samsung | Wiek: 2 lata 9 mies. | Status: Działa”. Dodaje kolejne urządzenia.
Wszystko z wariantu A, plus:
Przykładowy scenariusz:
Ocena: 4.0-5.0Pralka się zepsuła - użytkownik zmienia jej status z “działa” na “w naprawie” (żółty kolor). Filtruje listę pokazując tylko urządzenia “w naprawie” - widzi jedną pralkę do zajęcia się.
Wszystko z wariantu B, plus:
Przykładowy scenariusz:
Ocena: 5.0-6.0Użytkownik generuje raport: “Średni wiek sprzętu: 3,2 lat. Najstarsze: Pralka (5 lat 11 mies.) - rozważ wymianę!”. Eksportuje listę do CSV dla ubezpieczyciela.
Obliczanie wieku sprzętu:
<?phpfunction getDeviceAge($purchaseDate) { $purchase = new DateTime($purchaseDate); $today = new DateTime('today'); $diff = $purchase->diff($today);
$years = $diff->y; $months = $diff->m;
if ($years > 0) { return "$years lat" . ($months > 0 ? " $months mies." : ""); } return "$months mies.";}
echo getDeviceAge('2023-05-15'); // "2 lat 9 mies."?>Status z kolorowaniem:
<?php$statuses = [ 'working' => ['label' => 'Działa', 'color' => '#28a745'], 'repair' => ['label' => 'W naprawie', 'color' => '#ffc107'], 'replace' => ['label' => 'Do wymiany', 'color' => '#dc3545']];
$status = $device['status'];$statusInfo = $statuses[$status];?><span style="color: <?= $statusInfo['color'] ?>; font-weight: bold;"> <?= $statusInfo['label'] ?></span>Filtrowanie po statusie:
<?php$filterStatus = $_GET['status'] ?? '';$devices = json_decode(file_get_contents('devices.json'), true)['devices'];
if (!empty($filterStatus)) { $devices = array_filter($devices, function($device) use ($filterStatus) { return $device['status'] === $filterStatus; });}?>Ostrzeżenie dla starego sprzętu:
<?phpfunction isOld($purchaseDate, $yearsLimit = 5) { $purchase = new DateTime($purchaseDate); $today = new DateTime('today'); $diff = $purchase->diff($today); return $diff->y >= $yearsLimit;}
if (isOld($device['purchase_date'])) { echo '<span class="warning">Rozważ wymianę!</span>';}?>Raport średniego wieku:
<?php$totalMonths = 0;$count = count($devices);
foreach ($devices as $device) { $purchase = new DateTime($device['purchase_date']); $today = new DateTime('today'); $diff = $purchase->diff($today); $totalMonths += ($diff->y * 12) + $diff->m;}
$avgMonths = $count > 0 ? $totalMonths / $count : 0;$avgYears = floor($avgMonths / 12);$avgRemainMonths = $avgMonths % 12;
echo "Średni wiek: $avgYears lat $avgRemainMonths mies.";?>Wykorzystaj lekcje!
Cotygodniowe spotkania podczas lekcji to idealny moment, by:
Pracuj iteracyjnie - lepiej mieć działający wariant A niż niedokończony C!