NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Martin Lukeš:14.2.2018 22:05

Poradí mi někdo, jak nemít zobrazenou hlášku "Musí být vyplněná pole." ještě dřív než dám "sečíst čísla"?

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>TEST_GET</title>
    </head>
    <body>

    <form action="" method="GET">
    První číslo: <input type="text" name="x">
    Druhé číslo: <input type="text" name="y">

    <input type="submit" value="Sečíst čísla">
    </form>

    </body>
</html>

<?php
    if (isset($_GET['x']) && ($_GET['x']) &&
        isset ($_GET['y']) && ($_GET['y']))
    {
        $x = $_GET['x'];
        $y = $_GET['y'];
        $vysledek = $x+$y;
    echo ("Výsledek: $vysledek");
    }
    else
        echo ($hlaska = "Musí být vyplněná pole.");
?>
 
Odpovědět
14.2.2018 22:05
Avatar
Odpovídá na Martin Lukeš
Neaktivní uživatel:14.2.2018 22:06

misto get ma byt post aby tohle fungovalo

Editováno 14.2.2018 22:09
Nahoru Odpovědět
14.2.2018 22:06
Neaktivní uživatelský účet
Avatar
Neaktivní uživatel:14.2.2018 22:15

pokud to musi byt get, tak musis do url zadat parametry x a y

Nahoru Odpovědět
14.2.2018 22:15
Neaktivní uživatelský účet
Avatar
Martin Lukeš:14.2.2018 22:20

Klidně může být i POST. Přesto mi to hlášku zobrazuje hned jakmile tu stránku otevřu. Chci aby se zobrazovala až teprve jak dám výpočet a nemám přitom vyplněná pole.

 
Nahoru Odpovědět
14.2.2018 22:20
Avatar
Jan Lupčík
Tvůrce
Avatar
Odpovídá na Martin Lukeš
Jan Lupčík:14.2.2018 22:20

Ahoj, u toho posledního echa nemusíš mít to přiřazování do proměnné - stejně nevidím, že bys ji někde používal. :)
Jinak k tomu, aby to fungovalo, stačí upravit pouze else na elseif:

if (isset($_GET['x']) && ($_GET['x']) &&
        isset ($_GET['y']) && ($_GET['y']))
{
        $x = $_GET['x'];
        $y = $_GET['y'];
        $vysledek = $x+$y;
        echo ("Výsledek: $vysledek");
}
elseif (isset($_GET['x']) && isset($_GET['y']))
        echo ("Musí být vyplněná pole.");

Tím isset() zjistíš, zda-li existuje takový index. Ten existuje v případě, že je odeslán formulář. :)

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
14.2.2018 22:20
TruckersMP vývojář
Avatar
Martin Lukeš:14.2.2018 22:26

Super. Mockrát díky!! :)

 
Nahoru Odpovědět
14.2.2018 22:26
Avatar
Odpovídá na Martin Lukeš
Neaktivní uživatel:14.2.2018 22:29

jo tahle. Sorry koukal jsem se na to v buse.

Nahoru Odpovědět
14.2.2018 22:29
Neaktivní uživatelský účet
Avatar
Odpovídá na Martin Lukeš
Neaktivní uživatel:14.2.2018 22:32

Nebo bez elseif

<?php
    if (isset($_GET['x']) && isset ($_GET['y']))
    {
        if ($_GET['x'] && $_GET['y'])
        {
            $x = $_GET['x'];
             $y = $_GET['y'];
             $vysledek = $x+$y;
             echo ("Výsledek: $vysledek");
        }
        else
            echo "Musí být vyplněná pole.";
    }
?>
Nahoru Odpovědět
14.2.2018 22:32
Neaktivní uživatelský účet
Avatar
Martin Lukeš:14.2.2018 22:42

Děkuji ;) Jestli to chápu dobře, tak: if (isset($_GET['x']) zjistí jestli se něco odeslalo a samotné if ($_GET['x'] jestli má parametr nějakou hodnotu? Ještě mi bude dlouho trvat než to pochopím :D

 
Nahoru Odpovědět
14.2.2018 22:42
Avatar
Jan Lupčík
Tvůrce
Avatar
Odpovídá na Martin Lukeš
Jan Lupčík:14.2.2018 22:47

Ano. isset() kontroluje, zda-li proměnná/index existuje a zda-li není NULL.

Nahoru Odpovědět
14.2.2018 22:47
TruckersMP vývojář
Avatar
Lava
Člen
Avatar
Odpovídá na Jan Lupčík
Lava:14.2.2018 22:59

Takto je to lepšie povedané. Isset je funkcia, nezisťuje, či bolo, alebo nebolo niečo odoslané, alebo nie. Proste kontroluje, či existuje daná premenná/index a či neni null, ako píše ITman. Tebe premenná $_POST vznikne až po odoslaní formulára, preto sa na to dá použiť isset().

Nahoru Odpovědět
14.2.2018 22:59
Aspartám, sacharín, to je môj vitamín
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 11 zpráv z 11.