Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][?]Dynamiczne liczenie kwoty brutto po wybraniu stawki vat
Forum PHP.pl > Forum > Przedszkole
Marr
Witam,
Mam problem, potrzebuję zrobić formularz w którym do jednego pola wprowadzamy kwotę netto, następnie wybieramy z rozwijanej listy stawkę vat i po wyborze stawki dynamicznie pokazuje nam się w następnym polu policzona kwota brutto. Nie za bardzo wiem, z której strony to ugryźć i proszę o pomoc. guitar.gif
ferrero2
Jeśli ma to wyglądać tak jak mówisz czyli bez żadnego buttona ("policz") to musi być Java wsadzona do zdarzenia onchange dla comboboxa.
Jesli z przyciskiem to tworzysz sobie funkcję php która mnoży podatek vat razy cene którą wpisał. Jeśli jest to formularz z metodą POST to tworzysz input text o nazwie cena i combobox o nazwie vat potem tylko wykonujesz mnożenie po naciśnięciu przycisku $_POST[cena'] * $_POST['vat'] i zapisujesz np w zmiennej $_POST['wynik']. Po wykonaniu funkcji wypełniasz input (wynik) zmienną $_POST['wynik']. Tylko że bez Javy czy AJaxa to musi się odbyć po przeładowaniu strony.

Pozdrawiam
Marr
Właśnie tak myślałem, że będzie trzeba jakiegoś innego cuda użyć... a mógłby mnie ktoś nakierować na taką funkcję w javascript najlepiej? Dopiero zaczynam więc proszę o wyrozumiałość smile.gif
Dzięki za wole pomocy teraz i poprzednio ferrero2 - podziękował smile.gif guitar.gif
Trojan
  1. <script>
  2.      function podlicz(){
  3.      kwota = document.getElementById("kwota").value;            //pobiera wartości z input-a o id="kwota"
  4.      podatek = document.getElementById("podatek").value;            //pobiera wartość z select-a o id="podatek"
  5.      wynik = kwota*(1+podatek/100);                                    //ooblicza wynik
  6.      document.getElementById('wynik').innerHTML=wynik;            //zapisuje wynik w span-ie o id="wynik"
  7.      }
  8. </script>
  9.  
  10. <input size="20" MAXLENGTH="20" id="kwota" name="kwota" type="text" value="" onkeyup="podlicz();">
  11.  
  12. <select id="podatek" onchange="podlicz();">
  13. <option VALUE="22">22 %</option>
  14. <option VALUE="7">7 %</option>
  15. <option VALUE="33">33 %</option>
  16. </select>
  17.  
  18. <span id="wynik"></span>


w input jest zdarzenie onkeyup wywołuje ono funkcje podliczająca przy każdej zmianie wartości w tym polu
w select jest zdarzenie onchange wywołuje ono funkcje podliczająca przy każdej zmianie opcji podatku

mam nadzieje ze to jest jasne ;]
Marr
extra! wielkie dzięki, dokładnie o to mi chodziło! Działa świetnie, a temat można zamknąć.

EDIT: Oho, jeszcze jednak nie;] a jak zrobić by wynik był zaokrąglany do 2 cyfr po przecinku? jeżeli wprowadzę kwotę netto z groszami to wynik ma po przecinku 4 miejsca - a tak być nie może smile.gif

EDIT 2: Mam jeszcze jeden problem z tym związany. Nie wychodziło mi, by tą funkcję wpisać do inputa tylko do odczytu więc pomyślałem, że liczenie podatku wykonam też w pliku wykonującym dodanie zawartości formularza do bazy. Mój problem polega na tym, że jeżeli wstawiam zawartość do kolumny typu int to jest wszystko pięknie, a jeżeli do floata np. (6,2) to liczba wskakuje mi już po przecinku i nie wiem dlaczego... np. kwota brutto wynosi 232.12 a w bazie wpada w formie 0.23 ocb? sciana.gif czarodziej.gif withstupidsmiley.gif
ferrero2
Zaokrąglenia dokonujesz funkcją round np :

Kod
$inna = 12;
$all = 100;
$liczba = ($inna / $all)*100;
$inna2 = round($liczba,2); #gdzie cyfra oznacza ilość miejsc po przecinku


Pozdrawiam
Marr
Dzięki ferrero2, z tym, że potrzebowałem zaokrąglić liczbę w javascript a nie w php - bo w javie chyba dostałem kod od Trojana. Niemniej z zaokrągleniem już sobie poradziłem używając Math.round ale nadal mam problem z wpisywaniem zawartości brutto do kolumny float, ponieważ kwota wpada mi ciągle po przecinku sad.gif nikt nie pomoże?

EDIT: ojejku mam dałna... ciekawe jak miało działać poprawnie jak w miałem .$brutto podczas dodawania zawartości do bazy smile.gif Problem rozwiązany. dzięki

EDIT2 : Mam kolejny problem... nie mogę sobie poradzić z takim czymś: mam formularz, w którym są generowane checkboxy na podstawie zawartości kolumny w bazie mysql. przy każdym checkboxie stoi pole input ilość i obok wyświetlona jest cena usługi. Chciałbym by po zmianie wartości ilość cena była liczona dynamicznie. Probowałem użyć to skryptu od Trojana tyle, że zaciąłem się bo nie wiem przecież jakie nazwy mi się wygenerują więc nie wiem do jakich elementów mam się odwoływać w JS sad.gif

  1. <head>
  2. <script language="JavaScript" src="calendar1.js"></script>
  3. </head>
  4. <form action="admin.php?action=order_update" method="post" name="ord_form">
  5. <table width="80%">
  6. <tr>
  7. <td colspan="2"> Nowe zamowienie</td>
  8. </tr>
  9. <tr>
  10. <td id="formlabel">Klient</td>
  11. <td> <select name="ord_customer">
  12. <?php
  13. $zapytanie = mysql_query ("SELECT * FROM klienci ORDER BY nazwa;");
  14. while ($rekord = mysql_fetch_assoc ($zapytanie)) {
  15. $id = $rekord['id'];
  16. $nazwa = $rekord['nazwa'];
  17. $ulica = $rekord['ulica'];
  18. $numer = $rekord['numer'];
  19. $miasto = $rekord['miasto'];
  20.  
  21. echo("
  22. <option value='$nazwa'>$nazwa</option>
  23. ");
  24. }
  25. ?>
  26. </select> </td>
  27. </tr>
  28. <tr>
  29. <td id="formlabel">Usluga</td>
  30. <td> <table cellpadding="0" cellspacing="0">
  31. <?php
  32. $zapytanie = mysql_query("SELECT * FROM uslugi ORDER BY nazwa");
  33. while($wynik = mysql_fetch_array($zapytanie)){
  34. echo '<tr>
  35. <td width="200px"><input type="checkbox" name="checkboxy[]" value="'.$wynik['id'].'" />'.$wynik['nazwa'].'</td>
  36. <td><input type="input" size="2" name="mnoznik_'.$wynik['id'].'"/>
  37. <td align="left" width="50px"> cena: </td><td align="right"> '.$wynik['cenabrutto'].' zł</td>
  38. </tr>';}
  39. ?>
  40. </table></td>
  41. </tr>
  42. <tr>
  43. <td id="formlabel">Status</td>
  44. <td> <select name="ord_status">
  45. <option>Zrealizowano </option>
  46. <option>W realizacji</option>
  47. </select></td>
  48. </tr>
  49. <tr>
  50. <td id="formlabel">Data zlozenia</td>
  51. <td><?php echo date('m.d.y');?></td> 
  52. </tr>
  53. <tr>
  54. <td id="formlabel">Data realizacji</td>
  55. <td> <input type="Text" name="ord_date" value="" readonly="readonly" /> <a href="javascript:cal1.popup();"><img src="img/cal.gif" width="16" height="16" border="0" alt="Kliknij, by wybrac date"></a></td>
  56. </tr>
  57. <tr>
  58. <td colspan="2" align="left" > <input type="submit" value="dodaj" /> </td>
  59. </tr>
  60. </table>
  61. </form>
  62. <script language="JavaScript">
  63. var cal1 = new calendar1(document.forms['ord_form'].elements['ord_date']);
  64. cal1.year_scroll = true;
  65. cal1.time_comp = false;
  66. </script>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.