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
Ernest Kuki
Člen
Avatar
Odpovedá na Petr Langer
Ernest Kuki:14.10.2017 14:27

Vsechno sedi .. Dokonce i když jsem ted zkusil ctrl+c ctrl+v tak mi to nefunguje =X
Pro jistotu jsem davam oba ty soubory:

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

<?php
$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 = 'Chyba';
}
echo ('Výsledná hodnota je: ' $vysledek);
?>
</body>
</html>

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Kalkulač­ka</title>
</head>
<body>
<p>Vítejte v kalkulačce, zadejte 2 čísla a pomocí výběru dojděte k výsledku.</p>

<form method="POST" action="vypocet­.php">
<input name="cislo1" type="text" /><br />
<input name="cislo2" type="text" /><br />

<select name="operace">
<option value="scitani">Sčí­tání</option>
<option value="odcita­ni">Odčítání</op­tion>
<option value="nasobe­ni">Násobení</op­tion>
<option value="deleni">Dě­lení</option>
</select><br />
<input type="submit" value="Vypočítej" />
</form>

</body>
</html>

Odpovedať
Najdi co tě baví a nech ať tě to zabije..
Avatar
Odpovedá na Ernest Kuki
Štěpán Halíř:14.10.2017 18:57

Ahoj,
máš tam chybku ve výpisu výsledku.
V souboru vypocet.php nahraď řádek

echo ('Výsledná hodnota je: ' $vysledek);

za

echo ('Výsledná hodnota je: ' . $vysledek);

Když uvádíš proměnnou vedle ukončených apostrofů, musíš ji oddělit od zbytku textu právě tou tečkou. Když se podíváš nahoru na řešení, jsou tam použity uvozovky, kde se to takto neodděluje, ale proměnnou píšeš přímo do nich. Když používáš apostrof, tak mysli na oddělení tečkou. Snad jsme to teda tentokrát vyřešili.
P.S.: Příště prosím citace kódů vkládej do tagu pro kód (druhý z levé strany mezi možnostmi úpravy textů). Lépe se v tom orientuje.

Měj se fajn a hodně štěstí s učením

Editované
Avatar
Ernest Kuki
Člen
Avatar
Odpovedá na Štěpán Halíř
Ernest Kuki:15.10.2017 20:34

Hrozne moc ti dekuju! Byl jsem uz zoufalej =D
Dostal jsem se az do faze kdy jsem tu prepisoval vsechno asi 100x a furt nic =D

Odpovedať
Najdi co tě baví a nech ať tě to zabije..
Avatar
Odpovedá na Ernest Kuki
Štěpán Halíř:15.10.2017 21:00

Není zač. Vidíš sám, v jakým detailu to celou dobu vězelo. Když tu chybku hledáš, tak hlavně v klidu a pečlivě. Nějaké inteligentní IDE by ti s tím mohlo pomáhat. Kdyby zase něco, neboj se napsat, věřím že ti i v budoucnu někdo pomůže, pokud bude vědět. :-)

Avatar
Miroslav Mucha:31.10.2017 13:03

Ahoj, zkusil jsem kalkulačku trochu upravit. Pro kontrolu vstupních údajů jsem použil funkci array_key_exis­ts(), používám jenom jeden formulář pro vstupní pole i kód,

<title>Kalkulač­ka</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=de­vice-width, initial-scale=1.0">

<h1>Kalkulačka</h1>
<p>Zadejte 2 čísla</p>

<!-- vytvoření vstupního formuláře pro zadání čísel -->
<form method="POST" action="">
<input type="text" name="cislo1" /><br />
<input type="text" name="cislo2" /><br />
<input type="submit" name="soucet" value="+" />
<input type="submit" name="rozdil" value="-" />
<input type="submit" name="soucin" value="*"/>
<input type="submit" name="podil" value="/"/>
</form>

<?php
if(array_key_e­xists('cislo1', $_POST)) // kontrola, zda byl odeslán formulář
{
if // pokud je v jednom nebo v obou polích prázdná hodnota
{
echo "Musíš zadat obě hodnoty";
}
elseif || (!is_numeric($_POS­T['cislo2']))) // pokud je v jednom nebo v obou polích nenumerická hodnota
{
echo "V obou polích musí být číslo";
}
else
{
$cislo1 = $_POST['cislo1']; // přiřadí proměnné $cislo1 hodnotu z pole 1
$cislo2 = $_POST['cislo2']; // přiřadí proměnné $cislo2 hodnotu z pole 2
if(array_key_e­xists('soucet', $_POST)) // pokud je stisknuto tlačítko "plus"
{
$soucet = $cislo1 + $cislo2; // sečte hodnoty a vloží výsledek do proměnné $součet
echo "Výsledek: $cislo1 + $cislo2 = $soucet"; // výsledek vypíše do formuláře
}
if(array_key_e­xists('rozdil', $_POST)) // pokud je stisknuto tlačítko "mínus"
{
$rozdil = $cislo1 - $cislo2; // odečte hodnoty a vloží výsledek do proměnné $rozdíl
echo "Výsledek: $cislo1 - $cislo2 = $rozdil"; // výsledek vypíše do formuláře
}
if(array_key_e­xists('soucin', $_POST)) // pokud je stisknuto tlačítko "krát"
{
$soucin = $cislo1 * $cislo2; // vynásobí hodnoty a vloží výsledek do proměnné $součin
echo "Výsledek: $cislo1 * $cislo2 = ".round($soucin, 2); // výsledek vypíše do formuláře
}
if(array_key_e­xists('podil', $_POST)) // pokud je stisknuto tlačítko "děleno"
{
if($cislo2 == 0) // jestliže je dělitel nula
{
echo "Chyba! $cislo1 : $cislo2 <br />";
echo "Nulou nelze dělit!";
}
else
{
$podil = $cislo1 / $cislo2; // vydělí hodnoty a vloží výsledek do proměnné $podíl
echo "Výsledek: $cislo1 : $cislo2 = ".round($podil, 2); // výsledek vypíše do formuláře
}

}
}
}

Avatar
Odpovedá na Miroslav Mucha
Jakub Chuděj:31.10.2017 13:25

Ahoj, kód prosímtě příště vkládej do tagu kódu (2 z leva vedle emotikon), jinak co přesně máš za problém s kalkulačkou? :)

Odpovedať
Kdo chce, hledá způsob, kdo nechce, hledá důvod.
Avatar
Miroslav Mucha:31.10.2017 13:28

Díky za info, teď už to snad bude v pořádku. Problém žádný, jen trochu jiná varianta

<title>Kalkulačka</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">

<h1>Kalkulačka</h1>
<p>Zadejte 2 čísla</p>

<!-- vytvoření vstupního formuláře pro zadání čísel -->
<form method="POST" action="">
    <input type="text" name="cislo1" /><br />
    <input type="text" name="cislo2" /><br />
    <input type="submit" name="soucet" value="+" />
    <input type="submit" name="rozdil" value="-" />
    <input type="submit" name="soucin" value="*"/>
    <input type="submit" name="podil" value="/"/>
</form>

<?php
if(array_key_exists('cislo1', $_POST))  // kontrola, zda byl odeslán formulář
{
    if(($_POST['cislo1'] == "") || ($_POST['cislo2'] == ""))    // pokud je v jednom nebo v obou polích prázdná hodnota
    {
        echo "Musíš zadat obě hodnoty";
    }
    elseif((!is_numeric($_POST['cislo1'])) || (!is_numeric($_POST['cislo2'])))  // pokud je v jednom nebo v obou polích nenumerická hodnota
    {
        echo "V obou polích musí být číslo";
    }
    else
    {
        $cislo1 = $_POST['cislo1']; // přiřadí proměnné $cislo1 hodnotu z pole 1
        $cislo2 = $_POST['cislo2']; // přiřadí proměnné $cislo2 hodnotu z pole 2
        if(array_key_exists('soucet', $_POST))  // pokud je stisknuto tlačítko "plus"
        {
            $soucet =  $cislo1 + $cislo2;   // sečte hodnoty a vloží výsledek do proměnné $součet
            echo "Výsledek: $cislo1 + $cislo2 = $soucet"; // výsledek vypíše do formuláře
        }
        if(array_key_exists('rozdil', $_POST))  // pokud je stisknuto tlačítko "mínus"
        {
            $rozdil =  $cislo1 - $cislo2;   // odečte hodnoty a vloží výsledek do proměnné $rozdíl
            echo "Výsledek: $cislo1 - $cislo2 = $rozdil"; // výsledek vypíše do formuláře
        }
        if(array_key_exists('soucin', $_POST))  // pokud je stisknuto tlačítko "krát"
        {
            $soucin =  $cislo1 * $cislo2;   // vynásobí hodnoty a vloží výsledek do proměnné $součin
            echo "Výsledek: $cislo1 * $cislo2 = ".round($soucin, 2);  // výsledek vypíše do formuláře
        }
        if(array_key_exists('podil', $_POST))   // pokud je stisknuto tlačítko "děleno"
        {
            if($cislo2 == 0)    // jestliže je dělitel nula
            {
                echo "Chyba! $cislo1 : $cislo2 <br />";
                echo "Nulou nelze dělit!";
            }
            else
            {
                $podil =  $cislo1 / $cislo2;    // vydělí hodnoty a vloží vásledek do proměnné $podíl
                echo "Výsledek: $cislo1 : $cislo2 = ".round($podil, 2);   // výsledek vypíše do formuláře
            }

        }
    }
}
Avatar
Odpovedá na Miroslav Mucha
Jakub Chuděj:31.10.2017 13:28

Už to vidím, kód jsem si hodil na web, chybí ti tam za podmínkou IF podmínka, za které se to má vykonat, máš tam jen prázdné IF na řádku 24.

EDIT: Jojo, než jsem zareagoval, už jsi sem hodil novější variantu kódu. :)

Editované
Odpovedať
Kdo chce, hledá způsob, kdo nechce, hledá důvod.
Avatar
Miroslav Mucha:31.10.2017 13:45

Omlouvám se všem za svůj příspěvek, který jsem vložil ve 13:03. Je ořezaný a tudíž k ničemu. Níže pod ním už je kód kompletní.

Avatar
Lukáš Vaněk:20.11.2017 20:57

Prosím nepochopil jsem doplnění kalkulačky kod jsem napsal stejně, potom jsem to pro jistotu zkopíroval ale stejně mi to napiše:
Notice: Undefined index: cislo1 in C:\xampp\htdoc­s\Kalkulacka2\vy­pocet.php on line 14

Notice: Undefined index: cislo2 in C:\xampp\htdoc­s\Kalkulacka2\vy­pocet.php on line 15

Notice: Undefined index: operace in C:\xampp\htdoc­s\Kalkulacka2\vy­pocet.php on line 16

Notice: Undefined variable: vysledek in C:\xampp\htdoc­s\Kalkulacka2\vy­pocet.php on line 31
Výsledek:

vůbec mi to nenabídne možnost něco zadat.

když jsem zkusil vložit pomocnou funkci isset()

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 = 'Chyba';

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

tak mi to vyhodí : Výsledek: Chyba ale pořád nikde nemohu zadat hodnoty a volbu jakou chci operaci.
Děkuji předem za radu.

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.