v2.5.2
Giriş yap

SESSION VERİ GÜNCELLEME

Anonim
471 defa görüntülendi

Merhaba session ile sepet oluşturdum herhangi bir sql kaydı yok

session da olan adeti nası güncellerim

if($_POST['islem'] == 'sepet-ekle'){
        if(is_numeric($_POST['urun_id']) AND is_numeric($_POST['adet']) AND is_numeric($_POST['secenek_id'])){
            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['secenek_id'] > 0){
                $query = $db->prepare("SELECT * FROM urun_secenek_alt where id=:id LIMIT 1");
                $alt_secenek = $query->execute(array(":id"=>$_POST['secenek_id']));
                $alt_secenek = $query->fetch(PDO::FETCH_ASSOC);
                if($alt_secenek){
                  if($_POST['adet'] > $alt_secenek['stok']){
                    echo 0;
                  }else{
                    $uniqid = $_POST['urun_id'].'-'.$_POST['secenek_id'];
                    $_SESSION['sepet']['urun_id'][$uniqid]      = $_POST['urun_id'];
                    $_SESSION['sepet']['adet'][$uniqid]         = $_POST['adet'];
                    $_SESSION['sepet']['secenek_id'][$uniqid]   = $_POST['secenek_id'];
                    $_SESSION['sepet']['key'][$uniqid]          = $uniqid;
                    echo 2;
                  }
                }else{
                  echo 1;
                }
              }else{
                  if($_POST['adet'] > $urun['stok']){
                    echo 0;
                  }else{
                    $uniqid = $_POST['urun_id'];
                    $_SESSION['sepet']['urun_id'][$uniqid]      = $_POST['urun_id'];
                    $_SESSION['sepet']['adet'][$uniqid]         = $_POST['adet'];
                    $_SESSION['sepet']['secenek_id'][$uniqid]   = 0;
                    $_SESSION['sepet']['key'][$uniqid]          = $uniqid;
                    echo 2;
                  }
              }
            }else{
              echo 1;
            }
        }else{
          echo 1;
        }
saffetoge
1181 gün önce

Merhaba Kodunda bulunan aşağıdaki bölümde işaretlediğim yeri değiştirmen çözüm olacaktır.

if($_POST['adet'] > $urun['stok']){

                echo 0;
              }else{
                $uniqid = $_POST['urun_id'];
                $_SESSION['sepet']['urun_id'][$uniqid]      = $_POST['urun_id'];
                $_SESSION['sepet']['adet'][$uniqid]         = $_POST['adet'];
                $_SESSION['sepet']['secenek_id'][$uniqid]   = 0;
                $_SESSION['sepet']['key'][$uniqid]          = $uniqid;
                echo 2;
              }
              
              

$_SESSION['sepet']['adet'][$uniqid] = $_SESSION['sepet']['adet'][$uniqid]+$_POST['adet'];

burada session 'da tuttuğun veriyi sürekli post ettiğin veri ile güncelliyorsun dolayısı ile hep 1 olarak kalacaktır. Ancak posttan gelen veriyi üstüne eklemen gerekiyor.

burayı düzenlersen sonrasında birde eksiltme için koda ihityacın olacak.

Bir küçük dip not $_POST global değişkenlerini direk kullanmamanı tavsiye ederim.
bu şekilde bir fonksiyon tanımlarsan daha güzel olur.

php
/**

  • @param $name
  • @return string
    */
    function post($name)
    {
    if (isset($_POST[$name]))
    return htmlspecialchars(trim($_POST[$name]));
    }