6. diel - Podmienky v PHP
V predchádzajúcom cvičení, Riešené úlohy k 5. lekcii PHP, sme si precvičili získané skúsenosti z predchádzajúcich lekcií.
V minulej lekcii, Riešené úlohy k 5. lekcii PHP , sme si ukázali ako fungujú formuláre a vytvorili si jednoduchú kalkulačku. Tá vedela len sčítať. V dnešnom PHP tutoriálu ju rozšírime o ďalšie funkcie. Budeme na to potrebovať podmienky.
Podmienky
Podmienky (alebo ak programátorské vetvenia) umožňujú, aby sa skript nesprával stále rovnako, ale reagoval na rôzne situácie. Najčastejšie reagujeme na vstup od užívateľa alebo rôzne udalosti (napr. Že požadovaný článok neexistuje).
Ak ste už programovali v nejakom céčkovém jazyku, budete sa teraz asi chvíľku nudiť
Podmienku zapíšeme pomocou kľúčového slova if
, za ktorým
nasleduje v zátvorke logický výraz. Ak je výraz pravdivý, vykoná sa
nasledujúci príkaz. Ak nie, nasledujúci príkaz vykonaný nebude a program
pokračuje až pod ním.
Skúsme si to:
{PHP}
if (15 > 5)
echo('Pravda');
echo('<br />Program tu pokračuje ďalej.');
{/PHP}
Výstup programu teraz bude:
Operátormi
V podmienke sme použili operátor >
(väčšie). Vo
výrazoch môžeme ďalej používať tieto relačné operátory:
operátor | C-like zápis |
---|---|
rovnosť | == |
Je ostro väčšia | > |
Je ostro menšia | < |
Je väčšie alebo rovné | > = |
Je menšie alebo rovné | <= |
nerovnosť | ! = |
Všeobecná negácia | ! |
==
preto, aby sa to neplietlo s bežným
priradením do premennej, ktoré sa robí len jedným =
. Ak chceme
nejaký výraz znegovat, napíšeme ho do zátvorky a pred neho výkričník.
Keď budeme chcieť vykonať viac než len jeden príkaz, musíme príkazy
vložiť do bloku zo zložených zátvoriek. Súčasťou výrazu samozrejme
môžu byť aj premenné.
Urobme si ďalší príklad:
{PHP}
$a = 10;
$b = 0;
if ($b != 0)
{
$vysledek = $a / $b;
echo('Podiel: ' . $vysledek);
}
if ($b == 0)
echo('Nulou nemožno deliť!');
{/PHP}
Skript vyššie spočíta a vypíše podiel dvoch premenných. Ak je druhá premenná nulová, vypíše chybu, pretože nulou sa samozrejme deliť nedá. Ak by premenné pochádzali od užívateľa a my by sme ich podmienkou neošetrili, mohol by nám takýto používateľ aplikáciu aj rozbiť. S ošetrením užívateľských vstupov úzko súvisí bezpečnosť webových aplikácií a počas seriálu uvidíte, ako veľmi je to dôležité.
else
Podmienku sme vyššie napísali vlastne dvakrát, raz normálne a raz
znegovanou. Keby bola zložitejšia, mohli by sme v jej negáciu urobiť chybu.
Ak chceme, aby sa niečo urobilo v prípade, že podmienka platí a niečo iné
v prípade, že podmienka neplatí, použijeme kľúčové slovo
else
. Do vetvy else
program zabehne v prípade, že
podmienka neplatí.
{PHP}
$a = 10;
$b = 0;
if ($b != 0)
{
$vysledek = $a / $b;
echo('Podiel: ' . $vysledek);
}
else
echo('Nulou nemožno deliť!');
{/PHP}
Ak by vo vetve else
bolo viac príkazov, opäť by museli byť
obsiahnuté v bloku zo zložených zátvoriek.
else
sa tiež využíva v prípade, keď potrebujeme v príkaze
manipulovať s premennou z podmienky a nemôžeme sa na ňu teda pýtať potom
znova. Program si sám pamätá, že sa podmienka nesplnila a prejde do sekcie
else
. Ukážme si to na príklade: Majme číslo $a
,
kde bude hodnota 0
alebo 1
a po nás sa bude chcieť,
aby sme hodnotu prehodili (ak tam je 0
, dáme tam 1
,
ak 1
, dáme tam 0
). Naivne by sme mohli kód napísať
takto:
{PHP}
$a = 0; // do $a si priradíme na začiatku 0
if ($a == 0) // ak je $a 0, dáme do neho jedničku
$a = 1;
if ($a == 1) // ak je $a 1, dáme do neho nulu
$a = 0;
echo($a);
{/PHP}
Nefunguje to, že? Poďme si prejsť, čo bude program robiť. Na začiatku
máme v $a
nulu, prvá podmienka sa určite splní a dosadí do
$a
jedničku. No ale razom sa splní aj tá druhá. Čo s tým?
Keď podmienky otočíme, budeme mať ten istý problém s jednotkou. Ako z toho
von? Áno, použijeme else
.
{PHP}
$a = 0; // do $a si priradíme na začiatku 0
if ($a == 0) // ak je $a 0, dáme do neho jedničku
$a = 1;
else // ak je $a 1, dáme do neho nulu
$a = 0;
echo($a);
{/PHP}
Teraz všetko funguje tak, ako má. K podmienkam je ešte nejaká teória, ktorú si dopovieme nabudúce. Teraz pomocou nadobudnutých znalostí rozšírme našu kalkulačku.
Rozšírenie kalkulačky
Začnime HTML formulárom, do ktorého pridáme voľbu pre zvolenie početné
operácie. Pridáme do neho tag <select>
, ktorým zvolíme
akú početnej operáciu chceme vykonať. Pre úplnosť si uveďme celý HTML
súbor:
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Kalkulačka</title> </head> <body> <p>Vitajte v kalkulačke, zadajte 2 čísla a operáciu.</p> <form method="POST" action="vypocet.php"> <input name="cislo1" type="text" /><br /> <input name="cislo2" type="text" /><br /> Operácie: <select name="operace"> <option value="scitani">Sčítanie</option> <option value="odcitani">Odčítanie</option> <option value="nasobeni">Násobenie</option> <option value="deleni">Delenie</option> </select><br /> <input type="submit" value="Vypočítajte" /> </form> </body> </html>
Výsledok vyzerá takto:
Až sa formulár odošle, budeme mať v $_POST['operace']
hodnotu podľa toho, akú možnosť užívateľ vybral.
Prejdime do obslužného skriptu, ktorým bol predtým
soucet.php
. Keďže už názov nezodpovedá tomu, čo skript robí,
premenoval som ho na vypocet.php
. Dovnútra dodajme vetvenia a
ochranu pred delením nulou.
Najprv si pre prehľadnosť na začiatku skriptu načíta vstupy z
POST
do premenných. Nemusíme tak stále opisovať
$_POST
a kód bude prehľadnejšie.
$a = $_POST['cislo1']; $b = $_POST['cislo2']; $operace = $_POST['operace'];
Ďalej vložíme vetvenia na výpočet podľa operácie. Keďže je
zbytočné, aby sa v overovaní obsahu premennej operácie pokračovalo aj v
prípade, že sa nejaká operácia uskutočnila, použijeme sekvenciu
if
... else if
...
if ($operace == 'scitani') $vysledek = $a + $b; else if ($operace == 'odcitani') $vysledek = $a - $b; else if ($operace == 'nasobeni') $vysledek = $a * $b; else if ($operace == 'deleni') { if ($b != 0) $vysledek = $a / $b; else $vysledek = 'Chyba'; } echo("Výsledok: $vysledek");
Kód by mal byť jasný. Niekedy sa môžete stretnúť s tým, že sa
else if
spoja do jedného slova (elseif
). Ak je
operácia napr. Sčítanie, ďalšie else
sa už nevyhodnotí,
pretože podmienka platila a prejde sa rovno k vypísanie výsledku. Je teda
vždy vykonané len toľko podmienok, koľko je potrebné.
Výsledok máte ako vždy pribalený v archíve nižšie a ja sa na vás teším v budúcej lekcii, Riešené úlohy k 6. lekcii PHP , kedy podmienky dopracujeme.
V nasledujúcom cvičení, Riešené úlohy k 6. lekcii PHP, si precvičíme nadobudnuté skúsenosti z predchádzajúcich lekcií.
Mal si s čímkoľvek problém? Stiahni si vzorovú aplikáciu nižšie a porovnaj ju so svojím projektom, chybu tak ľahko nájdeš.
Stiahnuť
Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami
Stiahnuté 1374x (1.48 kB)
Aplikácia je vrátane zdrojových kódov v jazyku php