• 29-11-2020, 01:30:22
    #1
    Merhaba Arkadaşlarveritabanıma kelimeler girdiğim, dilkelime tabloma kelimeleri ekleme yapıyor ama sıkıntı sayfayı yenilediğimde ekleme yapılan kelimeleri tekrar tekrar veritabanımdaki dilkelime tabloma ekliyor ve veritabanımda aynı kelimeden 1 tane olması gerekirken, aynı kelimeden 100 lerce oluşuyor, kod aşağıdaki gibi, yardımcı olabilirmisiniz.
    teşekkürler.
    global $tumDilKelimeler;$
    bilgi = $db->query("Select * From dilkelime Order by id DESC");
    while($bilgice = $bilgi->fetch(PDO::FETCH_ASSOC)){
    if($bilgice['kelimeid']==0){
    $tumDilKelimeler[$bilgice["kelime"]]=$bilgice['id'];
    $tumDilKelimeler[$bilgice["dil"]][$bilgice['id']]=$bilgice['kelime'];
    }else{
    $tumDilKelimeler[$bilgice["dil"]][$bilgice['kelimeid']]=$bilgice['kelime'];
    }}
    function dil($kelime,$tur=1){
    global $tumDilKelimeler;
    global $db;
    $kelimeCevir=$kelime;
    $anadil=bilgicek("anaDil");
    if(isset($tumDilKelimeler[$kelime])){
    $dilkelimeid=$tumDilKelimeler[$kelime];
     if(isset($tumDilKelimeler[seciliDil][$dilkelimeid])){
    $kelimeCevir=$tumDilKelimeler[seciliDil][$dilkelimeid];
    if(empty($kelimeCevir)){
    $kelimeCevir=$kelime;
    }
    }else{
    $ekle=$db->prepare("INSERT INTO dilkelime (dil,kelimeid,tur,kelime) VALUES (:secilidil, :dilkelimeid, :tur, :kelime)");
    $ekle->execute(array(
    ':secilidil' => seciliDil,
    ':dilkelimeid' => $dilkelimeid,
    ':tur' => $tur,
    ':kelime' => $kelime 
    ));
    $tumDilKelimeler[seciliDil][$dilkelimeid]=$kelime;
    $kelimeCevir=$kelime;
    }}else{
    $ekle = $db->prepare("INSERT INTO dilkelime (dil, kelime, kelimeid, tur) VALUES (:dil, :kelime, :kelimeid, :tur)");
    $ekle->execute(array(
    ':dil' => 1,
    ':kelime' => $kelime,
    ':kelimeid' => 6,
    ':tur' => $tur
    ));
    $turkceid = $db->lastInsertId();
    $tumDilKelimeler[$kelime]=$turkceid;
    $tumDilKelimeler[seciliDil][$turkceid]=$kelime;
    $dilcek=$db->prepare("Select * From dil Where id!='1'");
    $dilcek->execute();
    while($dil=$dilcek->fetch(PDO::FETCH_OBJ)) {
    $tumDilKelimeler[$dil->id][$turkceid]=$kelime;
    $ekle=$db->prepare("INSERT INTO dilkelime (dil,kelime,kelimeid,tur) VALUES (?, ?, ?, ?)");
    $ekle->bindParam(1, $dil->id, PDO::PARAM_INT);
    $ekle->bindParam(2, $kelime, PDO::PARAM_STR);
    $ekle->bindParam(3, $turkceid, PDO::PARAM_INT);
    $ekle->bindParam(4, $tur, PDO::PARAM_INT);
    $ekle->execute();
    }}
    return $kelimeCevir;}
  • 29-11-2020, 01:35:09
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    İşlemleri tek sayfa üzerinden yaptığınız için sayfa yenilendikçe gönderdiğiniz post işlemi tekrarlanıyor sanırım, en basit yoluyla select işleminizi farklı bir sayfada tutup post işlemini oraya gerçekleştirmeniz yeterli olacaktır.
  • 29-11-2020, 01:36:00
    #3
    Kod tam değil, fakat dikkatimi çeken bir şey var; seciliDil sanırım bir değişken ama her yerde $ işareti olmadan kullanılmış. Bu sebeple örneğin
    isset($tumDilKelimeler[seciliDil][$dilkelimeid]
    false olarak dönecektir.

    Ha eğer seciliDil bir constant ise; o zaman başta da dediğim gibi kod tam değil, bu şekilde yardımcı olamayız.
    İyi çalışmalar
  • 29-11-2020, 01:38:11
    #4
    babfo adlı üyeden alıntı: mesajı görüntüle
    İşlemleri tek sayfa üzerinden yaptığınız için sayfa yenilendikçe gönderdiğiniz post işlemi tekrarlanıyor sanırım, en basit yoluyla select işleminizi farklı bir sayfada tutup post işlemini oraya gerçekleştirmeniz yeterli olacaktır.
    Hocam fonksiyonlar sayfası içerisinde kodlar
  • 29-11-2020, 01:42:22
    #5
    Bı sorgu daha yap postan gelen veri veritabanında yoksa if çalışsin varsa else bir hata yazdırsın
  • 29-11-2020, 01:50:03
    #6
    Hangi veriden tek olmasını istiyorsanız if ile post işlemi yapmadan önce veri tabanı kontrolü yaptırıp varsa eklemesini engelleyebilirsiniz.
  • 29-11-2020, 01:53:10
    #7
    emlak21 adlı üyeden alıntı: mesajı görüntüle
    Hocam fonksiyonlar sayfası içerisinde kodlar
    post işleminizde session ile bir token tutup if koşuluyla token aynıysa işlem yaptırmamayı kullanabilirsiniz, bu sayede post tekrarlansa da if koşuluna takılıp işlem yapmaz, şu an aklıma bu çözüm geliyor kodlarınızın tamamını göremediğim için
  • 29-11-2020, 02:27:00
    #8
    herşeyden önce veritabanı tasarımınız hatalı.. eğer bir tabloda bir alanın tekil olmasını istiyorsanız o alalın unique yapmalısınız.. sonrasında diğer arkadaşların dediği gibi yazılımsal olarak post işleminden sonra veritabanında var olup olmadığını sorgulayabilirsiniz ki bunu zaten yapıyor olmanız lazım aynı post işlemi ile veritabanına kayıt eklenebiliyor ise normal kayıt eklerken de daha önce eklenmiş bi kelimeyi db ye kaydedebilirsiniz ve haberiniz olmaz..
  • 29-11-2020, 21:45:45
    #9
    Arkadaşlar Veritabanımdaki diğer tablolara veri eklediğimde, veri eklediğim tabloların verilerini otomatik olarak dilkelime tabloma bütün tabloların verileri ekleniyor, aşağıdaki düzenleme yaptığım kodda veritabanıma, veri girdiğimde ve sayfayı yenilediğim zaman veriler dilkelime tabloma eklenmiş oluyor, dilkelime tablomdaki kelimeid sütünuna kelimenin id sini giriyor ama o id ye ait kelimeyi kelime sütünuna girmiyor, işin içinden çıkamadım yardım edermisiniz

    global $tumDilKelimeler;
    $bilgi = $db->query("Select * From dilkelime Order by id DESC");
    while($bilgice = $bilgi->fetch(PDO::FETCH_ASSOC)){
    if($bilgice['kelimeid']==0){
    $tumDilKelimeler[$bilgice["kelime"]]=$bilgice['id'];
    $tumDilKelimeler[$bilgice["dil"]][$bilgice['id']]=$bilgice['kelime'];
    }else{
    $tumDilKelimeler[$bilgice["dil"]][$bilgice['kelimeid']]=$bilgice['kelime'];
    }}function dil($kelime,$tur="1"){
    global $tumDilKelimeler;
    global $db;
    $kelimeCevir=$kelime;
    $anadil=bilgicek("anaDil");
    if(isset($tumDilKelimeler[$kelime])){
    $dilkelimeid=$tumDilKelimeler[$kelime];
    if(isset($tumDilKelimeler[seciliDil][$dilkelimeid])){
    $kelimeCevir=$tumDilKelimeler[seciliDil][$dilkelimeid];
    if(empty($kelimeCevir)){
    $kelimeCevir=$kelime;
    }
    }else{
    $ekle = $db->query("Insert Into dilkelime (dil,kelimeid,tur) VALUES('".seciliDil."','$dilkelimeid','$tur')");
    $tumDilKelimeler[seciliDil][$dilkelimeid]=$kelime;
    $kelimeCevir=$kelime;
    }
    }else{
    $ekle = $db->query("Insert Into dilkelime (dil,kelime,tur) VALUES('1','$kelime','$tur')");
    $turkceid = $db->lastInsertId();
    $tumDilKelimeler[$kelime]=$turkceid;
    $tumDilKelimeler[seciliDil][$turkceid]=$kelime;
    $dilcek=$db->prepare("Select * From dil Where id!='1'");
    $dilcek->execute();
    while($dil=$dilcek->fetch(PDO::FETCH_OBJ)){
    $tumDilKelimeler[$dil->id][$turkceid]=$kelime;
    $ekle = $db->query("Insert Into dilkelime (dil,kelimeid,tur) VALUES('$dil->id','$turkceid','$tur')");
    }
    }
    return $kelimeCevir;
    }