Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL][JAVA] Formularz i zliczanie
Forum PHP.pl > Forum > Przedszkole
DannyM
Mam sobie formularz a dane do niego czesciowo sa pobierane z bazy a wartosci wpisuje klient. Tak sobie formularz.

Teraz mam tak:

nazwa | pole przelicznika np. 1000 | pole wartosci [wprowadza user] | i tu chcialbym dodac pole zliczajace wartosc * przelicznik ale w czasie wpisywania wartosci w czasie rzeczywistym.

Bede wdzieczny za wszystkie pomysly lub propozycje.
Ar2r
Zrób to na JS. Dla pola wartość zastosuj zdarzenie onkeypress które będzie wywoływać funkcję pobierajacą wartości, wykonującą na nich działanie i wpisującą wynik do określonego elementu (zastosuj document.getElementById).
DannyM
Cytat(Ar2r @ 7.08.2008, 10:14:28 ) *
Zrób to na JS. Dla pola wartość zastosuj zdarzenie onkeypress które będzie wywoływać funkcję pobierajacą wartości, wykonującą na nich działanie i wpisującą wynik do określonego elementu (zastosuj document.getElementById).

Szczerze w JS to ja umiem tyle co w C++ smile.gif
Nie masz moze jakiegos malego tutoriala ? Nie wiem nawet pod jaka nazwa tego szykac
Ar2r
Dla przykładu
  1. <input id="przelicznik" value="1000" />
  2. <input id="wartosc" onkeypress="oblicz()" />
  3. <input id="wynik" />
  4. </form>
  5. <script type="text/javascript">
  6. function oblicz(){
  7. var wynik = document.getElementById('przelicznik').value*document.getElementById('wartosc').value;
  8. document.getElementById('wynik').value=wynik;
  9. }
DannyM
Cytat(Ar2r @ 7.08.2008, 11:28:25 ) *
Dla przykładu
  1. <input id="przelicznik" value="1000" />
  2. <input id="wartosc" onkeypress="oblicz()" />
  3. <input id="wynik" />
  4. </form>
  5. <script type="text/javascript">
  6. function oblicz(){
  7. var wynik = document.getElementById('przelicznik').value*document.getElementById('wartosc').value;
  8. document.getElementById('wynik').value=wynik;
  9. }

o pieknie. Zaraz przetestuje i dam znac co mi wyszlo smile.gif

Dzieki Twojemu tutorialowi zrozumialem zasade.
Idac dalej napotykam dalesze problemy. Jesli pobieram duza ilosc danych do formularza z bazy pewne pola sie powtarzaja i rozwiazalem to tak:

  1. <input id="przelicznik<?php echo $row_grupaA['id']; ?>" value="1000" />
  2. <input id="wartosc<?php echo $row_grupaA['id']; ?>" onkeypress="oblicz()" />
  3. <input id="wynik<?php echo $row_grupaA['id']; ?>" />
  4. </form>


Bo tych produktow jest ze 100 i sa podzielone na grupy wiec nastepna grupa ma:

  1. <input id="przelicznik<?php echo $row_grupaB['id']; ?>" value="1000" />
  2. <input id="wartosc<?php echo $row_grupaB['id']; ?>" onkeypress="oblicz()" />
  3. <input id="wynik<?php echo $row_grupaB['id']; ?>" />
  4. </form>


Teraz jak to wbic w tego JS?
Czy mam dla kazdej grupy stworzyc odrebny kod np.:
  1. <script type="text/javascript">
  2. function oblicz(){
  3. var wynik = document.getElementById('przelicznik<?php echo $row_grupaA['id']; ?>').value*document.getElementById('wartosc<?php echo $row_grupaA['id']; ?>').value;
  4. document.getElementById('wynik<?php echo $row_grupaA['id']; ?>').value=wynik;
  5. }

Czy cos w tym stylu bo ten przyklad mi nie dziala sad.gif
Dodam, ze na koncu musze wszysko zsumowas
ayeo
Witaj!
Po pierwsze Twój kod JS jest całkowicie bezsesnu! Zostaw go tak jak Ar2r wyżej Ci pokazał winksmiley.jpg Jedyne co musisz dodać to jakąś zmienną globalną i do niej dodawać poszczególne wyniki, żeby mieć sumę na końcu. Samo wyświetlanie formularza rób w pętli po prostu.

Pozdrawiam!
DannyM
No wlasnie zliczanie jest po <?php echo $row_grupaB['id']; ?>
Wszysko jest w petli. Niestety nie zlicza. Dodaje do kazdej pozycji ID produktu wiec sadzilem, ze do kodu JS trzeba tez to dodac bo inaczej on nie widzi wartosc tylko wartosc22 wiec jej nie zlicza.
Ar2r
Nie możesz w ten sposób mieszać JS i php. Jeśli chcesz mieć uzależnione wyniki od ID to na przykład:
  1. ...
  2. <input id="wartosc<?php echo $row_grupaA['id']; ?>" onkeypress="oblicz(<?php print $row_grupaA['id'];?>)" />
  3. ...
  4. <script type="text/javascript">
  5. function oblicz(id){
  6. var przel = 'przelicznik'+id;
  7. var wart = 'wartosc'+id;
  8. var dest = 'wynik'+id;
  9. var wynik = document.getElementById(przel).value*document.getElementById(wart).value;
  10. document.getElementById(dest).value=wynik;
  11. }
DannyM
Pokaze Ci do mam moze znajdziesz bleda winksmiley.jpg

  1. <tr bgcolor="" onMouseOver="this.bgColor='#FFF9E1';" onMouseOut="this.bgColor=''">
  2. <td><input name="pole<?php echo $row_grupa['id']; ?>" type="text" class="hide" id="pole<?php echo $row_grupa['id']; ?>" readonly="readonly" value="<?php echo $row_grupa['index']; ?>" size="10" /></td>
  3. <td><input name="nazwa<?php echo $row_grupa['id']; ?>" type="text" class="hide" id="nazwa<?php echo $row_grupa['id']; ?>" readonly="readonly" value="<?php echo $row_grupa['name']; ?>" size="50" /></td>
  4. <td><input name="weight<?php echo $row_grupa['id']; ?>" type="text" id="weight<?php echo $row_grupa['id']; ?>" onfocus="this.select()" value="<?php echo $row_grupa['weight']; ?>" size="5" readonly="readonly"/>
  5. <input name="sztuki<?php echo $row_grupa['id']; ?>" type="text" id="sztuki<?php echo $row_grupa['id']; ?>" onfocus="this.select()" value="<?php echo $row_grupa['sztuki']; ?>" size="5" readonly="readonly"/>
  6. <input name="karton<?php echo $row_grupa['id']; ?>" type="text" id="karton<?php echo $row_grupa['id']; ?>" onfocus="this.select()" size="5" onkeypress="oblicz(<?php print $row_grupa['id'];?>)"/></td>
  7. <td align="center">
  8.  
  9. <input name="kg" type="text" id="kg" onfocus="this.select()" size="5" /> </td>
  10. <td align="center">&nbsp;</td>
  11. <td align="center">
  12. <input name="szt" type="text" id="szt" onfocus="this.select()" size="5" onkeypress="oblicz(<?php print $row_grupa['id'];?>)"/> </td>
  13. </tr>
  14. <script type="text/javascript">
  15. function oblicz(id){
  16. var przel = 'waga'+id;
  17. var wart = 'karton'+id;
  18. var dest = 'kg'+id;
  19. var sztuki = 'szt'+id;
  20. var wynik = document.getElementById(przel).value*document.getElementById(wart).value;
  21. var wynik = document.getElementById(sztuki).value*document.getElementById(wart).value;
  22. document.getElementById(dest).value=wynik;
  23. document.getElementById(sztuki).value=wynik;
  24. }


Dodam tylko, ze to wiersz ktory sie zapetla.
Ar2r
Napisz jeszcze co się dzieje, jaki jest efekt, błąd oraz gdzie się kończy pętla?
<script> też jest w pętli?
DannyM
Wlansi nic sie nie dzieje smile.gif
Zwyczajnie nie oblicza. JS nie jest w petli.
Ten wiersz tabeli tylko sie powiela
Ar2r
Dobra
1. Nazwy w właściwości name muszą odpowiadać tym w JS (skoro masz na przykład sztuki to nie możesz nagle skracac w JS nazwy do szt)
2. Zmienna wynik w JS jest zastosowana dwukrotnie. Pierwsze wystapienie zostanie nadpisane drugim;

Popraw i zobacz czy dziala
DannyM
Zmienilem na:
  1. <tr bgcolor="" onMouseOver="this.bgColor='#FFF9E1';" onMouseOut="this.bgColor=''">
  2. <td><input name="pole<?php echo $row_grupa['id']; ?>" type="text" class="hide" id="pole<?php echo $row_grupa['id']; ?>" readonly="readonly" value="<?php echo $row_grupa['index']; ?>" size="10" /></td>
  3. <td><input name="nazwa<?php echo $row_grupa['id']; ?>" type="text" class="hide" id="nazwa<?php echo $row_grupa['id']; ?>" readonly="readonly" value="<?php echo $row_grupa['name']; ?>" size="50" /></td>
  4. <td><input name="weight<?php echo $row_grupa['id']; ?>" type="text" id="weight<?php echo $row_grupa['id']; ?>" onfocus="this.select()" value="<?php echo $row_grupa['weight']; ?>" size="5" readonly="readonly"/>
  5. <input name="sztuki<?php echo $row_grupa['id']; ?>" type="text" id="sztuki<?php echo $row_grupa['id']; ?>" onfocus="this.select()" value="<?php echo $row_grupa['sztuki']; ?>" size="5" readonly="readonly" />
  6. <input name="karton<?php echo $row_grupa['id']; ?>" type="text" id="karton<?php echo $row_grupa['id']; ?>" onfocus="this.select()" size="5" onkeypress="oblicz(<?php print $row_grupa['id'];?>)"/></td>
  7. <td align="center">
  8.  
  9. <input name="kg" type="text" id="kg" onfocus="this.select()" size="5" /> </td>
  10. <td align="center">&nbsp;</td>
  11. <td align="center">
  12. <input name="sztuki_sum" type="text" id="sztuki_sum" onfocus="this.select()" size="5" /> </td>
  13. </tr>
  14.  
  15. <script type="text/javascript">
  16. function oblicz(id){
  17. var waga = 'weight'+id;
  18. var karton = 'karton'+id;
  19. var kg = 'kg'+id;
  20. var sztuki = 'sztuki'+id;
  21. var wynik = document.getElementById(waga).value*document.getElementById(karton).value;
  22. var wynik2 = document.getElementById(sztuki).value*document.getElementById(karton).value;
  23. document.getElementById(kg).value=wynik;
  24. document.getElementById(sztuki_sum).value=wynik2;
  25. }

Wydaje mi sie, ze powinno smigac ale tak nie jest
Nie wiem ale wydaje mi sie, ze to cos z onkeypress="oblicz(<?php print $row_grupa['id'];?>)"
Ar2r
Pola kg i sztuki_sum nie posiadają indeksów, więc w JS też są niepotrzebne. Jeśli chciałeś użyć bezpośrednio nazw to trzebyło je opakować w cudzysłów
  1. document.getElementById('kg').value=wynik;
  2. document.getElementById('sztuki_sum').value=wynik2;
DannyM
A tak z innej beczki
Jak poprawnie odejmowac.

var wynik = document.getElementById(waga).value-document.getElementById(karton).value;

cos smiesznie odejmuje i odejmuje jak poprawiam to co wpisalem to on dalej odejmuje smile.gif

A czy da sie te wartosc jakosc zaokraglic? Mam 2,99 a wole 3 itd.
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.