php&javascript adet güncelletme
Kodlarım bu şekilde adeti arttırmaya çalıştığım da sayfa yenileniyor ama bir veri değişimi olmuyor hatam nerede ?
<div class="counter js-counter" data-min="<?= $_SESSION['sepet']['adet'][$key]; ?>" data-adet-guncelle="<?= $_SESSION['sepet']['adet'][$key]; ?>">
<button class="counter__button js-counter-button js-counter-minus" type="button">
<svg class="icon icon-minus-circle">
<use xlink:href="upload/icon.svg#icon-minus-circle"></use>
</svg>
</button>
<div class="counter__value js-counter-value"><?= $_SESSION['sepet']['adet'][$key]; ?></div>
<button class="counter__button js-counter-button js-counter-plus" type="button">
<svg class="icon icon-plus-circle">
<use xlink:href="upload/icon.svg#icon-plus-circle"></use>
</svg>
</button>
<input class="js-counter-input js-counter-result js-counter-babies" type="hidden" value="<?= $_SESSION['sepet']['adet'][$key]; ?>" name="adet">
</div>
$(document).on('click','[data-adet-guncelle]',function(){
$.ajax({
url: "post.php",
type: "post",
data: 'islem=adet_guncelle&id='+$(this).attr('data-adet-guncelle'),
success: function (x) {
location.reload();
}
});
});
Burası post.php
if($_POST['islem'] == 'urun-ekle'){
if(is_numeric($_POST['urun_id']) AND is_numeric($_POST['adet'])){
if($_POST['adet'] < 1){
$_POST['adet'] = 1;
}
$urunquery = $db->prepare("SELECT * FROM urun where id=:id LIMIT 1");
$urun = $urunquery->execute(array(":id"=>$_POST['urun_id']));
$urun = $urunquery->fetch(PDO::FETCH_ASSOC);
if($urun){
if($_POST['adet'] > $urun['stok']){
echo 0;
}else{
$uniqid = $_POST['urun_id'];
$_SESSION['sepet']['urun_id'][$uniqid] = $_POST['urun_id'];
$_SESSION['sepet']['adet'][$uniqid] = $_SESSION['sepet']['adet'][$uniqid]+$_POST['adet'];
$_SESSION['sepet']['key'][$uniqid] = $uniqid;
echo 2;
}
}else{
echo 1;
}
}else{
echo 1;
}
}else if($_POST['islem'] == 'listele'){
if(@count($_SESSION['sepet']['key']) > 0){
$toplam = 0;
foreach ($_SESSION['sepet']['key'] as $key) {
$urunquery = $db->prepare("SELECT * FROM urun where id=:id LIMIT 1");
$urun = $urunquery->execute(array(":id"=>$_SESSION['sepet']['urun_id'][$key]));
$urun = $urunquery->fetch(PDO::FETCH_ASSOC);
$urunimg = $db->prepare("SELECT * FROM urun_img where urun_id=:urun_id LIMIT 1");
$uimg = $urunimg->execute(array(":urun_id"=>$_SESSION['sepet']['urun_id'][$key]));
$uimg = $urunimg->fetch(PDO::FETCH_ASSOC);
echo '<div class="notifications__list">
<a class="notifications__item" href="urun/'.$urun['sef'].'">
<div class="notifications__ava">
<img class="notifications__pic" src="upload/'.$uimg['img'].'">
</div>
<div class="notifications__details">
<div class="notifications__line">
<div class="notifications__user">'.$urun['baslik'].'</div>
<div class="notifications__time">'.$_SESSION['sepet']['adet'][$key].' Adet</div>
</div>
<div class="notifications__text"><span class="notifications__project">'.fiyat($urun['fiyat'] + $alt_secenek_fiyat).' TL</span></div>
</div>
</a>
</div>';
$toplam += $_SESSION['sepet']['adet'][$key] * ($urun['fiyat']);
}
echo '<a href="index.php">
<button class="widget__btn btn btn_purple " style="margin: 5px;" tabindex="0">Alışverişe Dön </button>
</a>
<a href="sepet">
<button class="widget__btn btn btn_purple " tabindex="0">Satın Al</button>
</a>';
}else{
echo '<center><div class="notifications__user">Sepetinizde Ürün Bulunmuyor</div></center>';
}
}else if($_POST['islem'] == 'sepet_sil'){
$uniqid = $_POST['id'];
unset($_SESSION['sepet']['urun_id'][$uniqid]);
unset($_SESSION['sepet']['adet'][$uniqid]);
unset($_SESSION['sepet']['key'][$uniqid]);
echo 1;
}else if($_POST['islem'] == 'sepet_sayisi'){
echo @count($_SESSION['sepet']['key']);
}else if($_POST['islem'] == 'favori-ekle'){
$uniqid = $_POST['urun_id'];
$_SESSION['favori']['urun_id'][$uniqid] = $_POST['urun_id'];;
$_SESSION['favori']['key'][$uniqid] = $uniqid;
echo 1;
}else if($_POST['islem'] == 'favori-sil'){
$uniqid = $_POST['urun_id'];
unset($_SESSION['favori']['urun_id'][$uniqid]);
unset($_SESSION['favori']['key'][$uniqid]);
echo 1;
}else if ($_POST['islem'] == 'adet-guncelle') {
$uniqid = $_SESSION['sepet']['adet'];
$_SESSION['sepet']['adet'][$uniqid] = $_SESSION['sepet']['adet'][$uniqid]+$_POST['adet'];
}
}
if($_POST['islem'] == 'favori_sayisi'){
echo @count($_SESSION['favori']['key']);
}
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (1)
Javascriptde isteği post olarak atmışsın, datalar gelmiş; datalar geldikten sonra dataları kullanmak yerine sayfayı yeniliyorsun.
Yaptığın metodla XHR isteği atıyorsun yani sayfa yenilenmeden arkaplanda data yüklüyorsun şuanki sayfaya, daha sonrasında da bu metod sana yeni dataları getirmişken
gidip sayfayı yeniliyorsun. Hal böyle olunca post.php sayfasına gönderdiğin dataların hiçbir anlamı olmuyor
Javascripti komple kaldırıp dataları normal form kullanarak göndermen sorunu çözebilir
eğer illa da javascript kullanmak istiyorsan sayfayı yenilemek yerine console.log diyerek succesfull'da x'i yazdırmayı dene