Autor Zpráva
Joan
Profil
Zdravím,
zkouším si udělat matematické a potom geometrické tabulky, zatím např. výpočet druhé a třetí mocniny. Pokud zadám hodnoty pro výpočet obojího, je vše v pořádku. Když chci ale vypočítat pouze např. druhou mocninu (a třetí už ne), tak se mi správně vypíše výpočet druhé mocniny, ale na dalším řádku se zobrazí "Třetí mocnina z čísla je 0" - protože žádné číslo vloženo nebylo.

Formulář:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=windows-1250">
  <meta name="generator" content="PSPad editor, www.pspad.com"&gt;
  <title>Zadání čísla k výpočtu mocniny</title>
  </head>
  <body>
<form name="mocniny" action="spocitej_mocninu.php" method="post">
<p>Vypočítá druhou mocninu ze zadaného čísla<br /></p><input name="cislo_druha" type="text" value="" size="12">
<p>Vypočítá třetí mocninu ze zadaného čísla<br /></p><input name="cislo_treti" type="text" value="" size="12"><br /><br />
<input type="submit" value="Vypočítej" margin-left="30">
</form>
  </body>
</html>


Nejjednodušší funkční kód:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=windows-1250">
  <meta name="generator" content="PSPad editor, www.pspad.com"&gt;
  <title>Výsledek výpočtu druhé mocniny</title>
  </head>
  <body>
  <form name="mocniny" action="spocitej_mocninu.php" method="post">
<p>Vypočítá druhou mocninu ze zadaného čísla<br /></p><input name="cislo_druha" type="text" value="" size="12">
<p>Vypočítá třetí mocninu ze zadaného čísla<br /></p><input name="cislo_treti" type="text" value="" size="12"><br /><br />
<input type="submit" value="Vypočítej" margin-left="30">
</form>
<?php
$druha_mocnina = $_POST['cislo_druha'];
$druha_mocnina = $cislo_druha * $cislo_druha;
echo 'Druhá mocnina z čísla '.$cislo_druha.' je '.$druha_mocnina;
$treti_mocnina = $_POST['cislo_treti'];
$treti_mocnina = $cislo_treti * $cislo_treti * $cislo_treti;
echo "<br>";
echo 'Třetí mocnina z čísla '.$cislo_treti.' je '.$treti_mocnina;
?>
  </body>
</html>


Zkoušela jsem:

1) if (isset($_POST['cislo_druha']))
if (isset($_POST['cislo_treti']))
2) if (!empty ($_POST['cislo_druha'] OR $_POST['cislo_treti']))
obojí stále vypisuje že ...mocnina z čísla je 0.

Když do výše uvedeného php kódu ještě před vlastní výpočet vložím
if ($_POST['cislo_druha'] !="")

tak to vypíše ...mocnina z čísla je"

Všechny ostatní pokusy končily parse_errorem. Něco jsem zahlídla o funkci "unset" ale nemám představu, jak by se event. použila.

1) Já jen chci, aby v případě, že daný výpočet nepotřebuji, si nevyplněného výpočtu echo vůbec nevšímalo, nevypisovalo vůbec nic = vypisovalo pouze výpočty s vloženými hodnotami (až si tabulky rozšířím třeba na tucet položek). Tj. něco jako negace echo.
2) Proč, když otevřu v prohlížeči přímo kód v php, tak se mi zobrazí že proměnné $cislo_druha a $cislo_treti nejsou definovány, když jsou? Když otevřu formulář v html, něco spočítám, a u výpočtu se mi znova objeví formulář, tak je vše v pořádku, jaktože najednou php o obou proměnných ví!?

Prosím o nápovědu, děkuji!
panther
Profil
Joan:
dej tam
if (!empty($_POST['cislo_druha'])) {echo "druhá mocnina";}
if (!empty($_POST['cislo_treti'])) {echo "třetí mocnina";}
to by snad mělo fungovat.
Joan
Profil
panther:
Jupííí, ještě než jsem si přečetla Tvoje řešení, tak mě osvítil asi Duch programátorský ;-) a napadlo mě řešení velmi jednoduché a které funguje úplně stejně jako to Tvoje:
if (!empty($_POST['cislo_druha']
echo 'Druhá mocnina z čísla '.$cislo_druha.' je '.$druha_mocnina;
else
echo "";


a totéž pro třetí mocninu.

Jak mě jen mohlo nenapadnout vypsat echo jen s prázdnými uvozovkami...

Tvoje řešení jsem v podstatě už dřív zkoušela ale chyba byla ve spojení obou podmínek pomocí OR.

Hezký den.
Petr__
Profil *
Používat
echo "";
nemá žádný význam...
panther
Profil
Joan:
else je zbytečné, pokud nic nevypíše, stejně tak jako prázdné echo.
Joan
Profil
Pravda, odmazáním prázdného echo se nic nezkazilo. Díky!
Poučení pro mě: dávat podmínky raději zvlášť místo hromadných a spojovaných operátory.
panther
Profil
Joan:
dávat podmínky raději zvlášť místo hromadných a spojovaných operátory.
takhle bych to neřekl. Pro tuto situaci jsou ideální dvě sólo podmínky, jindy je nutné je pospojovat (AND nebo OR), jindy místo dvou IFů použít IF - ELSEIF - ELSE.

Záleží od situace, co potřebuješ.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0