W sekcji 'zamowienie' user może jeszcze modyfikować zamowienie przez usuniecie przedmiotu lub zwiększenie i zmniejszenie ilosci danego produktu.
Gdy dokonuje tych zmian w sekcji 'zmowienie' zmieniają sie wartości jednocześnie w koszyku i w zamówieniu.
robie to tak:
wysyłam wartosc zmiennej do koszyka i tam w zmiennej $_SESSION['koszyk']; powiększam ilosc danego produktu.
rownież ajaxem odswieżam dane w sekcji 'zamowienie' aby dane uaktualniły się tu i tu.
Zarówno koszyk jak i zamówienie pobiera dane z $_SESSION['koszyk']
$('div.zamowienie b#plus').click(function(){ var n=parseInt($(this).parent('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, beforeSend: function () { $('body').append('<div class="loader"><img src="http://page4u.waw.pl/shop/712.gif"/></div>'); }, success: function (obj) { $('.loader').remove(); $('.koszyk_main').html(obj); } }); $.ajax({ type: 'get', url: ('http://page4u.waw.pl/shop/page/zamowienie.php'), beforeSend: function () { $('body').append('<div class="loader"><img src="http://page4u.waw.pl/shop/712.gif"/></div>'); }, success: function (obj) { $('.loader').remove(); $('.zamowienie').html(obj); } }); });
I czasami pojawia sie problem, że wartość w koszyku zmienia się prawidłowo a w zamówieniu tak jak by nie. Sądze że poprostu szybciej odświeżyło się 'zamowienie' niz w koszyku została zmieniona wartośc $_SESSION['koszyk'];
Po odswieżeniu 'zamowienia' wartosc jest poprawna a nawet jak zatwierdze zamowienie to wartosc tez jest poprawna, wiec wynik ze $_SESSION['koszyk'] jest poprawnie zmieniona.
Teoretycznie wiem jak to pokonać ale praktycznie nie wiem jak to napisać.
czyli po tym jak przesle ajaxem dane do koczyka i zmieni sie wartośc zamówienia czyli zakonczy sie sukcesem dopiero przsłać dane do 'zamowienie'
Chyba że jakiś inne rowiązanie do tego będzie ?
w koszyku tak zwiekszam ilosc produktów:
if($_GET['nowa_ilosc']>0) $_SESSION['koszyk'][$_GET['nr']]['ilosc']=$_GET['nowa_ilosc']; }