Autor Zpráva
Martin Sic
Profil
Dobrý den. Mám problém - jsem na střední škole, a dostali jsme za úkol vytvořit převodník jednotek. Formulář mám zpracovaný v pořádku, ale problém mám až ve zpracování výsledku...

Na zpracování přijdou tři údaje (všechny pomocí metody GET - viz níže):
hodnota - hodnota, která se má převést
hoz - z čeho převádět
hodo - do čeho převádět

1 - sekunda
2 - minuta
3 - hodina
4 - střední sluneční den
5 - týden
6 - siderický měsíc
7 - tropický roh
8 - desetiletí
9 - století

Nejprve vše převedu na základní jednotku (v tomto případě sekunda), a poté vše na požadovanou jednotku.

P. S.: PHP se teprve učím, budu rád za každou radu. Díky moc všem!

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Translation//EN">
<html>
    <head>
        <title>Převodník jednotek</title>
        <meta http-equiv="content-type" content="text/html; charset=UTF-8">    </head>
    <body>
    <?php
     if (isset($_GET['hodnota']))
      {
          $hodnota=$_GET['hodnota'];
         
         if ($_GET['hoz']=='1')
         {
           $zakhodnota=$hodnota;
            }
         if ($_GET['hoz']=='2')
         {
           $zakhodnota=$hodnota/0,01666;
            }
         if ($_GET['hoz']=='3')
         {
           $zakhodnota=$hodnota/0,0002777;
            }
         if ($_GET['hoz']=='4')
         {
           $zakhodnota=$hodnota/0,00001157;
            }
         if ($_GET['hoz']=='5')
         {
           $zakhodnota=$hodnota/0,000001653;
            }
         if ($_GET['hoz']=='6')
         {
           $zakhodnota=$hodnota/0,0000004236;
            }
         if ($_GET['hoz']=='7')
         {
           $zakhodnota=$hodnota/0,00000003169;
            }
         if ($_GET['hoz']=='8')
         {
           $zakhodnota=$hodnota/0,0000003169;
            }
         if ($_GET['hoz']=='9')
         {
           $zakhodnota=$hodnota/0,000003169;
            }
         
          if ($_GET['hodo']=='1')
        {
           $vysledek=$zakhodnota;
        }
         if ($_GET['hodo']=='2')
        {
           $vysledek=$zakhodnota*0,01666;
        }
         if ($_GET['hodo']=='3')
        {
           $vysledek=$zakhodnota*0,0002777;
        }
         if ($_GET['hodo']=='4')
        {
           $vysledek=$zakhodnota*0,00001157;
        }
         if ($_GET['hodo']=='5')
        {
           $vysledek=$zakhodnota*0,000001653;
        }
         if ($_GET['hodo']=='6')
        {
           $vysledek=$zakhodnota*0,0000004236;
        }
         if ($_GET['hodo']=='7')
        {
           $vysledek=$zakhodnota*0,00000003169;
        }
         if ($_GET['hodo']=='8')
        {
           $vysledek=$zakhodnota*0,0000003169;
        }
         if ($_GET['hodo']=='9')
        {
           $vysledek=$zakhodnota*0,000003169;
        }
         
      }
      else echo'Nebyla zadána hodnota k převodu';
      ?>
    <?php
      echo $vysledek;
    ?>
    </body>
</html>
juriad
Profil
Martin Sic:
Desetinná tečka.

A bylo by příště pěkné uvést chybu nebo popsat, jak to nefunguje.
Martin Sic
Profil
Děkuji mockrát, a omlouvám se za nepopsání přesné chyby.
Lonanek
Profil
Podle mne zbytečně dlouhý kód podmínek, který lze vyřešit polem a jedním matematickým zápisem.
juriad
Profil
Nevím, jak daleko jste se dostali v PHP; ukážu ti základ elegantního řešení, ale komentovat jej nebudu. Budeš-li mít zájem ho studovat, jistě ho nakonec pochopíš.

function preved($hodnota, $z, $do) {
    $s = 1;
    $m = 60 * $s;
    $h = 60 * $m;
    $d = 24 * $h;
    $tr = 365*$d + 5*$h + 48*$m + 45.71*$s;

    $tabulka = array(
        's' => $s,
        'm' => $m,
        'h' => $h,
        'ssd' => 1*$d + 3*$m + 56.555*$s,
        't' => 7*$d,
        'sm' => 27*$d + 43*$m + 11.5*$s,
        'tr' => 1*$tr,
        'dl' => 10*$tr,
        'sl' => 100*$tr
    );

    return $hodnota * $tabulka[$z] / $tabulka[$do];
}

echo preved(123, 'ssd', 'm');

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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