v2.5.2
Giriş yap

PHP MYSQL Hariç

ugurkilci
1,146 defa görüntülendi

ÇÖZÜLDÜ!
Kodlar: https://pbs.twimg.com/media/EZsmVYJWsAAdddU?format=png&name=900x900 ve https://pbs.twimg.com/media/EZsmY1bXgAAFIEf?format=png&name=small şurda yazılı

Ayarlar sayfası kodluyorum. Üye adını veya eposta adresini değiştirebilecek.

yazdığım eposta hali hazırdaki epostam ile { aynı ise

güncelleme işlemi olmasın

} farklı ise {

benim epostam hariç, veri tabanında öyle eposta varsa onu kontrol et { var
    o zaman hata versin.
    > "böyle eposta var başka eposta deneyiniz"
} yok {
    güncelle
}

}

-- Sorun Tam Olarak Nedir? --

Üye idsi 1 olan kullanıcı ayarlara girer. Bir güncelleme işlemi yapar. Bu güncellemede eposta adresinde bir değişiklik olmazsa "eposta adresini" güncellemez. Eğer bir değişiklik olduysa bu değişiklik önce veri tabanında bir kontrol ile sorgulanır. Kontrolde üye listesinde "kendi eposta adresi dışında" bir eposta adresini kullanılmışsa hata verir.
Eğer veri tabanında input içinde girdiği eposta adresi yoksa işlemi başarıyla günceller.

-- Neler Denedim? --

  1. RowCount sistemini denedim.
    $kontrol = $db->prepare("SELECT * FROM uyeler WHERE uye_id =:uye_id AND uye_eposta =:uye_eposta");
    $kontrol->execute(array('uye_id'=>$uyeid, 'uye_eposta'=>$uyeeposta));
    $_kontrol = $kontrol->rowCount();

if($_kontrol > 0){ // Var

// Hata ver

}else{ // Yok

// Güncelle

}

  1. != şeklinde bir denemem oldu.
    "SELECT * FROM uyeler WHERE uye_id != '$uye_id' AND uye_eposta != '$uyeeposta'"

  2. != den önce NOT gelmesi gerekiyormuş. Onu da denedim.
    "SELECT * FROM uyeler WHERE NOT uye_id != '$uye_id' AND NOT uye_eposta != '$uyeeposta'"

  3. Ama NOT gelince != koymaya gerek yokmuş diye de okudum. Nolur nolmaz öylede denedim.
    "SELECT * FROM uyeler WHERE NOT uye_id = '$uye_id' AND NOT uye_eposta = '$uyeeposta'"

  4. != şeklinde bir işlemde çok sağlıksız sonuçlar elde edilebilirmiş. Bu yüzden NOT IN şeklinde başka bir şey öneriliyormuş. Onu da denedim.
    "SELECT * FROM uyeler WHERE uye_id NOT IN ('$uye_id') uye_eposta NOT IN ('$uyeeposta')"

  5. Belki farklı bir şey olur diye hem Query hem de Prepare ile de denedim.
    prepare("SELECT ....... "); yada query("SELECT ........ ");

  6. Bir de bunların farklı kombinasyonları.
    prepare("SELECT ....... "); + NOT IN + !=
    yada
    query("SELECT ........ "); + !=
    yada
    prepare("SELECT ....... "); NOT IN
    ....

Fakat her ne yapsam hata alıyorum.

-- Ne Hatası Alıyorum? --
Ya hep güncelliyor, yada hep hata veriyor. Düzgün çalışmıyor.

-- Nasıl Çözebiliriz? --

omerabul
1428 gün önce

bunun basit bir mantığı var..
[code]
function varmi($id,$email) {

// benim id disinda mail
$sql = $db->prepare("SELECT * FROM uyeler Where Id<>? AND email=?");
$sql->execute([$id,$email]);
return $sql->fetchColumn();

}

if(varmi($session_id, $postangelenmail)>0) {

echo "Bu mail baska kullanıcı tarafından kullanılıyor";

} else {

// güncelleme kodları buraya

}
[/code]