Autor Zpráva
Holicz
Profil
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 *
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
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
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
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
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
Děkuji moc všem. Něco nefungovalo, ale to jsem si poupravil. Díky
Rellik
Profil
Moje verze byla funkční. Zkoušel sem to na locálu... nicméně i to by šlo ještě zjednodušit... ;-)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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

0