Czego się nauczysz?
- Pracy z formularzami select (listy rozwijane)
- Implementacji algorytmow przeliczeniowych
- Walidacji danych liczbowych w PHP
- Organizacji kodu z wieloma typami konwersji
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?
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.
Formularz konwersji Użytkownik wpisuje wartość liczbowa, wybiera jednostke źródłowa (np. km) i docelowa (np. mile), a nastepnie klika “Przelicz”.
Wyświetlenie wyniku System oblicza i wyświetla wynik konwersji w czytelnej formie (np. “10 km = 6.21 mil”).
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:
Przykładowy scenariusz:
Ocena: 3.0Uż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.
Wszystko z wariantu A, plus:
Przykładowy scenariusz:
Ocena: 4.0-5.0Użytkownik wybiera kategorie “Waga” - listy jednostek zmieniaja się na kg/lb/g/oz. Konwertuje 5 kg na funty. Pod formularzem widzi ostatnie konwersje. Wszystkie wyniki sa sformatowane do 2 miejsc po przecinku.
Wszystko z wariantu B, plus:
Przykładowy scenariusz:
Ocena: 5.0-6.0Użytkownik konwertuje 100°C na Fahrenheit (212°F). Klika przycisk “Zamien” - jednostki się zamieniaja i może od razu przeliczyc w druga strone. Filtruje historie po “Temperatura”. Widzi statystyki: “Najczestsza konwersja: km -> mile (23 razy)”.
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.2137Konwersja 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:
Pracuj iteracyjnie - lepiej mieć działający wariant A niz niedokonczony C!