Przejdź do głównej zawartości

Konwerter jednostek

Stworzysz Konwerter jednostek - praktyczne narzedzie do przeliczania różnych jednostek miary. Użytkownik wprowadza wartość, wybiera jednostke źródłowa i docelowa, a system wykonuje konwersje i wyświetla wynik. Historia wszystkich konwersji jest zapisywana do pliku JSON.

Czego się nauczysz?

  • Pracy z formularzami select (listy rozwijane)
  • Implementacji algorytmow przeliczeniowych
  • Walidacji danych liczbowych w PHP
  • Organizacji kodu z wieloma typami konwersji

W prawdziwej pracy...

Konwertery jednostek sa wszedzie - w aplikacjach fitness (kalorie, kilometry), e-commerce (waluty, wagi), logistyce (objętość, odległość) czy kuchni (miary). Umiejetnosc tworzenia obliczen z roznymi jednostkami i przechowywania historii operacji to praktyczna kompetencja w wielu domenach.

  1. Formularz konwersji Użytkownik wpisuje wartość liczbowa, wybiera jednostke źródłowa (np. km) i docelowa (np. mile), a nastepnie klika “Przelicz”.

  2. Wyświetlenie wyniku System oblicza i wyświetla wynik konwersji w czytelnej formie (np. “10 km = 6.21 mil”).

  3. Zapis do historii Każda konwersja jest zapisywana do pliku JSON wraz z data, co pozwala przegladac poprzednie operacje.

Przykładowa struktura pliku JSON:

{
"conversions": [
{
"id": 1,
"value": 10,
"from_unit": "km",
"to_unit": "mile",
"result": 6.21,
"category": "length",
"created_at": "2026-02-13 10:30:00"
},
{
"id": 2,
"value": 100,
"from_unit": "kg",
"to_unit": "lb",
"result": 220.46,
"category": "weight",
"created_at": "2026-02-13 11:45:00"
}
]
}

Wymagane funkcje:

  • Formularz: wartość, jednostka źródłowa, jednostka docelowa
  • Jedna kategoria konwersji (np. długość: km, m, mile, stopy)
  • Walidacja w PHP (wartość musi być liczba)
  • Obliczenie i wyświetlenie wyniku
  • Zapis do pliku JSON
  • Prosty interfejs CSS

Przykładowy scenariusz:

Użytkownik wpisuje “10”, wybiera “km” jako jednostke źródłowa i “mile” jako docelowa. Klika “Przelicz” i widzi “10 km = 6.21 mil”. Przy wpisaniu tekstu zamiast liczby widzi błąd.

Ocena: 3.0

Definicja współczynników (do jednostki bazowej):

$units = [
'length' => [
'base' => 'm',
'units' => [
'm' => 1,
'km' => 1000,
'cm' => 0.01,
'mile' => 1609.344,
'ft' => 0.3048,
'inch' => 0.0254
]
],
'weight' => [
'base' => 'kg',
'units' => [
'kg' => 1,
'g' => 0.001,
'lb' => 0.453592,
'oz' => 0.0283495
]
]
];

Funkcja konwersji:

function convert(float $value, string $from, string $to, array $units): float {
// Konwertuj do jednostki bazowej, potem do docelowej
$inBase = $value * $units[$from];
$result = $inBase / $units[$to];
return round($result, 4);
}
// Użycie:
$result = convert(10, 'km', 'mile', $units['length']['units']);
// Wynik: 6.2137

Konwersja temperatury (specjalny przypadek):

function convertTemperature(float $value, string $from, string $to): float {
// Najpierw do Celsjusza
switch ($from) {
case 'F': $celsius = ($value - 32) * 5/9; break;
case 'K': $celsius = $value - 273.15; break;
default: $celsius = $value;
}
// Potem z Celsjusza do docelowej
switch ($to) {
case 'F': return round($celsius * 9/5 + 32, 2);
case 'K': return round($celsius + 273.15, 2);
default: return round($celsius, 2);
}
}

Walidacja wartości:

$value = filter_var($_POST['value'], FILTER_VALIDATE_FLOAT);
if ($value === false) {
$errors[] = "Wartość musi być liczba";
}
if ($value < 0 && $category !== 'temperature') {
$errors[] = "Wartość nie może być ujemna";
}

Wykorzystaj lekcje!

Cotygodniowe spotkania podczas lekcji to idealny moment, by:

  • Pokazac postepy - nawet małe kroki się licza
  • Wyjaśnić watpliwosci - pytaj, nie zgaduj
  • Skonsultowac rozwiązania - feedback pomoze Ci się rozwijac

Pracuj iteracyjnie - lepiej mieć działający wariant A niz niedokonczony C!