Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][PHP] Update wartosci w tablicy $_SESSION
Forum PHP.pl > Forum > Przedszkole
kamilo818
Witam,
w tablicy $_SESSION['koszyk'] przechowuje wartosci zamówien:
id | nazwa | ilosc | cena
id | nazwa | ilosc | cena
...

Chce żeby użytkownik miał możliwość zwiększenia ilosci.
Robie to tak:

wyświetlanie:

  1.  
  2. foreach ($_SESSION['koszyk'] as $key => $val) {
  3.  
  4. ?>
  5.  
  6. <table>
  7. <?php echo $key + 1; ?>
  8. <div class="usun" id="<?php echo $key; ?>">usun</div>
  9. <tr>
  10. <td colspan="1" rowspan="4" id="photo" style="background-image: url('<?php echo $val['photo']; ?>');"></td>
  11. <td colspan="2" id="nr" value="<?php echo $val['nr']; ?>">Nr:<?php echo $val['nr']; ?></td>
  12. </tr>
  13. <tr>
  14. <td colspan="2" id="nazwa"><?php echo $val['nazwa']; ?></td>
  15. </tr>
  16. <tr>
  17. <td id="kolor">K: <?php echo $val['kolor']; ?></td>
  18. <td id="rozmiar">R: <?php echo $val['rozmiar']; ?></td>
  19. </tr>
  20. <tr>
  21. <td id="ilosc" value="<?php echo $val['ilosc']; ?>" ><?php echo $val['ilosc']; ?> szt
  22. <b id="plus" nr="<?php echo $key;?>">+</b>
  23. <b id="minus" nr="<?php echo $key;?>">-</b>
  24. </td>
  25. <td id="cena" value="<?php echo $val['cena']; ?>"><?php echo $val['cena']; ?> zł</td>
  26. </tr>
  27.  
  28. </table>
  29.  
  30. <?php
  31. }
  32. ?>

pobieranie aktualniej wartosci, zmiana i przesłanie

  1. $('div.zamowienie b#plus').click(function(){
  2. var n=parseInt($('td#ilosc').attr('value')); //powiekszenie wartosci zamowienia
  3. console.log('przed: '+n);
  4. var nr = $(this).attr('nr');
  5. $('td#ilosc').attr('value',n++);
  6. var nowa_ilosc = n++;
  7. console.log('po: '+nowa_ilosc);
  8. var dataString = 'nr=' + nr+'&nowa_ilosc='+nowa_ilosc;
  9. $.ajax({
  10. type: 'get',
  11. url: ('http://page4u.waw.pl/shop/page/koszyk.php'),
  12. data: dataString,
  13. success: function (obj) {
  14. $('.koszyk_main').html(obj);
  15. }
  16. });
  17. $.ajax({
  18. type: 'get',
  19. url: ('http://page4u.waw.pl/shop/page/zamowienie.php'),
  20.  
  21. success: function (obj) {
  22. $('.zamowienie').html(obj);
  23. }
  24. });
  25.  
  26. });
  27. $('div.zamowienie b#minus').click(function(){
  28. var m=parseInt($('td#ilosc').attr('value')); //zmniejszenie wartosci zamowienia
  29. console.log('przed: '+m);
  30. var nr = $(this).attr('nr');
  31. $('td#ilosc').attr('value',m--);
  32. var nowa_ilosc = m--;
  33. console.log('po: '+nowa_ilosc);
  34. var dataString = 'nr=' + nr+'&nowa_ilosc='+nowa_ilosc;
  35. $.ajax({
  36. type: 'get',
  37. url: ('http://page4u.waw.pl/shop/page/koszyk.php'),
  38. data: dataString,
  39. success: function (obj) {
  40. $('.koszyk_main').html(obj);
  41. }
  42. });
  43. $.ajax({
  44. type: 'get',
  45. url: ('http://page4u.waw.pl/shop/page/zamowienie.php'),
  46.  
  47. success: function (obj) {
  48. $('.zamowienie').html(obj);
  49. }
  50. });
  51.  
  52. });


No i odebranie i zmiana wartosci w koszyku.

  1. if(isset($_GET['nr']) && isset($_GET['nowa_ilosc'])){
  2. if($_GET['nowa_ilosc']>0)
  3. $_SESSION['koszyk'][$_GET['nr']]['ilosc']=$_GET['nowa_ilosc'];
  4. }


gdy w koszyku jest 1 produkt to nie ma problemu i zwiększanie, zmniejszanie ilosci działa poprawnie.
Ale jak już kolejne się pojawiają to robią się kwiatki czyli albo wogole nie reaguje na zwiekszenie/zmniejszenie albo raz zadziała raz nie lub wartość zmienia się co kilka a nie co 1.

Gdzie tu jest błąd?
Turson
Dziala tylko dla jednego bo masz w petli
  1. <b id="plus" nr="<?php echo $key;?>">+</b>
  2. <b id="minus" nr="<?php echo $key;?>">-</b>

id plus i minus, a id musi byc unikalne czyli nie moze sie powtarzac
kamilo818
Faktycznie.

Rozwiązanie:
  1. var n=parseInt($(this).parent('td#ilosc').attr('value'));


Dzięki. Nie zauważyłem tego.
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.