Autor | Zpráva | ||
---|---|---|---|
Holicz Profil |
#1 · Zasláno: 27. 9. 2011, 15:02:47
Zradím. Jen tak z nudy jsem (asi 5 - 10 min volna) jsem si zkusil udělat kalkulačku na procenta. Mělo by to fungovat tak, že zadáte částku (třeba kniha, 600 Kč ) a pak slevu např. 15% .. jen tak jsem tam i možnost, že by se ty procenta přičetli (takže 600-15% nebo 600+%15)
Dělám to způsobem 100% / 100 = 1% 1% * POČET PROCENT = Počet na odečtení nebo přičtení ( třeba y) no a pak 100% - nebo + y Ale vždy se to jen odečte ... index.html <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> <title>Kalkulačka</title> </head> <body> <form method="post" action="vypocet.php"> <input type="text" name="procenta"> Zadejte plnou částku <br> <input type="text" name="pr"> Zadejte počet procent, které chete odečíst nebo přičíst <br> <input type="radio" name="sno" value="+"> Procenta se k zadané částe přičtou <br> <input type="radio" name="sno" value="-"> Procenta se od zadané částky odečtou <br> <input type ="submit"> </body> </html> vypocet.php <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> <title>KalkulaÄŤka</title> </head> <body> <? $procenta=$_POST['procenta']; // Z formuláře vezmeme plnou částku $pr=$_POST['pr']; // Vybereme procenta na odečtení nebo přičtení $sno=$_POST['sno']; // Z formuláře vyberem, zda se to bude odečítat nebo přičítat $procento=$procenta/100; $mezi=$procento*$pr; if ("$sno==+"); { $vysledek=$procenta+$mezi; } if ("$sno==-"); { $vysledek=$procenta-$mezi; } echo ("$vysledek"); ?> |
||
okolojdouci Profil * |
#2 · Zasláno: 27. 9. 2011, 15:23:17
Holicz:
„if ("$sno==+");“ „echo ("$vysledek");“ To je nějaká epidemie, nebo co? - uvozovky používejte pouze k ohraničení textu - uvozovky nepoužívejte kolem proměnných, když tomu nerozumíte - proměnné a texty můžete spojovat tečkou echo $promenna; // všimni si, že tady uvozovky nejsou. K čemu by taky byly? echo $promenna."s přilepeným textem"; echo "jde to i zleva".$promenna."i zprava"."a třeba ještě jednou"; |
||
Tori Profil |
#3 · Zasláno: 27. 9. 2011, 15:38:30
Holicz:
$procenta = $_POST['procenta']; // zbytečné duplikování proměnné, lepší by bylo: $procenta = intval($_POST['procenta']); // (název proměnné sice pořád neodpovídá jejímu obsahu, ale aspoň to přiřazení má smysl) |
||
Rellik Profil |
#4 · Zasláno: 27. 9. 2011, 15:58:36 · Upravil/a: Rellik
celé by se to dalo o moc zkrátit.
Příklad: <?php $procenta = intval($_POST['procenta']); $pr = intval($_POST['pr']); $sno = htmlspecialchars($_POST['sno']); $procento = $procenta/100; $mezi = $procento*$pr; if($sno == "+") { $vysledek = $procenta + $mezi; } else { $vysledek = $procenta - $mezi; } echo $vysledek; ?> |
||
Joker Profil |
#5 · Zasláno: 27. 9. 2011, 16:11:19 · Upravil/a: Joker
Rellik:
Na řádku 5 asi nemá být $procenta, ale $pr. V poli "procenta" je (vcelku nelogicky) uložená částka. Šlo by to takhle: <?php $castka = intval($_POST['procenta']); // ehm $procento = intval($_POST['pr']) / 100; $mezi = $castka*$pr; if($_POST['sno'] == "-") // jako výchozí pro else bych použil spíš +, ale záleží, zároveň není nutné escapovat, když se jen porovnává { $vysledek = $castka - $mezi; } else { $vysledek = $castka + $mezi; } echo $vysledek; ?> Samozřejmě by to šlo ještě zkrátit, ale asi už na úkor čitelnosti. |
||
Tori Profil |
#6 · Zasláno: 27. 9. 2011, 16:24:26
Případně takhle, snad je to ještě čitelné:
$castka = intval($_POST['castka']); $kolikProcent = intval($_POST['pr']); $rozdil = ($castka / 100) * $kolikProcent * ($_POST['sno'] == '-' ? -1 : 1); $vysledek = $castka + $rozdil; echo $vysledek; |
||
Holicz Profil |
#7 · Zasláno: 27. 9. 2011, 20:25:07
Děkuji moc všem. Něco nefungovalo, ale to jsem si poupravil. Díky
|
||
Rellik Profil |
#8 · Zasláno: 27. 9. 2011, 21:05:10
Moje verze byla funkční. Zkoušel sem to na locálu... nicméně i to by šlo ještě zjednodušit... ;-)
|
||
Časová prodleva: 13 let
|
0