Skip to content

Rejestr sprzętu domowego

This content is not available in your language yet.

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?

  • 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

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.

  1. 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).

  2. Lista urządzeń Wszystkie urządzenia wyświetlane są w tabeli z automatycznie obliczonym wiekiem i kolorowym statusem.

  3. 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:

  • Formularz: nazwa sprzętu, data zakupu, status
  • Walidacja w PHP (wymagane pola, poprawna data)
  • Zapis urządzenia do pliku JSON
  • Lista urządzeń w tabeli
  • Obliczenie i wyświetlenie wieku sprzętu

Przykładowy scenariusz:

Uż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.

Ocena: 3.0

Obliczanie wieku sprzętu:

<?php
function 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:

<?php
function 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:

  • Pokazać postępy - nawet małe kroki się liczą
  • Wyjaśnić wątpliwości - pytaj, nie zgaduj
  • Skonsultować rozwiązania - feedback pomoże Ci się rozwijać

Pracuj iteracyjnie - lepiej mieć działający wariant A niż niedokończony C!