Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

Diskusia – 6. diel - Podmienky v PHP

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Posledné komentáre sú na spodnej časti poslednej stránky.
Avatar
studnicka.ji
Člen
Avatar
studnicka.ji:24.12.2013 16:16

ne :D jak ?

Avatar
Odpovedá 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";
Odpovedať
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Kamil
Člen
Avatar
Odpovedá 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.

Avatar
studnicka.ji
Člen
Avatar
studnicka.ji:24.12.2013 16:54

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

Avatar
Odpovedá 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ť

Odpovedať
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.

Odpovedať
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
Kit
Tvůrce
Avatar
Odpovedá 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.

Odpovedať
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...

Editované
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 :[

Editované
Odpovedať
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Odpovedá 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ť :)

Odpovedať
obsah kocky = r^2 ... a preto vlak drnká
Posledné komentáre sú na spodnej časti poslednej stránky.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 10 správy z 97.