Autor | Zpráva | ||
---|---|---|---|
Martin Sic Profil |
#1 · Zasláno: 20. 5. 2016, 20:11:36
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 |
#2 · Zasláno: 20. 5. 2016, 20:16:14
Martin Sic:
Desetinná tečka. A bylo by příště pěkné uvést chybu nebo popsat, jak to nefunguje. |
||
Martin Sic Profil |
#3 · Zasláno: 20. 5. 2016, 20:37:37
Děkuji mockrát, a omlouvám se za nepopsání přesné chyby.
|
||
Lonanek Profil |
#4 · Zasláno: 20. 5. 2016, 20:42:24
Podle mne zbytečně dlouhý kód podmínek, který lze vyřešit polem a jedním matematickým zápisem.
|
||
juriad Profil |
#5 · Zasláno: 20. 5. 2016, 20:43:50
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'); |
||
Časová prodleva: 7 let
|
0