ďťż
Podstrony
|
telcocafeWitam!Mam dziwny problem, napisałem niedawno skrypt do obsługi kasy. Wszystko działa ładnie, poza jednym dziwnym zachowaniem. Obsługa polega na wypełnieniu pól z wpłatami, jest kilka opcji do wyboru. Podczas wypełniania na bierząco jest przeliczana suma i prowizja (jej wielkość jest pobierana z bazy) za pomocą Ajax'a. Nie wiem dlaczego tak się dzieje, ale jak w pole gaz wpiszę 126.42, dalej przeklikam się tabulatorem i zaakceptuję wpłatę to pojawia się błąd. Wcześniej miałem funckę która sprawdzała mi czy wpłaty się bilansują tzn. suma wpłat cząstkowych + prowizja = suma wpłat. Jak się nie bilansowało z jakiegoś powodu to program miał zwrocić komunikat o błędzie a jak się bilansują to dodać wpłatę do bazy. Problem pojawił się przy owej magicznej kwocie 126.42, sprawdzałem zmienne pobierane przez skrypt, liczyłem ręcznie i wsio powinno grać, a tymczasem skrypt uparcie twierdzi że suma_getow > suma_wplat (zmienne w kodzie). Zgłupiałem jak to zobaczyłem, tymbardziej ze po "wyechowaniu" zmiennych okazuje się że są one identyczne! Może wy dopatrzycie się jakiegoś babola, bo ja nic nie widzę. Zaczynam od pliku wplada_update.php (to jest oczywiście fragment pliku, wyciąłem z niego pola do danych adresowych, ktore otrzymywalem sesją, więc nie zastanawiajcie sie dlaczego jest rozszerzenia php a nie ma ani grama kodu w php w tym pliku. wplata_update.php <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" /> <link href="Level3_3.css" rel="stylesheet" type="text/css"> <script type="text/javascript" src="advajax.js"></script> <script type="text/javascript"> function $(id) { return document.getElementById(id); } function przelicz_prowizja() { var gaz=$("gaz").value; var prad=$("prad").value; var tel_kom=$("tel_kom").value; var tel_stac=$("tel_stac").value; var isko=$("isko").value; var inne=$("inne").value; var zapytanie = "prowizja.php?gaz="+gaz+"&prad="+prad+"&tel_kom="+tel_kom+"&tel_stac=" +tel_stac+"&isko="+isko+"&inne="+inne; advAJAX.get({ url : zapytanie, onSuccess : function(obj) { document.getElementById("prowizja").value=obj.responseText; }, onloading : function(obj) { document.getElementById("prowizja").value="Przeliczanie..."; } }); } function $(id) { return document.getElementById(id); } function przelicz_suma() { var gaz=$("gaz").value; var prad=$("prad").value; var tel_kom=$("tel_kom").value; var tel_stac=$("tel_stac").value; var isko=$("isko").value; var inne=$("inne").value; var prowizja=$("prowizja").value; var zapytanie = "suma.php?gaz="+gaz+"&prad="+prad+"&tel_kom="+tel_kom+"&tel_stac=" +tel_stac+"&isko="+isko+"&inne="+inne+"&prowizja="+prowizja; advAJAX.get({ url : zapytanie, onSuccess : function(obj) { document.getElementById("suma_wplat").value=obj.responseText; }, onloading : function(obj) { document.getElementById("suma_wplat").value="Przeliczanie..."; } }); } function $(id) { return document.getElementById(id); } function przelicz_reszta() { //suma+start var suma_wplat=$("suma_wplat").value; var kont_gotowka=$("kont_gotowka").value; var zapytanie = "reszta.php?suma_wplat="+suma_wplat+"&kont_gotowka="+kont_gotowka; advAJAX.get({ url : zapytanie, onSuccess : function(obj) { document.getElementById("kont_reszta").value=obj.responseText; }, onloading : function(obj) { document.getElementById("kont_reszta").value="Przeliczanie...";} }); } //suma stop </script> </head> <body> <form method="GET" action="wplata_action.php" name="wplata"> <input type = "hidden" name="akcja" value="dodaj"> <input type = "hidden" name="id_wplaty" value=""><table> <tr><td><font color=black><b>Gaz:</b></font></td><td><input type = "text" name="gaz" id="gaz" size="30" title="Gaz" value="0.00" onfocus="przelicz_suma()" onchange="przelicz_prowizja()" onclick="przelicz_prowizja()" onkeyup="przelicz_suma()"></td></tr> <tr><td><font color=black><b>Prąd:</b></font></td><td><input type = "text" name="prad" id="prad" size="30" title="Prąd" value="0.00" onfocus="przelicz_suma()" onchange="przelicz_prowizja()" onclick="przelicz_prowizja()" onkeyup="przelicz_suma()"></td></tr> <tr><td><font color=black><b>Isko:</b></font></td><td><input type = "text" name="isko" id="isko" size="30" title="Isko" value="0.00" onfocus="przelicz_suma()" onchange="przelicz_prowizja()" onclick="przelicz_prowizja()" onkeyup="przelicz_suma()"></td></tr> <tr><td><font color=black><b>Telefonia GSM:</b></font></td><td><input type = "text" name="tel_kom" id="tel_kom" size="30" title="Telefonia GSM" value="0.00" onfocus="przelicz_suma()" onchange="przelicz_prowizja()" onclick="przelicz_prowizja()" onkeyup="przelicz_suma()"></td></tr> <tr><td><font color=black><b>Telefonia stacjonarna:</b></font></td><td><input type = "text" name="tel_stac" id="tel_stac" size="30" title="Telefonia stacjonarna" value="0.00" onfocus="przelicz_suma()" onchange="przelicz_prowizja()" onclick="przelicz_prowizja()" onkeyup="przelicz_suma()"></td></tr> <tr><td><font color=black><b>Inne:</b></font></td><td><input type = "text" name="inne" id="inne" size="30" title="Inne" value="0.00" onfocus="przelicz_suma()" onchange="przelicz_prowizja()" onclick="przelicz_prowizja()" onkeyup="przelicz_suma()"></td></tr> <tr><td><font color=black><b>Suma opłat:</b></font></td><td><input name="suma_wplat" type = "text" id="suma_wplat" style="background:#EEEB7B; font-weight:bold; color:#000000" title="Suma opłat" readonly="" onclick="przelicz_suma()" onkeyup="przelicz_suma()" value="0.00" size="30" maxlength="7"></td></tr> <tr><td><font color=black><b>Gotówka:</b></font></td><td><input type = "text" name="kont_gotowka" id="kont_gotowka" size="30" title="Gotówka" value="0.00" onchange="przelicz_reszta()" onclick="przelicz_suma()"></td></tr> <tr><td><font color=black><b>Reszta:</b></font></td><td><input name="kont_reszta" type = "text" id="kont_reszta" style="background:#BBD7EE; font-weight:bold" title="Reszta" value="0.00" size="30" maxlength="7" onclick="przelicz_reszta()"></td></tr> <tr><td><font color=black><b>Prowizja:</b></font></td><td><input type = "text" name="prowizja" id="prowizja" size="30" title="Prowizja" value="0.00" onclick="przelicz_prowizja()"></td></tr> </table><input type="submit" value="Wpłać" title="Wciśnij aby zaakceptować wpłatę"></form> </body> </html> wplata_action.php ( w tym pliku byl wczesniej kod do sprawdzania bilanu i wstawiania wplaty do bazy, obenie tylko zwykle wyswietlanie) <?php $akcja=$_GET['akcja']; if ($akcja == 'dodaj') { $id_wplaty=$_GET['id_wplaty']; $gaz=(float)$_GET['gaz']; $prad=(float)$_GET['prad']; $isko=(float)$_GET['isko']; $tel_kom=(float)$_GET['tel_kom']; $tel_stac=(float)$_GET['tel_stac']; $inne=(float)$_GET['inne']; $suma_wplat=(float)$_GET['suma_wplat']; $kont_gotowka=(float)$_GET['kont_gotowka']; $kont_reszta=(float)$_GET['kont_reszta']; $prowizja=(float)$_GET['prowizja']; $suma_getow=($_GET['gaz']) + ($_GET['prad']) + ($_GET['isko']) + ($_GET['tel_kom']) + ($_GET['tel_stac']) + ($_GET['inne']) + ($_GET['prowizja']); echo 'suma getów - '.$suma_getow.'<br>'; echo 'suma wplat get - '.$suma_wplat.'<br><br>'; if ($suma_getow > $suma_wplat ) { echo 'suma_getow > suma_wplat <br>'; } elseif ($suma_getow < $suma_wplat) { echo 'suma_getow < suma_wplat<br>'; } elseif ($suma_getow == $suma_wplat) { echo 'suma_getow == suma_wplat<br>'; } else {echo 'to jakie są w końcu te wpłaty<br>';} } ?> i pliki odpowiadające za przeliczenie sumy wpłat i prowizji suma_wplat.php <?php $gaz=$_GET['gaz']; $prad=$_GET['prad']; $tel_kom=$_GET['tel_kom']; $tel_stac=$_GET['tel_stac']; $isko=$_GET['isko']; $prowizja=$_GET['prowizja']; $inne=$_GET['inne']; $suma=$gaz+$prad+$tel_kom+$tel_stac+$isko+$prowizja+$inne; echo $suma; ?> prowizja.php <?php $gaz=$_GET['gaz']; $prad=$_GET['prad']; $tel_kom=$_GET['tel_kom']; $tel_stac=$_GET['tel_stac']; $isko=$_GET['isko']; $inne=$_GET['inne']; //pobieranie prowizji require_once('./polacz_z_baza.php'); $zapytanie="Select * from prowizje"; $wynik = mysql_query($zapytanie) or die ('Nie moge pobrac prowizji'); $rekord=mysql_fetch_array($wynik); $wielkosc_prowizji=$rekord[1]; $prowizja=0; if ($gaz>0) { $prowizja+=$wielkosc_prowizji; } if ($prad>0) { $prowizja+=$wielkosc_prowizji; } if ($tel_kom>0) { $prowizja+=$wielkosc_prowizji; } if ($tel_stac>0) { $prowizja+=$wielkosc_prowizji; } if ($isko>0) { $prowizja+=$wielkosc_prowizji; } if ($inne>0) { $prowizja+=$wielkosc_prowizji; } echo $prowizja; ?> Jak dla mnie wszystko jest w porządku, nie mam pojęcia skąd się bierze owa sytuacja, czy może mieć na to wpływ konfiguracja serwera? Mi się wydaje że nie, ba, nawet jestem pewnien że nie, ale mogę się mylić, dlatego chciałbym poznać waszą opinię. Pozdrawiam! |
|||
Sitedesign by AltusUmbrae. |