Úloha 1: BMI (Body Mass Index)
Cíl úlohy
Vytvořte PHP skript, který z formuláře přijme výšku (v centimetrech) a tělesnou hmotnost (v kilogramech), spočítá hodnotu indexu tělesné hmotnosti (BMI) a podle zjištěné hodnoty zařadí uživatele do odpovídající kategorie.
Matematický vzorec (MathML)
Index tělesné hmotnosti se vypočítá jako podíl hmotnosti v kilogramech a druhé mocniny tělesné výšky v metrech:
| Rozsah hodnot BMI | Kategorie | Zdravotní riziko |
|---|---|---|
| < 18,5 | Podváha | Zvýšené riziko podvýživy |
| 18,5 – 24,99 | Normální (ideální) váha | Minimální zdravotní riziko |
| 25,0 – 29,99 | Nadváha | Mírně zvýšené riziko |
| 30,0 – 34,99 | Mírná obezita (I. stupně) | Zvýšené riziko kardiovaskulárních chorob |
| 35,0 – 39,99 | Střední obezita (II. stupně) | Vysoké zdravotní riziko |
| ≥ 40,0 | Morbidní obezita (III. stupně) | Velmi vysoké, akutní riziko |
Úvahy a doporučený postup řešení
- Zpracování vstupu z formuláře: Data zadaná uživatelem dorazí v superglobálním poli
$_POST["vyska"]a$_POST["vaha"]. - Desetinná čárka vs. tečka: Čeští uživatelé často píší desetinná čísla s čárkou (např.
75,5). PHP však jako desetinný oddělovač vyžaduje tečku. Použijte funkcistr_replace(",", ".", $vstup). - Převod jednotek: Uživatel zadává výšku v centimetrech, ale ve vzorci vystupuje výška v metrech. Nezapomeňte výšku vydělit stem (
$h = $vyska / 100;). - Dělení nulou: Zkontrolujte, zda je výška kladné číslo, aby nedošlo k chybě dělení nulou.
- Větvení programu: Pomocí konstrukce
if (...) elseif (...) elsezařaďte výsledek do správné slovní kategorie. - Formátování výstupu: Použijte funkci
number_format($bmi, 2, ',', ' ')pro zaokrouhlení na 2 desetinná místa s českou desetinnou čárkou.
Doplňující otázky k zamyšlení a rozšíření úlohy
- 1. Co se stane v PHP, pokud se pokusíte sečíst nebo vydělit textový řetězec
"80 kg"? Jak probíhá přetypování (type casting)? - 2. Jaké atributy v HTML5 formuláři můžete použít k tomu, aby prohlížeč sám hlídal povolené hodnoty (např.
min="50" max="250")? - 3. Zkuste skript rozšířit o přepínač pohlaví (muž / žena) a věk – liší se doporučené ideální BMI pro muže a ženy nebo pro seniory?
- 4. Jak zajistit, aby ve formuláři po stisknutí tlačítka „Vypočítej“ zůstaly vepsané hodnoty, které uživatel odeslal?
Vyzkoušejte funkční řešení: Otevřít vzorovou úlohu bmi.php