NOVINKA - Online rekvalifikační kurz Python programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
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
Ernest Kuki
Člen
Avatar
Odpovídá 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>

Odpovědět
14.10.2017 14:27
Najdi co tě baví a nech ať tě to zabije..
Avatar
Odpovídá 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

Editováno 14.10.2017 18:59
 
Odpovědět
14.10.2017 18:57
Avatar
Ernest Kuki
Člen
Avatar
Odpovídá 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

Odpovědět
15.10.2017 20:34
Najdi co tě baví a nech ať tě to zabije..
Avatar
Odpovídá 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. :-)

 
Odpovědět
15.10.2017 21:00
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
}

}
}
}

 
Odpovědět
31.10.2017 13:03
Avatar
Odpovídá 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? :)

Odpovědět
31.10.2017 13:25
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
            }

        }
    }
}
 
Odpovědět
31.10.2017 13:28
Avatar
Odpovídá 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. :)

Editováno 31.10.2017 13:29
Odpovědět
31.10.2017 13:28
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í.

 
Odpovědět
31.10.2017 13:45
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.

 
Odpovědět
20.11.2017 20:57
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.