PHP prosím poraďte

C++, C#, Visual Basic, Delphi, Perl a ostatní

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod james11 16. 12. 2008 18:15

chci PHP tak aby mi načetlo dvě čísla, číslo A misí být menší než číslo B. Poté chci tyto čísla vypsat pod sebe. Dále by měla být v kódu možnost volby operace + - * / a to tak, aby by to tyto čísla buď sečetlo, odečetlo, vynásobilo vydělilo, poradí mi někdo jak na to?
Nikdy neříkej to nejde... :-)
james11
Mírně pokročilý
Uživatelský avatar

Odeslat příspěvekod james11 16. 12. 2008 18:20

tady je ukázka ale nebere mi to nulu :( http://celeronium.wz.cz/php/index.php
Nikdy neříkej to nejde... :-)
james11
Mírně pokročilý
Uživatelský avatar

Odeslat příspěvekod K8 16. 12. 2008 20:32

hezky, ale to podstatny je v tom spocti.php ...
K8
Pokročilý

Odeslat příspěvekod james11 16. 12. 2008 20:41

a uměl bys poradit co mám špatně?
Nikdy neříkej to nejde... :-)
james11
Mírně pokročilý
Uživatelský avatar

Odeslat příspěvekod K8 16. 12. 2008 20:46

nejspis nejaka podminka, kde neumis poznat, jestli v promenne nic neni nebo je v ni nula
K8
Pokročilý

Odeslat příspěvekod cartman77 16. 12. 2008 20:50

no "krát" taky funguje jinak, než bych si u "krát" představoval....např. 2*5 vyhodí výsledek 120 (2*3*4*5). Co s těma číslama vlastně děláš? Dyť by stačilo pouze zjistit, jaká operace se má udělat a podle toho počítat....

Kód: Vybrat vše
if ($op == "*") $c=$a*$b;


tohle musí zvládat aji nulu, jenom když dělíš, musíš zkontrolovat, jestli druhý číslo není nula.
...stále se potkávám s novými a novými, namydlenými lidmi...
cartman77
Junior
Uživatelský avatar

Odeslat příspěvekod james11 16. 12. 2008 21:07

tady je kód toho spocti.php, vysvětlí mi prosím někdo kde mám chybu?
Kód: Vybrat vše
<HTML>
  <HEAD>
    <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=Windows-1250">
    <TITLE>TZI</TITLE>
  </HEAD>
<BODY TEXT="#000000" LINK="#0000FF" ALINK="#FF0000" VLINK="#FF00FF" BGCOLOR="#C0C0C0">
<CENTER>
<?php
$hodnota_a=$_REQUEST['cislo_a'];
$hodnota_b=$_REQUEST['cislo_b'];
$operace=$_REQUEST['operace'];

if (!($hodnota_a) || !($hodnota_b))
{
   echo "Zadejte hodnoty <b>A</b> a <b>B</b>";
}
elseif ($hodnota_b < $hodnota_a)
{
   echo "Hodnota B nesmí být menší než hodnota A";
}
else
{
   $suma = 0;
   $b = 0;
   if ($operace == "+")
   {
      for ($a = $hodnota_a; $a <= $hodnota_b; $a++)
      {
         if ($suma == 0)
         {
            $suma = $a;
         }         
         else
         {
            $suma = ($suma + $a);
         }
         echo "$a<br>";
      }
   }
   elseif ($operace == "-")
   {
      for ($a = ($hodnota_a); $a <= $hodnota_b; $a++)
      {
         if ($suma == 0)
         {
            $suma = $a;
         }         
         else
         {
            $suma = ($suma - $a);
         }
         echo "$a<br>";
      }
   }
   elseif ($operace == "*")
   {
      for ($a = $hodnota_a; $a <= $hodnota_b; $a++)
      {
         if (($suma == 0) && !($b))
         {
            $suma = $a;
            $b++;
         }         
         else
         {
            $suma = ($suma * $a);
         }
         echo "$a<br>";
      }
   }
   elseif ($operace == "/")
   {
      for ($a = $hodnota_a; $a <= $hodnota_b; $a++)
      {
         if (($suma == 0) && !($b))
         {
            $suma = $a;
            $b++;
         }         
         else
         {
            $suma = ($suma / $a);
         }
         echo "$a<br>";
      }
   }
   echo "<br>Výsledek: <b>$suma</b>";
}

?>
<BR><BR>
<A HREF="zapocet.php"><FONT FACE="Arial" COLOR="#000000" SIZE=4>zpět</FONT></A>
</CENTER>
</BODY>
</HTML>
Nikdy neříkej to nejde... :-)
james11
Mírně pokročilý
Uživatelský avatar

Odeslat příspěvekod K8 16. 12. 2008 21:17

chyba je hned v te prvni podmince, proto kdyz je zadana nula, tak se provede
echo "Zadejte hodnoty <b>A</b> a <b>B</b>";
misto zbytku kodu, to je to co jsem si myslel - spatne postavena podminka, ktera nerozlisuje 0 a nic nezadano

vysvetleni zde - http://www.php.net/manual/en/types.comparisons.php
K8
Pokročilý

Odeslat příspěvekod cartman77 16. 12. 2008 21:29

jj, pro kontrolu existence vstupních dat použij "isset", to ti pak sežere aji zadanou nulu. A pak je otázkou proč pro počítání používáš cyklus (viz. 2*3*4*5 výše)....
...stále se potkávám s novými a novými, namydlenými lidmi...
cartman77
Junior
Uživatelský avatar

Odeslat příspěvekod K8 16. 12. 2008 21:43

no a co když se místo čísel zadá něco jiného?
K8
Pokročilý

Odeslat příspěvekod james11 16. 12. 2008 21:48

cartman77 píše:jj, pro kontrolu existence vstupních dat použij "isset", to ti pak sežere aji zadanou nulu. A pak je otázkou proč pro počítání používáš cyklus (viz. 2*3*4*5 výše)....


"isset" ?

cyklus používám proto, protože chci např. při zadání čísla-A 1 a čísla-B 5 součet/rozdíl/součin/podíl čísel 1 2 3 4 5 ;-)
Naposledy upravil james11 dne 16. 12. 2008 21:56, celkově upraveno 1
Nikdy neříkej to nejde... :-)
james11
Mírně pokročilý
Uživatelský avatar

Odeslat příspěvekod james11 16. 12. 2008 21:49

K8 píše:no a co když se místo čísel zadá něco jiného?


to by šlo taky ošetřit ale to zatím neřeším
Nikdy neříkej to nejde... :-)
james11
Mírně pokročilý
Uživatelský avatar

Odeslat příspěvekod james11 16. 12. 2008 22:10

cartman77 píše:no "krát" taky funguje jinak, než bych si u "krát" představoval....např. 2*5 vyhodí výsledek 120 (2*3*4*5). Co s těma číslama vlastně děláš? Dyť by stačilo pouze zjistit, jaká operace se má udělat a podle toho počítat....

Kód: Vybrat vše
if ($op == "*") $c=$a*$b;


tohle musí zvládat aji nulu, jenom když dělíš, musíš zkontrolovat, jestli druhý číslo není nula.



počítám ne dvě čísla ale celou řadu mezi nima, tzn. že při 2 a 5 je to 2*3*4*5=
Nikdy neříkej to nejde... :-)
james11
Mírně pokročilý
Uživatelský avatar

Odeslat příspěvekod K8 17. 12. 2008 08:59

james11 píše:"isset" ?

kdyby jsi se podival na ten odkaz do manualu co jsem ti daval, tak bys videl krasnou tabulku, kde mas mozne hodnoty, kterych muse promenna nabyvat a vedle toho co vraci ruzne funkce, takze pak snad muzes rozlist, jestli je promenna naplnena, jestli ma hodnotu NULL nebo 0 apod (a isset je jedna z funkci v tabulce uvedena)
pridavam jeste dalsi odkazy k teto problematice
http://www.php.net/manual/en/language.o ... arison.php
http://www.php.net/manual/en/ref.var.php
a pokud ti nejde anglictina, tak si muzes vybrat jiny jazyk (manual je v English, Bulgarian, Brazilian Portuguese, French, German, Japanese, Korean, Polish, Romanian, Russian, Spanish, Turkish) nebo trochu starsi verze manual v cestine (cestina jiz neni udrzovany jazyk manualu php ale drive tam take byvala a tyhle zaklady tam jsou a stale plati stejne) se da stahnout na http://webserver.chytrak.cz (v chm souboru)
K8
Pokročilý

Odeslat příspěvekod james11 29. 12. 2008 14:54

nikdo nic? :hm
Nikdy neříkej to nejde... :-)
james11
Mírně pokročilý
Uživatelský avatar

Další stránka

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků