Czego się nauczysz?
- Obsługi formularzy HTML z listami wyboru
- Implementacji wzorow matematycznych w PHP
- Walidacji danych z ograniczeniami fizycznymi (zero bezwzgledne)
- Zapisu i odczytu historii operacji z plikow JSON
Stworzysz Konwerter temperatur - aplikacje umozliwiajaca przeliczanie temperatury pomiedzy roznymi skalami (Celsjusza, Fahrenheita, Kelwina). Użytkownik wprowadza wartość temperatury, wybiera skale źródłowa i docelowa, a system automatycznie przelicza i wyświetla wynik. Historia konwersji jest zapisywana do pliku JSON.
Czego się nauczysz?
W prawdziwej pracy...
Konwertery jednostek sa podstawa wielu aplikacji - od stacji meteorologicznych, przez aplikacje kulinarne, po systemy naukowe i przemysłowe. Umiejetnosc implementacji precyzyjnych przeliczen z walidacja zakresow (np. temperatura nie może być nizsza niz zero bezwzgledne) to ważna kompetencja programisty.
Formularz wprowadzania danych Użytkownik podaje wartość temperatury oraz wybiera z list rozwijanych skale źródłowa (np. Celsjusz) i docelowa (np. Fahrenheit).
Przeliczenie temperatury System stosuje odpowiedni wzor konwersji i wyświetla wynik z odpowiednia jednostka (np. “20°C = 68°F”).
Zapis do historii Każda konwersja jest zapisywana do pliku JSON wraz z wartosciami, skalami i data wykonania.
Przykładowa struktura pliku JSON:
{ "conversions": [ { "id": 1, "from_scale": "C", "to_scale": "F", "input_value": 20, "result": 68, "created_at": "2026-02-13 10:30:00" }, { "id": 2, "from_scale": "F", "to_scale": "K", "input_value": 32, "result": 273.15, "created_at": "2026-02-13 11:45:00" }, { "id": 3, "from_scale": "K", "to_scale": "C", "input_value": 300, "result": 26.85, "created_at": "2026-02-13 12:00:00" } ]}Wymagane funkcje:
Przykładowy scenariusz:
Ocena: 3.0Użytkownik wchodzi na strone i widzi formularz. Wpisuje 20, wybiera “z Celsjusza na Fahrenheit”. Po kliknieciu “Przelicz” widzi wynik: “20°C = 68°F”. Konwersja zostaje zapisana do pliku JSON.
Wszystko z wariantu A, plus:
Przykładowy scenariusz:
Ocena: 4.0-5.0Użytkownik wybiera konwersje z Kelwinow na Celsjusze, wpisuje 300. Widzi wynik: “300 K = 26,85°C”. Pod formularzem wyświetla się tabela z ostatnimi 10 konwersjami. Przy błędnych danych (np. tekst zamiast liczby) widzi komunikat “Wprowadz poprawna wartość liczbowa”.
Wszystko z wariantu B, plus:
Przykładowy scenariusz:
Ocena: 5.0-6.0Użytkownik wpisuje -10 i wybiera Kelwiny jako skale źródłowa. System wyświetla błąd: “Temperatura w Kelwinach nie może być ujemna (zero bezwzgledne = 0 K)”. Po wpisaniu poprawnej wartości 300 K widzi wynik we wszystkich skalach: “300 K = 26,85°C = 80,33°F”. Może zapisać te konwersje jako “ulubiona”.
Wzory konwersji:
function convertTemperature($value, $from, $to) { // Najpierw przelicz na Celsjusze switch ($from) { case 'C': $celsius = $value; break; case 'F': $celsius = ($value - 32) * 5 / 9; break; case 'K': $celsius = $value - 273.15; break; default: return null; }
// Potem przelicz z Celsjuszy na docelowa skale switch ($to) { case 'C': return $celsius; case 'F': return $celsius * 9 / 5 + 32; case 'K': return $celsius + 273.15; default: return null; }}Walidacja zera bezwzglednego:
function validateTemperature($value, $scale) { $min_values = [ 'C' => -273.15, // Zero bezwzgledne w Celsjuszach 'F' => -459.67, // Zero bezwzgledne w Fahrenheitach 'K' => 0 // Zero bezwzgledne w Kelwinach ];
if ($value < $min_values[$scale]) { return "Temperatura nie może być nizsza niz zero bezwzgledne (" . $min_values[$scale] . "°" . $scale . ")"; } return null; // brak błędu}Zapis do JSON:
$data = json_decode(file_get_contents('history.json'), true) ?? ['conversions' => []];$data['conversions'][] = [ 'id' => count($data['conversions']) + 1, 'from_scale' => $from, 'to_scale' => $to, 'input_value' => $value, 'result' => round($result, 2), 'created_at' => date('Y-m-d H:i:s')];file_put_contents('history.json', json_encode($data, JSON_PRETTY_PRINT));Formatowanie wyniku z jednostka:
function formatTemperature($value, $scale) { $symbols = ['C' => '°C', 'F' => '°F', 'K' => ' K']; return number_format($value, 2, ',', ' ') . $symbols[$scale];}Wykorzystaj lekcje!
Cotygodniowe spotkania podczas lekcji to idealny moment, by:
Pracuj iteracyjnie - lepiej mieć działający wariant A niz niedokonczony C!