NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
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í.

Diskuze – Lekce 7 - Podmínky v PHP

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
studnicka.ji
Člen
Avatar
studnicka.ji:24.12.2013 16:16

ne :D jak ?

 
Odpovědět
24.12.2013 16:16
Avatar
Odpovídá na studnicka.ji
Matúš Petrofčík:24.12.2013 16:24

napríklad pomocou funkcie isset(), pozri prvy riadok :)

if (isset($_POST["cislo1"]) && isset($_POST["cislo1"]) && isset($_POST["cislo1"]))
{
        $a = $_POST["cislo1"];
        $b = $_POST["cislo2"];
        $operace = $_POST["operace"];

        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 = "Nulou nelze dělit";
                }
         else
                $vysledek = "Neplatna volba";
}
else
        $vysledek = "Nezadal si niektoru volbu";

echo("Výsledek: $vysledek");

taktiež som pridal else ak nebola zadané niektoré číslo alebo voľba

else
        $vysledek = "Nezadal si niektoru volbu";

a else ak nebola zadaná správna voľba

else
       $vysledek = "Neplatna volba";
Odpovědět
+1
24.12.2013 16:24
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Kamil
Člen
Avatar
Odpovídá na studnicka.ji
Kamil:24.12.2013 16:25

Ahoj,

hodíš sem nám kod, pak obrázek... že je chyba na lajně 24 a jak máme poznat která lajna je 24? :)) Prosím příště celý kod.

S.

 
Odpovědět
+1
24.12.2013 16:25
Avatar
studnicka.ji
Člen
Avatar
studnicka.ji:24.12.2013 16:54

echo("Výsledek: $vysledek"); tohle je 24

 
Odpovědět
24.12.2013 16:54
Avatar
Odpovídá na studnicka.ji
Matúš Petrofčík:24.12.2013 17:01

ale už ti to funguje či nie?

inak v tom tvojom kóde máš

$vysledek=("Nulou nelze dělit");

čo som ja zmenil na

$vysledek="Nulou nelze dělit";

bez tých zátvoriek, ale neviem či je toto chyba alebo to tak môže byť

Odpovědět
24.12.2013 17:01
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Martin Konečný (pavelco1998):24.12.2013 17:05

Zkusím to vysvětlit tak, aby to bylo pochopitelné pro začátečníka:

$_POST je pole, které již je v PHP definováno. Ze začátku je prázdné (nejsou v něm žádné hodnoty). Naplní se až v případě, že se odešle formulář, jehož metoda je nastavena na post (method="post").

V článku je napsán odstavec: "Až se formulář odešle, budeme mít v $_POST['operace'] hodnotu podle toho, jakou možnost uživatel vybral."

Důležité je to slovo "až". Pokud se pokusíš použít např. $_POST["operace"] ještě dříve, než se formulář odešle, hodí ti PHP chybu, protože je to pole prázdné.

Proto je nutné zjistit, zda to pole prázdné není. Můžeš použít isset(), jak ti radil kolega. Ta zjišťuje, jestli daná proměnná existuje.

Pokud použiji tuto část scriptu:

<?php

if (isset($_POST["cislo1"]) && isset($_POST["cislo1"]) && isset($_POST["cislo1"]))
{
      $a = $_POST["cislo1"];
      $b = $_POST["cislo2"];
      $operace = $_POST["operace"];
}

Tak pokud soubor poprvé otevřeš, v poli $_POST nejsou žádné hodnoty. Proto to neprojde přes podmínku if a neprovede se žádná operace.
Když ale odešleš formulář, uloží se hodnoty do $_POST a stránka se načte znovu. Tentokrát to ale přes podmínku projde, protože $_POST["operace"], $_POST["cislo1"] a $_POST["cislo2"] existuje.

// Ten článek jsem nečetl, takže pokud opakuji něco, co v něm už je, tak se omlouvám.

Odpovědět
+2
24.12.2013 17:05
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Kit
Tvůrce
Avatar
Odpovídá na studnicka.ji
Kit:24.12.2013 17:17
$vysledek=("Nulou nelze dělit");

Copak je string "Nulou nelze dělit" výsledek? Přemýšlej trochu logicky. To není výsledek, ale chybová hláška.

Odpovědět
24.12.2013 17:17
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
studnicka.ji
Člen
Avatar
studnicka.ji:24.12.2013 19:49

stále to nejede, ale chápu to, ale nechápu když on tam taky nemá inset a jede mu to...

Editováno 24.12.2013 19:50
 
Odpovědět
24.12.2013 19:49
Avatar
Matúš Petrofčík:24.12.2013 20:44

vytvoril som ti index.php súbor
http://leteckaposta.cz/536268821
predpokladám že html trochu rozumieš a vieš prečo to tam je tak ako to tam je :)

<?php
if (isset($_POST["cislo1"]) && isset($_POST["cislo2"]) && isset($_POST["operace"]))
{
        $a = $_POST["cislo1"];
        $b = $_POST["cislo2"];
        $operace = $_POST["operace"];

        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 = "Nulou nelze dělit";
                }
         else
                $vysledek = "Neplatna volba";
}
else
        $vysledek = "Nezadal si niektore cislo alebo volbu";
?>
<!DOCTYPE html>
<html>
        <head>
                <meta charset="utf-8" />
                <title>Titulka stránky</title>
        </head>
        <body>
                <p>
                        <form method="post">
                                <input type="number" name="cislo1" />
                                <input type="number" name="cislo2" />
                                <input type="text" name="operace" />
                                <input type="submit" value="Vykonaj!" />
                        </form>
                </p>
                <p>
                        <?php echo("Výsledek: $vysledek"); ?>
                </p>
        </body>
</html>

taktiež som si všimol chybu v kóde ktorý sme ti písali, kde namiesto

if (isset($_POST["cislo1"]) && isset($_POST["cislo1"]) && isset($_POST["cislo1"]))

má byť

if (isset($_POST["cislo1"]) && isset($_POST["cislo2"]) && isset($_POST["operace"]))

kde sme mali zle názvy premenných :[

Editováno 24.12.2013 20:46
Odpovědět
24.12.2013 20:44
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Odpovídá na studnicka.ji
Matúš Petrofčík:24.12.2013 20:46

studnicka.ji: prečítaj si komentár vyššie, zabudol som ťa označiť :)

Odpovědět
24.12.2013 20:46
obsah kocky = r^2 ... a preto vlak drnká
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 97.