Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Liczenie wartości z inputem.
Forum PHP.pl > Forum > PHP
Hadol
Witam, mam problem, a dokładniej chodzi o policzenie wartości. Mam pole input i tam podaje ilość, i chce żeby policzyło wartość produktu (cena produktu*ilość (wpisana w inpucie).

Kolejny problem to wyswietlenie wersji produktu jeden pod drugim (tak żeby czytało jeszcze z nich id wersji).
Zobrazuje wam jak chce zeby to wyglądało:



A oto skrypt, poprawcie jak coś jest źle, bo jestem w tym zielony.

  1. <?php
  2. //error_reporting(0);
  3. ?>
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  5. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  6. <html xmlns="http://www.w3.org/1999/xhtml">
  7. <head>
  8. <title>Esscorpio - polskie meble w Holandii</title>
  9. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  10. <meta http-equiv="Content-Language" content="pl" />
  11. <meta name="Description" content="Internetowy sklep meblowy Esscorpio - polskie meble w Holandii" />
  12. <meta name="Keywords" content="meble, internetowy sklep meblowy, meble do salonu, meble dziecięcie, meble kuchenne, meble do biura, meble do sypialni, meble biurowe, mebel, meblościanka, sypialnia, polskie meble w holandii" />
  13. <meta name="Robots" content="index, follow" />
  14. <meta name="Revisit-after" content="1 days" />
  15. <meta name="Author" content="ROTE" />
  16. <meta name="Copyright" content="ROTE" />
  17. <meta http-equiv="Reply-to" content="" />
  18. <meta name="rating" content="General" />
  19. <link rel="Stylesheet" href="styl.css" />
  20. </head>
  21. <body>
  22. <div class="calosc">
  23. <div class="naglowek">
  24. <?php
  25. include("naglowek.php");
  26. ?>
  27. </div>
  28. <div class="menug">
  29. <?php
  30. include("menug.php");
  31. ?>
  32. </div>
  33. <div class="srodek">
  34. <table border="0" cellpadding="0" cellspacing="0" align="center">
  35. <tr><td valign="top">
  36. <div class="menu">
  37. <?php
  38. include("menu.php");
  39. ?>
  40. </div>
  41. </td>
  42. <td valign="top" class="zawartosc">
  43. <div>
  44. <?php //skrypt wyswietlajacy zawartosc strony
  45.  
  46. $idp = addslashes($_GET['idp']);
  47.  
  48. include("polacz.php");
  49. $sql = "select * from Produkt where id_produkt = '$idp'";
  50. $wynik = mysql_query($sql);
  51. $tmp = 0;
  52. if ($rek = mysql_fetch_array($wynik))
  53. {
  54. $dostepny = htmlspecialchars($rek['widoczny_produkt']);
  55. $nazwa = htmlspecialchars($rek['nazwa_produkt']);
  56. $cena = htmlspecialchars($rek['cena_produkt']);
  57. $opis = $rek['opis_produkt'];
  58. $opis = htmlspecialchars_decode(stripslashes($opis));
  59. "
  60. <span style='font-size: xx-large;'>$nazwa</span><br/><br/>
  61. $opis <br/>
  62. ";
  63.  
  64. if ($dostepny)
  65. {
  66. //-------------------------
  67. $cbwersja = "<select size=1 name='wersja'>";
  68. $sql2 = "select * from Wersja where id_produkt = '$idp' order by nazwa_wersja";
  69. $wynik2 = mysql_query($sql2);
  70. while ($rek2 = mysql_fetch_array($wynik2))
  71. {
  72. $idw = htmlspecialchars($rek2['id_wersja']);
  73. $nazwaw = htmlspecialchars($rek2['nazwa_wersja']);
  74. $cenaw = htmlspecialchars($rek2['cena_wersja']);
  75.  
  76. $cbwersja .= "<option value='$idw'>$nazwaw - $cenaw</option>";
  77. }
  78. $cbwersja .= "</select>";
  79. if (strlen($cbwersja) < 50)
  80. {
  81. "
  82. <form action=dokoszyka.php?idp=$idp method=post>
  83.  
  84. <table border='1' width='100%'>
  85. <tbody align='center'>
  86. <tr>
  87. <td>Nazwa</td> <td>Ilość</td> <td>Cena</td> <td>Wartość</td>
  88. </tr>
  89. <tr>
  90. <td>$nazwa</td> <td><input name='ilosc' type=text maxlength='30' style=\" width: 40px; \" ></td> <td>$cena €</td><td>€</td>
  91. </tr>
  92. </tbody>
  93. </table>
  94. <p align='right'><input name='dodaj' type=submit value='Dodaj do koszyka'></form></p>
  95. ";
  96. }
  97. elseif(strlen($cbwersja) > 50)
  98. {
  99. echo "<form action=dokoszyka.php?idp=$idp method=post><table border='1' width='100%'>
  100. <tbody align='center'>
  101. <tr>
  102. <td>Wersja</td> <td>Ilość</td> <td>Cena</td> <td>Wartość</td>
  103. </tr>
  104. <tr>
  105. <td>$cbwersja</td> <td><input name='ilosc' type=text maxlength='30' style=\" width: 40px; \" ></td> <td>$cenaw €</td><td> </td>
  106. </tr>
  107. </tbody>
  108. </table>
  109. <p align='right'><input name='dodaj' type=submit value='Dodaj do koszyka'></form></p>";
  110. }
  111.  
  112. //-------------------------
  113.  
  114.  
  115.  
  116.  
  117.  
  118. }
  119. }
  120. else
  121. {
  122. "
  123. Wybrany produkt nie istnieje...
  124. ";
  125. }
  126. ?>
  127. </div>
  128. </td></tr>
  129. </table>
  130. </div>
  131. <div class="stopka">
  132. <?php
  133. include("stopka.php");
  134. ?>
  135. </div>
  136. </div>
  137. </body>
  138. </html>
  139. </html>



Z góry dzięki smile.gif


Odświeżam, prosżę o pomoc.
croc
Najlepiej byłoby to przeliczać w JavaScript, "w locie". Znasz się na tym języku?

Co do drugiego pytania, to w <select> dla wersji możesz dodać atrybut HTML size="X", gdzie X to liczba wszystkich wersji. Będziesz miał listę wyboru z wszystkimi widocznymi opcjami.
Hadol
Mam tam w skycpie jave użytą tylko nie wiem jak zrobić żeby mnożyło tą ilość przez zmienną $cena, która jest w phpku. Na javie też nie znam się za dobrze. Mogłbyś mi dokładniej wytłumaczyć jak użyć tego html size "x" ? Bo na prawdę jestem w tym zielony, a coś nie potrafię tego znaleźć.

Tam wyżej wrzuciłem nie ten plik, proszę oto aktualny ze skryptem java.
  1. <?php
  2. //error_reporting(0);
  3. ?>
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  5. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  6. <html xmlns="http://www.w3.org/1999/xhtml">
  7. <head>
  8. <title>Esscorpio - polskie meble w Holandii</title>
  9. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  10. <meta http-equiv="Content-Language" content="pl" />
  11. <meta name="Description" content="Internetowy sklep meblowy Esscorpio - polskie meble w Holandii" />
  12. <meta name="Keywords" content="meble, internetowy sklep meblowy, meble do salonu, meble dziecięcie, meble kuchenne, meble do biura, meble do sypialni, meble biurowe, mebel, meblościanka, sypialnia, polskie meble w holandii" />
  13. <meta name="Robots" content="index, follow" />
  14. <meta name="Revisit-after" content="1 days" />
  15. <meta name="Author" content="ROTE" />
  16. <meta name="Copyright" content="ROTE" />
  17. <meta http-equiv="Reply-to" content="" />
  18. <meta name="rating" content="General" />
  19. <link rel="Stylesheet" href="styl.css" />
  20. <script>
  21. function licz(x){
  22. x.wynik.value=(x.ilosc.value*$cena)
  23. }
  24. </script>
  25. </head>
  26. <body>
  27. <div class="calosc">
  28. <div class="naglowek">
  29. <?php
  30. include("naglowek.php");
  31. ?>
  32. </div>
  33. <div class="menug">
  34. <?php
  35. include("menug.php");
  36. ?>
  37. </div>
  38. <div class="srodek">
  39. <table border="0" cellpadding="0" cellspacing="0" align="center">
  40. <tr><td valign="top">
  41. <div class="menu">
  42. <?php
  43. include("menu.php");
  44. ?>
  45. </div>
  46. </td>
  47. <td valign="top" class="zawartosc">
  48. <div>
  49. <?php //skrypt wyswietlajacy zawartosc strony
  50.  
  51. $idp = addslashes($_GET['idp']);
  52.  
  53. include("polacz.php");
  54. $sql = "select * from Produkt where id_produkt = '$idp'";
  55. $wynik = mysql_query($sql);
  56. $tmp = 0;
  57. if ($rek = mysql_fetch_array($wynik))
  58. {
  59. $dostepny = htmlspecialchars($rek['widoczny_produkt']);
  60. $nazwa = htmlspecialchars($rek['nazwa_produkt']);
  61. $cena = htmlspecialchars($rek['cena_produkt']);
  62. $opis = $rek['opis_produkt'];
  63. $opis = htmlspecialchars_decode(stripslashes($opis));
  64. "
  65. <span style='font-size: xx-large;'>$nazwa</span><br/><br/>
  66. $opis <br/>
  67. ";
  68.  
  69. if ($dostepny)
  70. {
  71. //-------------------------
  72. $cbwersja = "<select size=1 name='wersja'>";
  73. $sql2 = "select * from Wersja where id_produkt = '$idp' order by nazwa_wersja";
  74. $wynik2 = mysql_query($sql2);
  75. while ($rek2 = mysql_fetch_array($wynik2))
  76. {
  77. $idw = htmlspecialchars($rek2['id_wersja']);
  78. $nazwaw = htmlspecialchars($rek2['nazwa_wersja']);
  79. $cenaw = htmlspecialchars($rek2['cena_wersja']);
  80.  
  81. $cbwersja .= "<option value='$idw'>$nazwaw - $cenaw</option>";
  82. }
  83. $cbwersja .= "</select>";
  84. if (strlen($cbwersja) < 50)
  85. {
  86. "
  87. <form name=\"x\" id=\"x\" action=dokoszyka.php?idp=$idp method=post>
  88.  
  89. <table border='1' width='100%'>
  90. <tbody align='center'>
  91. <tr>
  92. <td>Nazwa</td> <td>Ilość</td> <td>Cena</td> <td>Wartość</td>
  93. </tr>
  94. <tr>
  95. <td>$nazwa</td> <td><input type='text' name='ilosc' onkeyup=\"licz(this.form)\" maxlength='30' style=\" width: 40px; \"></td> <td>$cena €</td> <td><input type=\"text\" name=\"wynik\"></td>
  96. </tr>
  97. </tbody>
  98. </table>
  99. <p align='right'><input name='dodaj' type=submit value='Dodaj do koszyka'></p></form>
  100. ";
  101. }
  102. elseif(strlen($cbwersja) > 50)
  103. {
  104. echo "<form action=dokoszyka.php?idp=$idp method=post><table border='1' width='100%'>
  105. <tbody align='center'>
  106. <tr>
  107. <td>Wersja</td> <td>Ilość</td> <td>Cena</td> <td>Wartość</td>
  108. </tr>
  109. <tr>
  110. <td>$cbwersja</td> <td><input type='text' name='ilosc' onkeyup='licz(this.form) maxlength='30' style=\" width: 40px; \" ></td> <td>$cenaw €</td><td></td>
  111. </tr>
  112. </tbody>
  113. </table>
  114. <p align='right'><input name='dodaj' type=submit value='Dodaj do koszyka'></form></p>";
  115. }
  116.  
  117. //-------------------------
  118.  
  119.  
  120.  
  121.  
  122.  
  123. }
  124. }
  125. else
  126. {
  127. "
  128. Wybrany produkt nie istnieje...
  129. ";
  130. }
  131. ?>
  132. </div>
  133. </td></tr>
  134. </table>
  135. </div>
  136. <div class="stopka">
  137. <?php
  138. include("stopka.php");
  139. ?>
  140. </div>
  141. </div>
  142. </body>
  143. </html>
  144. </html>

fernet
to zmin
  1. function licz(x){
  2. x.wynik.value=(x.ilosc.value*$cena)
  3. }



na

  1. function licz(){
  2. var monzna = document.getElementById('mnozna').value;
  3. var mnoznik = document.getElementById('mnoznik').value;
  4. var iloczyn = monzna*mnoznik;
  5. document.getElementById('iloczyn').value = iloczyn;
  6. }


to zmin
  1. <input type='text' name='ilosc' onkeyup=\"licz(this.form)\" maxlength='30' style=\" width: 40px; \">

na
  1. <input type='text' name='ilosc' id='mnozna' onkeyup=\"java script:licz();\" maxlength='30' style=\" width: 40px; \">


to zmin
  1. <td>$cenaw </td>


na
  1. <td>$cenaw <input type='hidden' value='$cenaw' id='mnoznik'></td>


to zmien
  1. <input type='text' name='wynik'>


na
  1. <input type='text' value='' name='wynik' id="iloczyn">



Jesli przewidujesz balagan z mnozna czy mnoznikem ktore moga sie okazac stringami albo beda pojawiac sie wartosci dziesietne to musisz przygotowac licz() na te ewentualnosc w przeciwnym razie komputer Ci wybuchnie.
Hadol
Coś nie za bardzo działa :/
A to strona gdzie mozną wynik zobaczyć: TUTAJ
Oto zmieniony skrypt:
  1. <?php
  2. //error_reporting(0);
  3. ?>
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  5. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  6. <html xmlns="http://www.w3.org/1999/xhtml">
  7. <head>
  8. <title>Esscorpio - polskie meble w Holandii</title>
  9. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  10. <meta http-equiv="Content-Language" content="pl" />
  11. <meta name="Description" content="Internetowy sklep meblowy Esscorpio - polskie meble w Holandii" />
  12. <meta name="Keywords" content="meble, internetowy sklep meblowy, meble do salonu, meble dziecięcie, meble kuchenne, meble do biura, meble do sypialni, meble biurowe, mebel, meblościanka, sypialnia, polskie meble w holandii" />
  13. <meta name="Robots" content="index, follow" />
  14. <meta name="Revisit-after" content="1 days" />
  15. <meta name="Author" content="ROTE" />
  16. <meta name="Copyright" content="ROTE" />
  17. <meta http-equiv="Reply-to" content="" />
  18. <meta name="rating" content="General" />
  19. <link rel="Stylesheet" href="styl.css" />
  20. <script>
  21. function licz(){
  22. var monzna = document.getElementById('mnozna').value;
  23. var mnoznik = document.getElementById('mnoznik').value;
  24. var iloczyn = monzna*mnoznik;
  25. document.getElementById('iloczyn').value = iloczyn;
  26. }
  27. </script>
  28. </head>
  29. <body>
  30. <div class="calosc">
  31. <div class="naglowek">
  32. <?php
  33. include("naglowek.php");
  34. ?>
  35. </div>
  36. <div class="menug">
  37. <?php
  38. include("menug.php");
  39. ?>
  40. </div>
  41. <div class="srodek">
  42. <table border="0" cellpadding="0" cellspacing="0" align="center">
  43. <tr><td valign="top">
  44. <div class="menu">
  45. <?php
  46. include("menu.php");
  47. ?>
  48. </div>
  49. </td>
  50. <td valign="top" class="zawartosc">
  51. <div>
  52. <?php //skrypt wyswietlajacy zawartosc strony
  53.  
  54. $idp = addslashes($_GET['idp']);
  55.  
  56. include("polacz.php");
  57. $sql = "select * from Produkt where id_produkt = '$idp'";
  58. $wynik = mysql_query($sql);
  59. $tmp = 0;
  60. if ($rek = mysql_fetch_array($wynik))
  61. {
  62. $dostepny = htmlspecialchars($rek['widoczny_produkt']);
  63. $nazwa = htmlspecialchars($rek['nazwa_produkt']);
  64. $cena = htmlspecialchars($rek['cena_produkt']);
  65. $opis = $rek['opis_produkt'];
  66. $opis = htmlspecialchars_decode(stripslashes($opis));
  67. "
  68. <span style='font-size: xx-large;'>$nazwa</span><br/><br/>
  69. $opis <br/>
  70. ";
  71.  
  72. if ($dostepny)
  73. {
  74. //-------------------------
  75. $cbwersja = "<select size=1 name='wersja'>";
  76. $sql2 = "select * from Wersja where id_produkt = '$idp' order by nazwa_wersja";
  77. $wynik2 = mysql_query($sql2);
  78. while ($rek2 = mysql_fetch_array($wynik2))
  79. {
  80. $idw = htmlspecialchars($rek2['id_wersja']);
  81. $nazwaw = htmlspecialchars($rek2['nazwa_wersja']);
  82. $cenaw = htmlspecialchars($rek2['cena_wersja']);
  83.  
  84. $cbwersja .= "<option value='$idw'>$nazwaw - $cenaw</option>";
  85. }
  86. $cbwersja .= "</select>";
  87. if (strlen($cbwersja) < 50)
  88. {
  89. "
  90. <form name=\"x\" id=\"x\" action=dokoszyka.php?idp=$idp method=post>
  91.  
  92. <table border='1' width='100%'>
  93. <tbody align='center'>
  94. <tr>
  95. <td>Nazwa</td> <td>Ilość</td> <td>Cena</td> <td>Wartość</td>
  96. </tr>
  97. <tr>
  98. <td>$nazwa</td> <td><input type='text' name='ilosc' id='mnozna' onkeyup=\"java script:licz();\" maxlength='30' style=\" width: 40px; \"></td> <td>$cena €<input type='hidden' value='$cena' id='mnoznik'></td> <td><input type='text' value='' name='wynik' id='iloczyn'></td>
  99. </tr>
  100. </tbody>
  101. </table>
  102. <p align='right'><input name='dodaj' type=submit value='Dodaj do koszyka'></p></form>
  103. ";
  104. }
  105. elseif(strlen($cbwersja) > 50)
  106. {
  107. echo "<form action=dokoszyka.php?idp=$idp method=post><table border='1' width='100%'>
  108. <tbody align='center'>
  109. <tr>
  110. <td>Wersja</td> <td>Ilość</td> <td>Cena</td> <td>Wartość</td>
  111. </tr>
  112. <tr>
  113. <td>$cbwersja</td> <td><input type='text' name='ilosc' onkeyup='licz(this.form) maxlength='30' style=\" width: 40px; \" ></td> <td>$cenaw €</td><td></td>
  114. </tr>
  115. </tbody>
  116. </table>
  117. <p align='right'><input name='dodaj' type=submit value='Dodaj do koszyka'></form></p>";
  118. }
  119.  
  120. //-------------------------
  121.  
  122.  
  123.  
  124.  
  125.  
  126. }
  127. }
  128. else
  129. {
  130. "
  131. Wybrany produkt nie istnieje...
  132. ";
  133. }
  134. ?>
  135. </div>
  136. </td></tr>
  137. </table>
  138. </div>
  139. <div class="stopka">
  140. <?php
  141. include("stopka.php");
  142. ?>
  143. </div>
  144. </div>
  145. </body>
  146. </html>
  147. </html>
fernet
A powinno....

W kazdym badz razie do js musisz wyprowadzic wszystkie potrzebne wartosci tam policzyc wynik i wpakowac go tam gdze powinien byc i tyle ten edytor tutaj robi spacje w java script

tzn nie powino byc spacji pomiedzy slowem java a script tylko ma to leciiec jednym ciagiem

java script:licz();

dla kontroli w tej calej funkcji

  1. function licz(){
  2. var monzna = document.getElementById('mnozna').value;
  3. var mnoznik = document.getElementById('mnoznik').value;
  4. var iloczyn = monzna*mnoznik;
  5. document.getElementById('iloczyn').value = iloczyn;
  6. }



wpakuj kilka alertow zeby obejrzec zmienne

  1. function licz(){
  2. var monzna = document.getElementById('mnozna').value;
  3. var mnoznik = document.getElementById('mnoznik').value;
  4. alert(mozna);
  5. alert(mnoznik);
  6. var iloczyn = monzna*mnoznik;
  7. alert(iloczyn);
  8. document.getElementById('iloczyn').value = iloczyn;
  9. }




Po puszczenia guzika w inpucie powinienes zobaczyc trzy msgboxy w jednym wartosc ktora wpisales w kolejnym wartosc jaka masz na produkcie w trzecim wynik.
Hadol
Dzięki wszystko śmiga, chodziło o tą spację najprawdopodobniej. A ten Twój z alertami coś nie działał.
Jeden problem rozwiązany, jeszcze zostało te wersje, żeby były pod sobą a nie w selekcie, da się tak ? Dokładniej chodzi o zmienną $cbwersja.
fernet
http://www.kurshtml.edu.pl/
Hadol
No znam tą stronę, ale mi chodzi o konkretny sposób, bo tam nic konkretnego nie ma i wszystko co próbuje to nie działa : )

Pomoże ktoś ? Pilnie tego potrzebuje do środy.
croc
Tam gdzie masz generowanie wartości $cbwersja wstaw coś takiego zamiast tego co masz:
  1. $cbwersja = '';
  2. $liczbaWersji = 0;
  3. $sql2 = "select * from Wersja where id_produkt = '$idp' order by nazwa_wersja";
  4. $wynik2 = mysql_query($sql2);
  5. while ($rek2 = mysql_fetch_array($wynik2))
  6. {
  7. $idw = htmlspecialchars($rek2['id_wersja']);
  8. $nazwaw = htmlspecialchars($rek2['nazwa_wersja']);
  9. $cenaw = htmlspecialchars($rek2['cena_wersja']);
  10.  
  11. $cbwersja .= "<option value='$idw'>$nazwaw - $cenaw</option>";
  12. ++$liczbaWersji;
  13. }
  14. $cbwersja = "<select size='$liczbaWersji' name='wersja'>$cbwersja</select>";
Hadol
Dzięki ale mi dokładniej chodzi o coś innego, a mianowicie tak jak na obrazku poniżej. Chodzi o to żeby wersja była w tabeli pod spodem i do każdej można było wpisać ilość.


Pomoze ktoś ?

pomóżcie!
Micchaleq
nie wiem czy to ci pomoże, ale

jeżeli masz bazę danych odpowiednio zaprojektowaną to wystarczy pobrać wszystkie podkategorie dla danego produktu.

ja osobiście zrobił bym to tak :

Tabela Produktu zawierająca id_produktu, czy jest kategorią głowna, id_produktu głownego ( tutaj masz taki +, że wyświetlasz wszyskie produkty o każdym rodzaju )

następnie sprawdzasz czy produkt o takim id ma rodzaje czy nie,
jeżeli jest to wyświetlasz wszystkie jego

wówczas wyświetlasz tylko komórki WHERE id_produktu_glowngo = id_produktu

ewentualnie możesz dodatkową tabelę utworzyć rodzaje, gdzie masz id produktu i id rodzaju, wtedy już korzystasz z połączenia tabel.

zapisujesz sobie te dane do $ i odczytujesz foreach

PS nie przeglądałem dokładnie tego kodu bo mi się nie chce tongue.gif jeżeli to ty pisałeś to powinieneś z informacji powyżej dać rade.
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.