Autor | Zpráva | ||
---|---|---|---|
muhch Profil |
#1 · Zasláno: 29. 5. 2012, 20:20:06
Dobrý den, měl bych na vás takovou prosbu. Vytvořil jsem si kalkulačku a chtěl bych do ní ještě doplnit závorky a paměti, ale nevím si vůbec rady jak to tam dostat a hlavne co :D , napadl me eval ale nvm dávám sem kod. díky moc všem co se na to podívají
<link rel='stylesheet' type='text/css' href='kalkul.css'> <h1> _Kalkulacka_</h1> <?php if(isset($_GET["tl"])) {$cudlik = $_GET["tl"];} else {$cudlik = "";} if(isset($_GET["txt1"])) {$cislo1 = $_GET["txt1"];} else {$cislo1 = "";} if(isset($_GET["txt2"])) {$cislo2 = $_GET["txt2"];} else {$cislo2 = "";} if(isset($_GET["txt3"])) {$cislo3 = $_GET["txt3"];} else {$cislo3 = "";} switch ($cudlik) { case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8: case 9: $cislo1 = $_GET["txt1"]*10 + $_GET["tl"]; break; case "plus": $cislo2 = $cislo1; $cislo1 = ""; $cislo3 = $_GET["tl"]; break; case "minus": $cislo2 = $cislo1; $cislo1 = ""; $cislo3 = $_GET["tl"]; break; case "krat": $cislo2 = $cislo1; $cislo1 = ""; $cislo3 = $_GET["tl"]; break; case "deleno": $cislo2 = $cislo1; $cislo1 = ""; $cislo3 = $_GET["tl"]; break; case "rovno": if($cislo3 == "plus") { $cislo1 = $cislo2 + $cislo1; $cislo2 = ""; $cislo3 = ""; } if($cislo3 == "minus") { $cislo1 = $cislo2 - $cislo1; $cislo2 = ""; $cislo3 = ""; } if($cislo3 == "krat") { $cislo1 = $cislo2 * $cislo1; $cislo2 = ""; $cislo3 = ""; } if($cislo3 == "deleno") { $cislo1 = $cislo2 / $cislo1; $cislo2 = ""; $cislo3 = ""; } break; } echo " <form> <div id='tlacitka'> <p class='txt1'> <input type='text' name='txt1' size='20' value='$cislo1'> </p><p class='jedna'> <button type='submit' value='1' name='tl'>1</button> </p><p class='dva'> <button type='submit' value='2' name='tl'>2</button> </p><p class='tri'> <button type='submit' value='3' name='tl'>3</button> </p><p class='ctyri'> <button type='submit' value='4' name='tl'>4</button> </p><p class='pet'> <button type='submit' value='5' name='tl'>5</button> </p><p class='sest'> <button type='submit' value='6' name='tl'>6</button> </p><p class='sedm'> <button type='submit' value='7' name='tl'>7</button> </p><p class='osm'> <button type='submit' value='8' name='tl'>8</button> </p><p class='devet'> <button type='submit' value='9' name='tl'>9</button> </p><p class='plus'> <button type='submit' value='plus' name='tl'>+</button> </p><p class='minus'> <button type='submit' value='minus' name='tl'>-</button> </p><p class='krat'> <button type='submit' value='krat' name='tl'>*</button> </p><p class='deleno'> <button type='submit' value='deleno' name='tl'>/</button> </p><p class='rovno'> <button type='submit' value='rovno' name='tl'>=</button> </p><p class='txt2'> <input type='text' name='txt2' size='20' value='$cislo2'> </p><p class='txt3'> <input type='text' name='txt3' size='20' value='$cislo3'> </p> </div> </form> "; ?> |
||
nemeja Profil |
#2 · Zasláno: 29. 5. 2012, 20:25:36
na závorky budeš potřebovat asi regulární výraz, nejdřív vypočítat to co je v závorce a pak místo té závorky dosadit výsledek no a na tu pamět použij třeba cookies, nebo session, popřípadě bys to mohl dát do nějakýho hidden inputu, ale to se pak dá editovat, nicméně pokud to chceš jen pro sebe, tak ten hidden input bude stačit
|
||
muhch Profil |
#3 · Zasláno: 29. 5. 2012, 20:53:00
nemeja:
Ok , něco jsem ted zkousel ale vyhodilo mi to hned error tak nevim no, uvidim nejak to musim vymslet |
||
nemeja Profil |
Když nám sem hodíš kod, tak ti rádi pomůžem ;)
|
||
muhch Profil |
#5 · Zasláno: 29. 5. 2012, 21:08:49 · Upravil/a: muhch
nemeja:
Cely kod co jsem psal je pod mim prvni komentarem :D a jinak jsem skosel tohle ale nejak mi to blbne asi jsem to narval blbe nekam :D if (isset($_GET['pamet_n'])) { $pamet_n=$_GET['pamet_n']; if($pamet_n == 17) //M+ { if(!empty($pamet)) { if(!empty($cislopred)) { $pamet = $pamet + $cislopred; } else { $pamet = $pamet + $cislo; $cislo=""; } } else if(!empty($cislopred)) { $pamet = $cislopred; $cislo= ""; } else { $pamet= $cislo; } } <input type='hidden' name='pamet' value=<?php if(isset($pamet)){echo $pamet;} ?>> <button type='submit' value='17' name='pamet_n'>M+</button> |
||
nemeja Profil |
#6 · Zasláno: 29. 5. 2012, 21:28:16
cky já ti tu pamět napíšu, abys viděl moje řešení a podle se nějak natuknul
|
||
muhch Profil |
#7 · Zasláno: 29. 5. 2012, 21:32:06
nemeja:
diky moc |
||
nemeja Profil |
Tak jsem to rozchodil, ale přes ty inputy, je to dost hrozivý, musíš vždycky u každýho stisknutí všechno vypsat, doporučil bych ti udělat to spíš přes ty cookies, nebo sessions. Pokud tam chceš udělat ještě závorky, tak to by ses s tímhle zbláznil, komentovat to nebudu je to furt to samý, kdyžtak se zeptej. Jestli budeš chtít, klidně ti pak ještě pomůžu s tou další variantou ;) Doufám, že ten kod pochopíš. M se vyvolá v případě, že je prazdnej display a zapíše se pokud na display je nějaké číslo. Pokud máš nějaké číslo na displayi a zmáčkneš další, tak se přidá, jakmile zmáčkneš operátor, tak pak můžeš psát a on si pamatuje to předchozí a jakmile zmáčkneš rovnítko, tak to spočítá. MC vynuluje pamět.
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method = "POST"> <table> <tr> <td colspan="4"> <?php if(isset($_POST['tlacitko'])){ switch($_POST['tlacitko']){ case "+": echo "<input type=\"hidden\" name=\"pomocny\" value=\"".$_POST['display']."\">"; echo "<input type=\"hidden\" name=\"znamenko\" value=\"+\">"; echo "<input type=\"hidden\" name=\"display\" value=\"\">\n"; echo "<input type=\"hidden\" name=\"pamet1\" value=\"".@$_POST['pamet1']."\">\n"; break; case "-": echo "<input type=\"hidden\" name=\"pomocny\" value=\"".$_POST['display']."\">"; echo "<input type=\"hidden\" name=\"znamenko\" value=\"-\">"; echo "<input type=\"hidden\" name=\"display\" value=\"\">\n"; echo "<input type=\"hidden\" name=\"pamet1\" value=\"".@$_POST['pamet1']."\">\n"; break; case "=": switch($_POST['znamenko']){ case "+": $vysledek = (int)$_POST['pomocny'] + (int) $_POST['display']; echo "<input type=\"hidden\" name=\"pomocny\" value=\"$vysledek\">\n"; echo "<input type=\"text\" name=\"display\" value=\"$vysledek\">\n"; echo "<input type=\"hidden\" name=\"pamet1\" value=\"".$_POST['pamet1']."\">\n"; break; case "-": $vysledek = (int)$_POST['pomocny'] - (int) $_POST['display']; echo "<input type=\"hidden\" name=\"pomocny\" value=\"$vysledek\">\n"; echo "<input type=\"text\" name=\"display\" value=\"$vysledek\">\n"; echo "<input type=\"hidden\" name=\"pamet1\" value=\"".$_POST['pamet1']."\">\n"; break; } break; case "M1": if($_POST['display'] != ""){ echo "<input type=\"hidden\" name=\"pamet1\" value=\"".$_POST['display']."\">\n"; echo "<input type=\"hidden\" name=\"pomocny\" value=\"".@$_POST['pomocny']."\">\n"; echo "<input type=\"hidden\" name=\"znamenko\" value=\"".@$_POST['znamenko']."\">\n"; echo "<input type=\"text\" name=\"display\" value=\"".$_POST['display']."\">\n"; } else { echo "<input type=\"hidden\" name=\"pamet1\" value=\"".$_POST['pamet1']."\">\n"; echo "<input type=\"hidden\" name=\"pomocny\" value=\"".@$_POST['pomocny']."\">\n"; echo "<input type=\"hidden\" name=\"znamenko\" value=\"".@$_POST['znamenko']."\">\n"; echo "<input type=\"text\" name=\"display\" value=\"".$_POST['pamet1']."\">\n"; } break; case "C": echo "<input type=\"text\" name=\"display\" value=\"\">\n"; echo "<input type=\"hidden\" name=\"pamet1\" value=\"".$_POST['pamet1']."\">\n"; break; case "MC": echo "<input type=\"hidden\" name=\"pomocny\" value=\"".@$_POST['pomocny']."\">\n"; echo "<input type=\"hidden\" name=\"znamenko\" value=\"".@$_POST['znamenko']."\">\n"; echo "<input type=\"text\" name=\"display\" value=\"".$_POST['display']."\">\n"; break; default: echo "<input type=\"hidden\" name=\"pamet1\" value=\"".@$_POST['pamet1']."\">\n"; echo "<input type=\"hidden\" name=\"pomocny\" value=\"".@$_POST['pomocny']."\">\n"; echo "<input type=\"hidden\" name=\"znamenko\" value=\"".@$_POST['znamenko']."\">\n"; if((int)$_POST['tlacitko'] <= 9 && (int)$_POST['tlacitko'] >= 0){ echo "<input type=\"text\" name=\"display\" value=\"".@$_POST['display'].$_POST['tlacitko']."\">\n"; } else { echo "chyba" ; break; } } } ?> </td> </tr> <tr> <?php $tlacitka = array("=","MC","0","C","+","1","2","3","-","4","5","6","M1","7","8","9"); // tlačítka kalkulačky $radek = 4; // pocet tlacitek na radek $aktualne_tlacitek = 0; // aktualní počet tlačítek na řádku for($i = (count($tlacitka) - 1); $i >= 0; $i--){ $aktualne_tlacitek++; echo "<td><input type=\"submit\" name=\"tlacitko\" value=\"".$tlacitka[$i]."\""; if($tlacitka[$i] == ""){ echo "disabled"; } echo "></td>\n"; if($aktualne_tlacitek == $radek){ echo "\n</tr>\n<tr>"; $aktualne_tlacitek = 0; } } ?> </tr> </table> </form> |
||
Joker Profil |
#9 · Zasláno: 30. 5. 2012, 08:19:20
muhch:
Mně v první řadě přijde nepohodlné dělat kalkulačku na straně serveru a při každém stisknutí tlačítka si přeposílat data mezi klientem a serverem, když stejná funkčnost je k dispozici i na klientovi (v Javascriptu). Když už by výraz měl vyhodnocovat server a navíc umět pokročilejší věci jako závorky, asi by bylo lepší to udělat tak, že by uživatel napsal na klientovi celý výraz a až pak by ho poslal na server, který by měl nějaký parser na to. Samozřejmě by to ale bylo složitější na programování. Jednodušší by mi přišel ten Javascript. |
||
Ugo Profil |
tohle předně není žádná kalkulačka, základní kalkulačka (co bere v potaz přednosti, ale závorky, paměti atp. nemá) vypadá nějak takhle, je to tvorba tak před 3-4 lety, myslím že pokud si vemeš koncept (asi udělat jinak, nevim) toho že to má bejt kalkulačka a doplníš tam funkční závorky, tak to bude bomba :) žel když na tohle koukám tak v tom se nevyzná už ani prase :D
<html> <head> <link rel="shortcut icon" href="http://www.ocv.wz.cz/images/ocv.bmp" type="image/x-icon" /> <title>OCV-software</title> <style> .tlacitko{width:45px;height:33px;font-weight:900;background-color:fff1b;background-image:url(http://ocv.wz.cz/calc/tlacitko.png);border:0;color:#cecece} .tlacitko2{width:95px;height:33px;font-weight:900;background-image:url(http://ocv.wz.cz/calc/tlacitko2.png);} </style> </head> <body> <?php $vysledek = ""; if(!empty($_POST['pole'])) { $pole=$_POST['pole']; $delkapole=strlen($pole); $i=1; $znacka=0; while($i<=$delkapole): $ii=$znacka+1; if (ord(substr($pole,$i,1))=="43") { $delkaprvniho=0; while($ii<=$i): if(ord(substr($pole,$ii,1))=="45") $delkaprvniho=$delkaprvniho+1; if(ord(substr($pole,$ii,1))=="46") $delkaprvniho=$delkaprvniho+1; if(ord(substr($pole,$ii,1))>=48 and ord(substr($pole,$ii,1))<=57) $delkaprvniho=$delkaprvniho+1; $ii++; endwhile; $iii=$i+1; $ii=$znacka+1; $delkadruheho=0; while($iii<=$delkapole): if(ord(substr($pole,$iii,1))=="45") $delkadruheho=$delkadruheho+1; if(ord(substr($pole,$iii,1))=="46") $delkadruheho=$delkadruheho+1; if(ord(substr($pole,$iii,1))>=48 and ord(substr($pole,$iii,1))<=57) $delkadruheho=$delkadruheho+1; if(ord(substr($pole,$iii,1))=="45") $iii=$delkapole; if(ord(substr($pole,$iii,1))=="43") $iii=$delkapole; if(ord(substr($pole,$iii,1))=="42") $iii=$delkapole; if(ord(substr($pole,$iii,1))=="47") $iii=$delkapole; $iii++; endwhile; $iii=$i+1; $prvni=substr($pole,$ii,$delkaprvniho); $druhy=substr($pole,$iii,$delkadruheho); if(ord(substr($pole,$iii+$delkadruheho,1))=="42") $druhy=0; if(ord(substr($pole,$iii+$delkadruheho,1))=="47") $druhy=0; if($znacka=="0") {$vysledek=$vysledek+($prvni+$druhy);} elseif($znacka>0) {$vysledek=$vysledek+$druhy;} $znacka=$i; } elseif (ord(substr($pole,$i,1))=="45") { $delkaprvniho=0; while($ii<=$i): if(ord(substr($pole,$ii,1))=="45") $delkaprvniho=$delkaprvniho+1; if(ord(substr($pole,$ii,1))=="46") $delkaprvniho=$delkaprvniho+1; if(ord(substr($pole,$ii,1))>=48 and ord(substr($pole,$ii,1))<=57) $delkaprvniho=$delkaprvniho+1; $ii++; endwhile; $iii=$i+1; $ii=$znacka+1; $delkadruheho=0; while($iii<=$delkapole): if(ord(substr($pole,$iii,1))=="45") $delkadruheho=$delkadruheho+1; if(ord(substr($pole,$iii,1))=="46") $delkadruheho=$delkadruheho+1; if(ord(substr($pole,$iii,1))>=48 and ord(substr($pole,$iii,1))<=57) $delkadruheho=$delkadruheho+1; if(ord(substr($pole,$iii,1))=="45") $iii=$delkapole; if(ord(substr($pole,$iii,1))=="43") $iii=$delkapole; if(ord(substr($pole,$iii,1))=="42") $iii=$delkapole; if(ord(substr($pole,$iii,1))=="47") $iii=$delkapole; $iii++; endwhile; $iii=$i+1; $prvni=substr($pole,$ii,$delkaprvniho); $druhy=substr($pole,$iii,$delkadruheho); if(ord(substr($pole,$iii+$delkadruheho,1))=="42") {$druhy=0;} if(ord(substr($pole,$iii+$delkadruheho,1))=="47") {$druhy=0;} if($znacka=="0") {$vysledek=$vysledek+($prvni-$druhy);} elseif($znacka>0) {$vysledek=$vysledek-$druhy;} $znacka=$i; } elseif (ord(substr($pole,$i,1))=="42") { $delkaprvniho=0; while($ii<=$i): if(ord(substr($pole,$ii,1))=="45") $delkaprvniho=$delkaprvniho+1; if(ord(substr($pole,$ii,1))=="46") $delkaprvniho=$delkaprvniho+1; if(ord(substr($pole,$ii,1))>=48 and ord(substr($pole,$ii,1))<=57) $delkaprvniho=$delkaprvniho+1; $ii++; endwhile; $iii=$i+1; $ii=$znacka+1; $delkadruheho=0; while($iii<=$delkapole): if(ord(substr($pole,$iii,1))=="45") $delkadruheho=$delkadruheho+1; if(ord(substr($pole,$iii,1))=="46") $delkadruheho=$delkadruheho+1; if(ord(substr($pole,$iii,1))>=48 and ord(substr($pole,$iii,1))<=57) $delkadruheho=$delkadruheho+1; if(ord(substr($pole,$iii,1))=="45") $iii=$delkapole; if(ord(substr($pole,$iii,1))=="43") $iii=$delkapole; if(ord(substr($pole,$iii,1))=="42") $iii=$delkapole; if(ord(substr($pole,$iii,1))=="47") $iii=$delkapole; $iii++; endwhile; $iii=$i+1; $prvni=substr($pole,$ii,$delkaprvniho); $druhy=substr($pole,$iii,$delkadruheho); if($znacka=="0") { if(ord(substr($pole,$ii-'1',1))=="61"){$vysledek=$vysledek+($prvni*$druhy);} if(ord(substr($pole,$ii-'1',1))=="43"){$vysledek=$vysledek+($prvni*$druhy);} if(ord(substr($pole,$ii-'1',1))=="45"){$vysledek=$vysledek-($prvni*$druhy);} } elseif($znacka>0) { if(ord(substr($pole,$ii-'1',1))=="61"){$vysledek=$vysledek+($prvni*$druhy);} if(ord(substr($pole,$ii-'1',1))=="43"){$vysledek=$vysledek+($prvni*$druhy);} if(ord(substr($pole,$ii-'1',1))=="45"){$vysledek=$vysledek-($prvni*$druhy);} if(ord(substr($pole,$ii-'1',1))=="42"){$vysledek=$vysledek*$druhy;} if(ord(substr($pole,$ii-'1',1))=="47"){$vysledek=$vysledek*$druhy;} } $znacka=$i; } elseif (ord(substr($pole,$i,1))=="47") { $delkaprvniho=0; while($ii<=$i): if(ord(substr($pole,$ii,1))=="45") $delkaprvniho=$delkaprvniho+1; if(ord(substr($pole,$ii,1))=="46") $delkaprvniho=$delkaprvniho+1; if(ord(substr($pole,$ii,1))>=48 and ord(substr($pole,$ii,1))<=57) $delkaprvniho=$delkaprvniho+1; $ii++; endwhile; $iii=$i+1; $ii=$znacka+1; $delkadruheho=0; while($iii<=$delkapole): if(ord(substr($pole,$iii,1))=="45") $delkadruheho=$delkadruheho+1; if(ord(substr($pole,$iii,1))=="46") $delkadruheho=$delkadruheho+1; if(ord(substr($pole,$iii,1))>=48 and ord(substr($pole,$iii,1))<=57) $delkadruheho=$delkadruheho+1; if(ord(substr($pole,$iii,1))=="45") $iii=$delkapole; if(ord(substr($pole,$iii,1))=="43") $iii=$delkapole; if(ord(substr($pole,$iii,1))=="42") $iii=$delkapole; if(ord(substr($pole,$iii,1))=="47") $iii=$delkapole; $iii++; endwhile; $iii=$i+1; $prvni=substr($pole,$ii,$delkaprvniho); $druhy=substr($pole,$iii,$delkadruheho); if($znacka=="0") { if(ord(substr($pole,$ii-'1',1))=="61"){$vysledek=$vysledek+($prvni/$druhy);} if(ord(substr($pole,$ii-'1',1))=="43"){$vysledek=$vysledek+($prvni/$druhy);} if(ord(substr($pole,$ii-'1',1))=="45"){$vysledek=$vysledek-($prvni/$druhy);} } elseif($znacka>0) { if(ord(substr($pole,$ii-'1',1))=="61"){$vysledek=$vysledek+($prvni/$druhy);} if(ord(substr($pole,$ii-'1',1))=="43"){$vysledek=$vysledek+($prvni/$druhy);} if(ord(substr($pole,$ii-'1',1))=="45"){$vysledek=$vysledek-($prvni/$druhy);} if(ord(substr($pole,$ii-'1',1))=="42"){$vysledek=$vysledek/$druhy;} if(ord(substr($pole,$ii-'1',1))=="47"){$vysledek=$vysledek/$druhy;} } $znacka=$i; } $i++; endwhile; } ?> <form action="" method="post"> <table align="center" style="border:1px black solid;background-color:grey"> <tr><td colspan="3"> <input value="=<?php echo $vysledek ?>" name="pole" id="a" type="text" style="text-align:right;height:32;font-size:20" size="12"> <td> <input type="button" class="tlacitko" value="C" onclick="a.value='='"> <tr> <td> <input type="button" class="tlacitko" value="7" onclick="a.value=a.value+'7'"> <td> <input type="button" class="tlacitko" value="8" onclick="a.value=a.value+'8'"> <td> <input type="button" class="tlacitko" value="9" onclick="a.value=a.value+'9'"> <td> <input type="button" class="tlacitko" value="+" onclick="a.value=a.value+'+'"> <tr> <td> <input type="button" class="tlacitko" value="4" onclick="a.value=a.value+'4'"> <td> <input type="button" class="tlacitko" value="5" onclick="a.value=a.value+'5'"> <td> <input type="button" class="tlacitko" value="6" onclick="a.value=a.value+'6'"> <td> <input type="button" class="tlacitko" value="-" onclick="a.value=a.value+'-'"> <tr> <td> <input type="button" class="tlacitko" value="1" onclick="a.value=a.value+'1'"> <td> <input type="button" class="tlacitko" value="2" onclick="a.value=a.value+'2'"> <td> <input type="button" class="tlacitko" value="3" onclick="a.value=a.value+'3'"> <td> <input type="button" class="tlacitko" value="x" onclick="a.value=a.value+'*'"> <tr> <td> <input type="button" class="tlacitko" value="0" onclick="a.value=a.value+'0'"> <td> <input type="button" class="tlacitko" value="." onclick="a.value=a.value+'.'"> <td> <input type="submit" class="tlacitko" value="="> <td> <input type="button" class="tlacitko" value="/" onclick="a.value=a.value+'/'"> <td> </table> </body> </html> |
||
Časová prodleva: 12 let
|
0