• 16-01-2022, 05:09:37
    #1
    Merhabalar müşteriler tablomda bazı kısımları çekiyorum ve kaydediyorum ançak tekrar kaydet dediğimde olmayan kayıtları alması gerekirken tüm kayıdı tekrar ekkliyor acaba nerde hata yapıyorum


    $siparissor=$db->prepare("SELECT * FROM musteriler LEFT JOIN musteri_beyanname_takip ON musteri_beyanname_takip.musteri_id=musteriler.musteri_id where gorunurluk=0");
     $siparissor->execute();
      
    
    foreach ($siparissor as $orfiche)
    {
         $musteri_id=$orfiche['musteri_id'];
                $beyanname_id=$orfiche['beyanname_id'];
    
            
            $beyannameSay = $db->prepare("SELECT * FROM  musteri_beyanname_takip_aylik WHERE beyanname_id = ?");
            $beyannameSay->execute(array($beyanname_id));
            $kontrol = $beyannameSay->fetch(PDO::FETCH_ASSOC);
            
            if($kontrol > 0)
            {
                echo "Var!.";
            
            }
            
          
    
    
            if (!empty($beyanname_id))
            {
            
                  $projeekle=$db->prepare("INSERT INTO  musteri_beyanname_takip_aylik SET
                beyanname_id=:beyanname_id,
                 musteri_id=:musteri_id,
                 baglanti_id=:baglanti_id,
                 yil=:yil,
                 ay=:ay"
            );
    
         $ekleme=$projeekle->execute(array(
                 'beyanname_id' => $beyanname_id,
                 'musteri_id' => $musteri_id,
                 'baglanti_id' => "20211",
                 'yil' => "2021",
                 'ay' => "1"
               ));
    
                if($ekleme)
                {
                    echo "Kaydınız Onaylandı.";
                }
                else
                {
                echo "HATA! Lütfen .";
                }
            }
        }
  • 16-01-2022, 06:15:06
    #2
    Şurada bir aksiyon almanız lazım ancak "var" yazdırıp döngüye devam ediyorsunuz;
    // koşul içinde ya döngüyü sonlandırıp yönlendirme yapın ya da başka bir şey;
    if($kontrol > 0)
    {
        echo "Var!.";
        break; // döngüyü sonlandırır
    }
    veya aşağıdaki kontrolü tamamen kaldırın;
    $beyannameSay = $db->prepare("SELECT * FROM  musteri_beyanname_takip_aylik WHERE beyanname_id = ?");
    $beyannameSay->execute(array($beyanname_id));
    $kontrol = $beyannameSay->fetch(PDO::FETCH_ASSOC);
    if($kontrol > 0)
    {
        echo "Var!.";
     }
    ve siparissor sql sorgunuzu şununla değiştirin;
    SELECT * FROM musteriler AS m
    LEFT JOIN musteri_beyanname_takip AS mb
         ON mb.musteri_id = m.musteri_id
    WHERE
        gorunurluk = 0
            AND
        NOT EXISTS
            (SELECT * FROM musteri_beyanname_takip_aylik WHERE beyanname_id = mb.beyanname_id)
    sorgu musteri_beyanname_takip_aylik tablosunda beyanname_id ile eşleşmeyen kayıtları döndürür. dolayısıyla döngü içinde ekstra kontrol yapmanıza gerek kalmaz.

    kolay gelsin.
  • 16-01-2022, 11:00:43
    #3
    merhabalar zaman ayrırıp cevap vediğinizi için teşekkür ederim ançak

    musteri_beyanname_takip bu tablodaki bilgilere göre kayıt yaptıracam

    musteri_id
    beyanname_id

    ghergedan adlı üyeden alıntı: mesajı görüntüle
    Şurada bir aksiyon almanız lazım ancak "var" yazdırıp döngüye devam ediyorsunuz;
    // koşul içinde ya döngüyü sonlandırıp yönlendirme yapın ya da başka bir şey;
    if($kontrol > 0)
    {
        echo "Var!.";
        break; // döngüyü sonlandırır
    }
    veya aşağıdaki kontrolü tamamen kaldırın;
    $beyannameSay = $db->prepare("SELECT * FROM  musteri_beyanname_takip_aylik WHERE beyanname_id = ?");
    $beyannameSay->execute(array($beyanname_id));
    $kontrol = $beyannameSay->fetch(PDO::FETCH_ASSOC);
    if($kontrol > 0)
    {
        echo "Var!.";
     }
    ve siparissor sql sorgunuzu şununla değiştirin;
    SELECT * FROM musteriler AS m
    LEFT JOIN musteri_beyanname_takip AS mb
         ON mb.musteri_id = m.musteri_id
    WHERE
        gorunurluk = 0
            AND
        NOT EXISTS
            (SELECT * FROM musteri_beyanname_takip_aylik WHERE beyanname_id = mb.beyanname_id)
    sorgu musteri_beyanname_takip_aylik tablosunda beyanname_id ile eşleşmeyen kayıtları döndürür. dolayısıyla döngü içinde ekstra kontrol yapmanıza gerek kalmaz.

    kolay gelsin.