Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

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:

if (15 > 5)
    echo('Pravda');
echo('<br />Program tu pokračuje ďalej.');

Výstup programu teraz bude:

Tvoja stránka
localhost

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 !
Rovnosť zapisujeme dvoma == 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:

$a = 10;
$b = 0;
if ($b != 0)
{
    $vysledek = $a / $b;
    echo('Podiel: ' . $vysledek);
}
if ($b == 0)
    echo('Nulou nemožno deliť!');

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í.

$a = 10;
$b = 0;
if ($b != 0)
{
    $vysledek = $a / $b;
    echo('Podiel: ' . $vysledek);
}
else
    echo('Nulou nemožno deliť!');

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:

$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);

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.

$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);

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:

Kalkulačka
localhost/kal­kulacka/kalku­lacka.html

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é 1355x (1.48 kB)
Aplikácia je vrátane zdrojových kódov v jazyku php

 

Predchádzajúci článok
Riešené úlohy k 5. lekcii PHP
Všetky články v sekcii
Základné konštrukcie jazyka PHP
Preskočiť článok
(neodporúčame)
Riešené úlohy k 6. lekcii PHP
Článok pre vás napísal David Hartinger
Avatar
Užívateľské hodnotenie:
2 hlasov
David je zakladatelem ITnetwork a programování se profesionálně věnuje 15 let. Má rád Nirvanu, nemovitosti a svobodu podnikání.
Unicorn university David sa informačné technológie naučil na Unicorn University - prestížnej súkromnej vysokej škole IT a ekonómie.
Aktivity