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:
foreach ($_SESSION['koszyk'] as $key => $val) {
?>
<table>
<div class="usun" id="
<?php echo $key; ?>">usun</div>
<tr>
<td colspan="1" rowspan="4" id="photo" style="background-image: url('
<?php echo $val['photo']; ?>');"></td>
<td colspan="2" id="nr" value="
<?php echo $val['nr']; ?>">Nr:
<?php echo $val['nr']; ?></td>
</tr>
<tr>
<td colspan="2" id="nazwa">
<?php echo $val['nazwa']; ?></td>
</tr>
<tr>
<td id="kolor">K:
<?php echo $val['kolor']; ?></td>
<td id="rozmiar">R:
<?php echo $val['rozmiar']; ?></td>
</tr>
<tr>
<td id="ilosc" value="
<?php echo $val['ilosc']; ?>" >
<?php echo $val['ilosc']; ?> szt
<b id="plus" nr="
<?php echo $key;?>">+</b>
<b id="minus" nr="
<?php echo $key;?>">-</b>
</td>
<td id="cena" value="
<?php echo $val['cena']; ?>">
<?php echo $val['cena']; ?> zł</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(isset($_GET['nr']) && isset($_GET['nowa_ilosc'])){ 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?
Ten post edytował kamilo818 8.10.2014, 10:58:49