Autor Zpráva
jefitto44
Profil
Mám minikalkulačku, ktorá vie iba deliť. Podmienkou chcem ošetriť delenie nulou. Kód je taký:
1<form method="get"> <!-- delenie -->
2<input type="number" name="delenec">
3<input type="number" name="delitel">
4<input type="submit" value="Podiel">
5</form>
6<?php
7if ($delitel != 0):
8$vysledok4=($delenec/$delitel);
9echo ("Podiel čísel je $vysledok4");
10else:
11echo ("Nulou sa deliť nedá");
12endif;
13?>
<form method="get"> <!-- delenie -->
<input type="number" name="delenec">
<input type="number" name="delitel">
<input type="submit" value="Podiel">
</form>
<?php
if ($delitel != 0):
$vysledok4=($delenec/$delitel);
echo ("Podiel čísel je $vysledok4");
else:
echo ("Nulou sa deliť nedá");
endif;
?>

Problém je ten, že tú podmienku "Nulou sa deliť nedá" mi tam vypisuje furt, aj keď som ešte žiadne číslo do formulára nenapísal
johnl
Profil
jefitto44:
Za 1. nejdříve musíš ověřit, zda již došlo k odeslání formuláře a za 2. používat register_globals může být někdy vážnou bezpečnostní chybou, nikdo by Ti asi jeho používání v dnešní době nepochválil, zkus spíše používat $_POST.

Takto by měl nějak vypadat tvůj kód:
1<form method="get"> změn na method="POST" (nebo místo $_POST použij $_GET)
2<input type="submit" value="Podiel">přepiš na: <input type="submit" name="podiel" value="Podiel">
3 
4<?php
5if(isset($_POST["podiel"])){ # ověříš, zda bylo odesláno submit tlačítlo
6  if($_POST["delitel"] != 0)
7  {
8    $vysledek = $_POST["delenec"] / $_POST["delitel"];
9    echo "Podíl je: " . $vysledek;
10  }else{ echo "Nulou nelze dělit."; }  
11}
12?>
<form method="get"> změn na method="POST" (nebo místo $_POST použij $_GET)
<input type="submit" value="Podiel">přepiš na: <input type="submit" name="podiel" value="Podiel">
 
<?php
if(isset($_POST["podiel"])){ # ověříš, zda bylo odesláno submit tlačítlo
  if($_POST["delitel"] != 0)
  {
    $vysledek $_POST["delenec"] / $_POST["delitel"];
    echo "Podíl je: " . $vysledek;
  }elseecho "Nulou nelze dělit."; }  
}
?>
jefitto44
Profil
Počkaj... s php som začal včera... bezpečnostné veci momentálne absolútne vôbec neriešim...

Tomu overeniu submit tlačitka vôbec nechápem... čo tam mám overovať? Veď predsa ak nestlačí tlačitko, tak sa skript nerozbehne a nič sa nestane... či zle tomu chápem?
johnl
Profil
jefitto44:
Ano, chápeš to špatně. :) Když já si načtu tvoji stránku, tak se PHP kód hned provede a jelikož uživatel nezadal žádné hodnoty, obě to bude brát jako 0 (false) a vypíše se Ti, že nulou nelze dělit.
Musíš tedy kód dát do podmínky if(isset($_POST["podiel"])){ ... } což zajistí, že kód se provede až v momentě, kdy bude odesláno ono tlačítko. :)

bezpečnostné veci momentálne absolútne vôbec neriešim
Je lepší se ihned učit věci správněji - byť třeba trochu složitěji, než se poté složitě odnaučovat zlozvyky v kódu. :)
jefitto44
Profil
Ale čo ak tam chcem nechať <form method="get">? Schválne som to nerobil cez post...
johnl
Profil
jefitto44:
V tom případě použiješ místo $_POST proměnnou $_GET. :) Tedy if(isset($_GET["podiel"])){ ... }. Kód se poté provede až v momentě, kdy uživatel stiskne tlačítko, formulář se odešle a v $_GET bude $_GET["podiel"] = "Podiel"; > to už je ale nepodstatné. :)
jefitto44
Profil
Už mi to fachčí, ďakujem pekne :)
Toto vlákno je staré, již dlouho do něj nikdo nepřispíval.

Informace a odkazy zde uváděné už nemusejí být aktuální. Nechcete-li řešit zde uvedenou konkrétní otázku, založte si vlastní vlákno, nepište do tohoto. Vložíte-li sem nyní příspěvek, upoutáte pozornost mnoha lidí a někteří z nich si jen kvůli vám přečtou i všechny předcházející příspěvky. Předpokládáte-li, že váš text skutečně bude hodnotný, stiskněte následující tlačítko:


Běda vám, jestli to bude blábol.

0