Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]jak zrobic kalkulator do wyceny kosztow remontu
Forum PHP.pl > Forum > Przedszkole
m09121
Witam.Projektuje swoją strone budowlaną i potrzebuje umiescic na niej kalkulator wyceny kosztow remontowych . Prosze o pomoc w znalezieniu odpowiedniego kalkulatora ewentualnie jakiegos programu do tego celu z gory dziekuje. Podam link do stron na ktorych sa takie kalkulatory.

http://www.kalkulator.entero.pl/
http://www.budomax.biz.pl/kalkulator/index.php
RafaelX
Zrób sobie formulaz z polami
typ usługi
cena usługi
ilość

i teraz zrób skrypt prztwarzający
mnorzący kazdą (cena*ilosc jakiejś usługi)+(cena*ilosc innej usługi)+.... to daj do zmiennej i wyswietl
isso
albo w php smile.gif albo w js smile.gif
m09121
dzieki ale ja jestem zielony w tych sprawach jak bys mogl mi napisac jakis gotowy przyklad to bylbym wdzieczny
decha-design
Nie żebym był jakiś wredny albo coś ... Giełda albo PHP Classes
erix
A ja czekam na prawidłowy tag tematu.
m09121
udalo mi sie cos splodzic ale niewiem jak zrobic przeliczanie tego tak to wyglada

  1. <?php <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
  2. <HTML>
  3.      <HEAD>
  4.           <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-2">
  5.           <META HTTP-EQUIV="Creation-date" CONTENT="2007.01.01">
  6.           <META NAME="Description" CONTENT="Opis strony">
  7.           <META NAME="Author" CONTENT="Autor">
  8.           <META NAME="Generator" CONTENT="Areo 3W 1.1">
  9.           <TITLE></TITLE>
  10.      </HEAD>
  11.      <BODY>
  12.           <P>KALKULATOR WYCENY KOSZTOW</p>
  13.              
  14. <tr><td id="poztdprzedmiot" class="poz"></td><td id="poztdopis" class="poz">malowanie</td><td id="poztdjednostka" class="poz"> m2</td><td id="poztdcenajednostkowa" class="poz"> 6zl </td><td id="poztdilosc" class="poz"><input type="text" name="poz[9]" value="0,00"></input></td><td id="poztdwatosc" class="poz">0,00</td></tr>
  15.           </P>
  16.      </BODY>
  17. </HTML>
  18. ?>
kefirek
Prosze prosty przyklad reszte sobie dopasój
Kod
<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
<script LANGUAGE = JavaScript>
<!-- Ukrycie przed przeglądarkami nieobsługującymi JavaScript
function obsluga_zdarzenia (obj){
if (isNaN (obj.value)){
document.getElementById('wynik').innerHTML = 'Blad';
    obj.focus();
    obj.select();
  } else {        
document.getElementById('wynik').innerHTML = 12.00 * obj.value;  
  }
}
// Koniec kodu JavaScript -->
</SCRIPT>
</HEAD>
<BODY>


<FORM NAME = "test">
<table cellpadding='7' cellspacing='7' class='center'>
<tr>
<td>Rodzaj usługi</td><td>Jedn.</td><td>Cena jedn.</td><td>Ilosc</td><td>Cena</td>
</tr>

<tr>
<td>Gadzie gipsowe</td><td>m2</td><td>12,00</td><td><INPUT TYPE = "text" NAME = "okno_tekstowe" VALUE = "" onChange = "obsluga_zdarzenia(this)"></td>
<td id="wynik">0,00 PLN</td>
</tr>
</FORM>

</BODY>
</HTML>
m09121
ok dzieki tylko czemu wynik znika i wyskakuja spowrotem same zera i jescze jedno chcialbym zeby mi sie sumowaly pozniej wyniki
erix
Zamykam temat do czasu poprawienia tagu tematu/przesłania nowego na PW.
m09121
zrobilem ale cos jest nie tak
<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
<script LANGUAGE = JavaScript>
<!-- Ukrycie przed przeglądarkami nieobsługującymi JavaScript
function obsluga_zdarzenia (obj){
if (isNaN (obj.value)){
document.getElementById('wynik').innerHTML = 'Blad';
obj.focus();
obj.select();
} else {
document.getElementById('wynik').innerHTML = 12.00 * obj.value;
}
}
// Koniec kodu JavaScript -->
</SCRIPT>
</HEAD>
<BODY>


<FORM NAME = "test">
<table cellpadding='7' cellspacing='7' class='center'>
<tr>
<td>Rodzaj usługi</td><td>Jedn.</td><td>Cena jedn.</td><td>Ilosc</td><td>Cena</td>
</tr>

<tr>
<td>Gadzie gipsowe</td><td>m2</td><td>12,00</td><td><INPUT TYPE = "text" NAME = "okno_tekstowe" VALUE = ""onChange = "obsluga_zdarzenia(this)"></td>

<td id="wynik">0,00 PLN</td>

<tr>

<td>Malowanie</td><td>m2</td><td>5,00</td><td><INPUT TYPE = "text" NAME = "okno_tekstowe" VALUE = ""onChange = "obsluga_zdarzenia(this)"></td>

<td id="wynik">0,00 PLN</td>

<tr>

<td>Kafelkowanie</td><td>m2</td><td>40,00</td><td><INPUT TYPE = "text" NAME = "okno_tekstowe" VALUE = ""onChange = "obsluga_zdarzenia(this)"></td>

<td id="wynik">0,00 PLN</td>

<tr>

<td>Montaż okin</td><td>mb</td><td>25,00</td><td><INPUT TYPE = "text" NAME = "okno_tekstowe" VALUE = ""onChange = "obsluga_zdarzenia(this)"></td>

<td id="wynik">0,00 PLN</td>

</tr>
</FORM>

</BODY>
</HTML>
isso
BBCOOOOOOOOOOODE!!!!

;]

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  4. <title>Untitled Document</title>
  5. <script LANGUAGE = JavaScript>
  6. <!-- Ukrycie przed przeglądarkami nieobsługującymi JavaScript
  7. function obsluga_zdarzenia(obj, id, mSetValue){
  8. if (isNaN (obj.value)){
  9. document.getElementById(id).innerHTML = 'Blad';
  10. obj.focus();
  11. obj.select();
  12. } else {
  13. var mSV = document.getElementById(mSetValue).innerHTML;
  14. document.getElementById(id).innerHTML = parseInt(mSV) * obj.value;
  15. }
  16. }
  17. // Koniec kodu JavaScript -->
  18. </head>
  19.  
  20.  
  21. <table cellpadding="0">
  22. <form action="self.php" method="post" >
  23. <tr>
  24. <td>Rodzaj usługi</td>
  25. <td>Jedn.</td>
  26. <td>Cena jedn.</td>
  27. <td>Ilosc</td>
  28. <td>Cena</td>
  29. </tr>
  30.  
  31. <tr>
  32. <td>Gadzie gipsowe</td>
  33. <td>m2</td>
  34. <td id="setValue1">12,00</td>
  35. <td><input type= "text" name="okno_tekstowe" value= "" onChange="obsluga_zdarzenia(this, 'wynik1', 'setValue1')"></td>
  36. <td id="wynik1">0,00 PLN</td>
  37. </tr>
  38.  
  39. <tr>
  40. <td>Malowanie</td>
  41. <td>m2</td>
  42. <td id="setValue2">5,00</td>
  43. <td><input type= "text" name="okno_tekstowe" value = "" onChange="obsluga_zdarzenia(this, 'wynik2', 'setValue2')"></td>
  44. <td id="wynik2">0,00 PLN</td>
  45. </tr>
  46. <tr>
  47.  
  48. <td>Kafelkowanie</td>
  49. <td>m2</td>
  50. <td id="setValue3">40,00</td>
  51. <td><input type= "text" nam ="okno_tekstowe" value = "" onChange="obsluga_zdarzenia(this, 'wynik3', 'setValue3')"></td>
  52. <td id="wynik3">0,00 PLN</td>
  53. </tr>
  54.  
  55. <tr>
  56. <td>Montaż okin</td>
  57. <td>mb</td>
  58. <td id="setValue4">25,00</td>
  59. <td><input type= "text" name="okno_tekstowe" value = "" onChange="obsluga_zdarzenia(this, 'wynik4', 'setValue4')"></td>
  60. <td id="wynik4">0,00 PLN</td>
  61. </tr>
  62. </form>
  63. </body>
  64. </html>
m09121
Dzieki a jak teraz zrobic zeby to sie wszystko sumowalo na dole
isso
Ziomuś, ale to nie jest wytwórnia darmowych skryptów... masz tu prowizorke ;]
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  4. <title>Untitled Document</title>
  5. <script LANGUAGE = JavaScript>
  6. <!-- Ukrycie przed przeglądarkami nieobsługującymi JavaScript
  7. function obsluga_zdarzenia(obj, id, mSetValue){
  8. if (isNaN (obj.value)){
  9. document.getElementById(id).innerHTML = 'Blad';
  10. obj.focus();
  11. obj.select();
  12. } else {
  13. var mSV = document.getElementById(mSetValue).innerHTML;
  14. document.getElementById(id).innerHTML = parseInt(mSV) * obj.value;
  15. }
  16.  
  17. var a = document.getElementById('wynik1').innerHTML;
  18. var b = document.getElementById('wynik2').innerHTML;
  19. var c = document.getElementById('wynik3').innerHTML;
  20. var d = document.getElementById('wynik4').innerHTML;
  21. document.getElementById('all').innerHTML = parseInt(a) + parseInt(b) + parseInt(c) + parseInt(d);
  22.  
  23.  
  24. }
  25. // Koniec kodu JavaScript -->
  26. </head>
  27.  
  28.  
  29. <table cellpadding="0">
  30. <form action="self.php" method="post" >
  31. <tr>
  32. <td>Rodzaj usługi</td>
  33. <td>Jedn.</td>
  34. <td>Cena jedn.</td>
  35. <td>Ilosc</td>
  36. <td>Cena</td>
  37. </tr>
  38.  
  39. <tr>
  40. <td>Gadzie gipsowe</td>
  41. <td>m2</td>
  42. <td id="setValue1">12,00</td>
  43. <td><input type= "text" name="okno_tekstowe" value= "0" onChange="obsluga_zdarzenia(this, 'wynik1', 'setValue1')"></td>
  44. <td id="wynik1">0</td>
  45. </tr>
  46.  
  47. <tr>
  48. <td>Malowanie</td>
  49. <td>m2</td>
  50. <td id="setValue2">5,00</td>
  51. <td><input type= "text" name="okno_tekstowe" value = "0" onChange="obsluga_zdarzenia(this, 'wynik2', 'setValue2')"></td>
  52. <td id="wynik2">0</td>
  53. </tr>
  54. <tr>
  55.  
  56. <td>Kafelkowanie</td>
  57. <td>m2</td>
  58. <td id="setValue3">40,00</td>
  59. <td><input type= "text" nam ="okno_tekstowe" value = "0" onChange="obsluga_zdarzenia(this, 'wynik3', 'setValue3')"></td>
  60. <td id="wynik3">0</td>
  61. </tr>
  62.  
  63. <tr>
  64. <td>Montaż okin</td>
  65. <td>mb</td>
  66. <td id="setValue4">25,00</td>
  67. <td><input type= "text" name="okno_tekstowe" value = "0" onChange="obsluga_zdarzenia(this, 'wynik4', 'setValue4')"></td>
  68. <td id="wynik4">0</td>
  69. </tr>
  70. <div id="all"></div>
  71. </form>
  72. </body>
  73. </html>
nexis
+ HTML 4.01 Strict
+ jQuery 1.3.1 (Google AJAX Libraries API)
+ łatwa rozbudowa o dodatkowe pola

Kod
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="pl">
   <head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      <title>Kalkulator</title>
      <script type="text/javascript" src="http://www.google.com/jsapi"></script>
      <script type="text/javascript">
         google.load("jquery", "1");
      </script>
      <script type="text/javascript">
         function update(){
            var sum = 0;
            $("#calculator > tbody > tr").each(function(){
               var price  = parseFloat($(this).find("td:eq(2)").text());
               var amount = parseFloat($(this).find("td:eq(3)").find("input:first").val());
               var value  = $(this).find("td:eq(4)");
               if (amount > 0) {
                  value.text(price*amount);
                  sum += price*amount;
               } else {
                  value.text(0);
               }
            });
            $("#summary").text(sum);
         }
         $(document).ready(function(){
            update();
            $("#calculator input").keyup(function(){
               update();
            });
         });
      </script>
   </head>
   <body>
      <table id="calculator">
         <thead>
            <tr>
               <th>Rodzaj usługi</th>
               <th>Jm</th>
               <th>Cena</th>
               <th>Ilość</th>
               <th>Wartość</th>
            </tr>
         </thead>
         <tfoot>
            <tr>
               <th colspan="4">Razem</th>
               <th id="summary"></th>
            </tr>
         </tfoot>
         <tbody>
            <tr>
               <td>Gadzie gipsowe</td>
               <td>m<sup>2</sup></td>
               <td>12.00</td>
               <td><input type="text" name="gadzie-gipsowe"></td>
               <td></td>
            </tr>
            <tr>
               <td>Malowanie</td>
               <td>m<sup>2</sup></td>
               <td>5.00</td>
               <td><input type="text" name="malowanie"></td>
               <td></td>
            </tr>
            <tr>
               <td>Kafelkowanie</td>
               <td>m<sup>2</sup></td>
               <td>40.00</td>
               <td><input type="text" name="kafelkowanie" /></td>
               <td></td>
            </tr>
            <tr>
               <td>Montaż okien</td>
               <td>mb</td>
               <td>25.00</td>
               <td><input type="text" name="montaz-okien" /></td>
               <td></td>
            </tr>
         </tbody>
      </table>
   </body>
</html>


* formatowanie poprzez html jest do bani
Dobrob
Witam wie ktos może jak zrobić żeby ceny w tym kodzie poniżej napisanego przez ISSO mogły byc również po przecinku ? np. 1.50 suma 12.50
Pozro

Cytat(isso @ 6.02.2009, 02:19:00 ) *
Ziomuś, ale to nie jest wytwórnia darmowych skryptów... masz tu prowizorke ;]
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  4. <title>Untitled Document</title>
  5. <script LANGUAGE = JavaScript>
  6. <!-- Ukrycie przed przeglądarkami nieobsługującymi JavaScript
  7. function obsluga_zdarzenia(obj, id, mSetValue){
  8. if (isNaN (obj.value)){
  9. document.getElementById(id).innerHTML = 'Blad';
  10. obj.focus();
  11. obj.select();
  12. } else {
  13. var mSV = document.getElementById(mSetValue).innerHTML;
  14. document.getElementById(id).innerHTML = parseInt(mSV) * obj.value;
  15. }
  16.  
  17. var a = document.getElementById('wynik1').innerHTML;
  18. var b = document.getElementById('wynik2').innerHTML;
  19. var c = document.getElementById('wynik3').innerHTML;
  20. var d = document.getElementById('wynik4').innerHTML;
  21. document.getElementById('all').innerHTML = parseInt(a) + parseInt(b) + parseInt(c) + parseInt(d);
  22.  
  23.  
  24. }
  25. // Koniec kodu JavaScript -->
  26. </head>
  27.  
  28.  
  29. <table cellpadding="0">
  30. <form action="self.php" method="post" >
  31. <tr>
  32. <td>Rodzaj usługi</td>
  33. <td>Jedn.</td>
  34. <td>Cena jedn.</td>
  35. <td>Ilosc</td>
  36. <td>Cena</td>
  37. </tr>
  38.  
  39. <tr>
  40. <td>Gadzie gipsowe</td>
  41. <td>m2</td>
  42. <td id="setValue1">12,00</td>
  43. <td><input type= "text" name="okno_tekstowe" value= "0" onChange="obsluga_zdarzenia(this, 'wynik1', 'setValue1')"></td>
  44. <td id="wynik1">0</td>
  45. </tr>
  46.  
  47. <tr>
  48. <td>Malowanie</td>
  49. <td>m2</td>
  50. <td id="setValue2">5,00</td>
  51. <td><input type= "text" name="okno_tekstowe" value = "0" onChange="obsluga_zdarzenia(this, 'wynik2', 'setValue2')"></td>
  52. <td id="wynik2">0</td>
  53. </tr>
  54. <tr>
  55.  
  56. <td>Kafelkowanie</td>
  57. <td>m2</td>
  58. <td id="setValue3">40,00</td>
  59. <td><input type= "text" nam ="okno_tekstowe" value = "0" onChange="obsluga_zdarzenia(this, 'wynik3', 'setValue3')"></td>
  60. <td id="wynik3">0</td>
  61. </tr>
  62.  
  63. <tr>
  64. <td>Montaż okin</td>
  65. <td>mb</td>
  66. <td id="setValue4">25,00</td>
  67. <td><input type= "text" name="okno_tekstowe" value = "0" onChange="obsluga_zdarzenia(this, 'wynik4', 'setValue4')"></td>
  68. <td id="wynik4">0</td>
  69. </tr>
  70. <div id="all"></div>
  71. </form>
  72. </body>
  73. </html>
RafaelX
spróbuj tak:

Kod
function obsluga_zdarzenia(obj, id, mSetValue){
    var floatValue = (parseFloat(obj.value.replace(",",".")));
    if (isNaN (floatValue)){
        document.getElementById(id).innerHTML = 'Blad';
        obj.focus();
        obj.select();
    } else {
        
        var mSV = document.getElementById(mSetValue).innerHTML;
        document.getElementById(id).innerHTML = parseFloat(mSV.replace(",",".")) * floatValue;
    }
    
    var a = document.getElementById('wynik1').innerHTML;
    var b = document.getElementById('wynik2').innerHTML;
    var c = document.getElementById('wynik3').innerHTML;
    var d = document.getElementById('wynik4').innerHTML;
    document.getElementById('all').innerHTML =  parseFloat(a) + parseFloat(b) + parseFloat(c) + parseFloat(d);
}
Dobrob
Działa - Zajebiscie - dzieki biggrin.gif Ale nie zakorągla mi sumy po pomnożeniu przedmiotów , tzn zmieniłem parseFloat zamiast parseInt bo suma nie była po przecinku i teraz jest natomiast liczba w każdym z przedmiotów np. var a = document.getElementById('wynik1').innerHTML; jest jak np. 3.99999999999 zamiast 3.9 albo nawet 4.0 to samo z sumą koncową, jakieś wskazówki?
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.