| 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: 9 let
|
|||
0