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:
foreach ($_SESSION['koszyk'] as $key => $val) { ?> <table> <tr> <td colspan="1" rowspan="4" id="photo" style="background-image: url('<?php echo $val['photo']; ?>');"></td> </tr> <tr> </tr> <tr> </tr> <tr> </td> </tr> </table> <?php } ?>
pobieranie aktualniej wartosci, zmiana i przesłanie
$('div.zamowienie b#plus').click(function(){ var n=parseInt($('td#ilosc').attr('value')); //powiekszenie wartosci zamowienia console.log('przed: '+n); var nr = $(this).attr('nr'); $('td#ilosc').attr('value',n++); var nowa_ilosc = n++; console.log('po: '+nowa_ilosc); var dataString = 'nr=' + nr+'&nowa_ilosc='+nowa_ilosc; $.ajax({ type: 'get', url: ('http://page4u.waw.pl/shop/page/koszyk.php'), data: dataString, success: function (obj) { $('.koszyk_main').html(obj); } }); $.ajax({ type: 'get', url: ('http://page4u.waw.pl/shop/page/zamowienie.php'), success: function (obj) { $('.zamowienie').html(obj); } }); }); $('div.zamowienie b#minus').click(function(){ var m=parseInt($('td#ilosc').attr('value')); //zmniejszenie wartosci zamowienia console.log('przed: '+m); var nr = $(this).attr('nr'); $('td#ilosc').attr('value',m--); var nowa_ilosc = m--; console.log('po: '+nowa_ilosc); var dataString = 'nr=' + nr+'&nowa_ilosc='+nowa_ilosc; $.ajax({ type: 'get', url: ('http://page4u.waw.pl/shop/page/koszyk.php'), data: dataString, success: function (obj) { $('.koszyk_main').html(obj); } }); $.ajax({ type: 'get', url: ('http://page4u.waw.pl/shop/page/zamowienie.php'), success: function (obj) { $('.zamowienie').html(obj); } }); });
No i odebranie i zmiana wartosci w koszyku.
if($_GET['nowa_ilosc']>0) $_SESSION['koszyk'][$_GET['nr']]['ilosc']=$_GET['nowa_ilosc']; }
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?