Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
MySQL - üyelik bölümüm hakkında
#1
iyi akşamlar,

programımda üyelik bölümünde aynı kullanıcı adı olmasını önlemek için aşağıdaki kodu kullanıyorum fakat kontrolü sağlayamıyorum ve aynı kullanıcı adında bile hesap oluşturuluyor;

acaba nerde yanlış yapıyorum çözemedim de  Dodgy

UniConnection1.Connected := true ;
UniQuery1.Active := true ;


UniQuery1.Refresh ;
UniQuery1.Close ;
UniQuery1.ParamByName('kullaniciadi').Value := edit1.Text ;
UniQuery1.Open ;

if UniQuery1.RecordCount <> 0 then
begin
ShowMessage('Bu kullanıcı adı zaten mevcut');
end else
UniQuery1.Append; // yeni bir kayıt ekle
UniQuery1.FieldByName('kullaniciadi').AsString:=edit1.Text; // kıyasla
UniQuery1.FieldByName('sifre').AsString:=edit2.Text; // kıyasla
UniQuery1.post;  // veritabanına yaz

ShowMessage('Üyelik Oluşturuldu');

Edit1.Text := '';
Edit2.Text := '';
Edit3.Text := '';

UniConnection1.Connected := false ;
UniQuery1.Active := false ;

üyeol.Close ;
girisekranı.Show ;
Cevapla
#2
if UniQuery1.RecordCount <> 0 then
begin
ShowMessage('Bu kullanıcı adı zaten mevcut');
end else
begin  // burasını ekledim
  UniQuery1.Append; // yeni bir kayıt ekle
  UniQuery1.FieldByName('kullaniciadi').AsString:=edit1.Text; // kıyasla
  UniQuery1.FieldByName('sifre').AsString:=edit2.Text; // kıyasla
  UniQuery1.post;  // veritabanına yaz


  ShowMessage('Üyelik Oluşturuldu');

  Edit1.Text := '';
  Edit2.Text := '';
  Edit3.Text := '';
end; // burasını ekledim
UniConnection1.Connected := false ;
UniQuery1.Active := false ;

üyeol.Close ;
girisekranı.Show ;
Cevapla
#3
(16-10-2018, Saat: 17:51)Mr.Developer Adlı Kullanıcıdan Alıntı: iyi akşamlar,

programımda üyelik bölümünde aynı kullanıcı adı olmasını önlemek için aşağıdaki kodu kullanıyorum fakat kontrolü sağlayamıyorum ve aynı kullanıcı adında bile hesap oluşturuluyor;

acaba nerde yanlış yapıyorum çözemedim de  Dodgy

UniConnection1.Connected := true ;
UniQuery1.Active := true ;


UniQuery1.Refresh ;
UniQuery1.Close ;
UniQuery1.ParamByName('kullaniciadi').Value := edit1.Text ;
UniQuery1.Open ;

if UniQuery1.RecordCount <> 0 then
begin
ShowMessage('Bu kullanıcı adı zaten mevcut');
end else
UniQuery1.Append; // yeni bir kayıt ekle
UniQuery1.FieldByName('kullaniciadi').AsString:=edit1.Text; // kıyasla
UniQuery1.FieldByName('sifre').AsString:=edit2.Text; // kıyasla
UniQuery1.post;  // veritabanına yaz

ShowMessage('Üyelik Oluşturuldu');

Edit1.Text := '';
Edit2.Text := '';
Edit3.Text := '';

UniConnection1.Connected := false ;
UniQuery1.Active := false ;

üyeol.Close ;
girisekranı.Show ;

Alıntı:
end else
UniQuery1.Append; // yeni bir kayıt ekle
UniQuery1.FieldByName('kullaniciadi').AsString:=edit1.Text; // kıyasla
UniQuery1.FieldByName('sifre').AsString:=edit2.Text; // kıyasla
UniQuery1.post;  // veritabanına yaz
burada "end else" kismindan sonrasini begin end icerisine almayi unutmussunuz.
Cevapla
#4
(16-10-2018, Saat: 17:55)meko Adlı Kullanıcıdan Alıntı:
if UniQuery1.RecordCount <> 0 then
begin
ShowMessage('Bu kullanıcı adı zaten mevcut');
end else
begin  // burasını ekledim
  UniQuery1.Append; // yeni bir kayıt ekle
  UniQuery1.FieldByName('kullaniciadi').AsString:=edit1.Text; // kıyasla
  UniQuery1.FieldByName('sifre').AsString:=edit2.Text; // kıyasla
  UniQuery1.post;  // veritabanına yaz


  ShowMessage('Üyelik Oluşturuldu');

  Edit1.Text := '';
  Edit2.Text := '';
  Edit3.Text := '';
end; // burasını ekledim
UniConnection1.Connected := false ;
UniQuery1.Active := false ;

üyeol.Close ;
girisekranı.Show ;

almama rağmen değişen durum olmadı 

if UniQuery1.RecordCount <> 0 then
begin
ShowMessage('Bu kullanıcı adı zaten mevcut');
end else

bu kısmı hiçbir şekilde gerçekleştirmiyor  Confused 

kayıt ekleme böülümü çalışıyor fakat bahsettiğim yer mağlesef.

(16-10-2018, Saat: 17:55)klavye Adlı Kullanıcıdan Alıntı:
(16-10-2018, Saat: 17:51)Mr.Developer Adlı Kullanıcıdan Alıntı: iyi akşamlar,

programımda üyelik bölümünde aynı kullanıcı adı olmasını önlemek için aşağıdaki kodu kullanıyorum fakat kontrolü sağlayamıyorum ve aynı kullanıcı adında bile hesap oluşturuluyor;

acaba nerde yanlış yapıyorum çözemedim de  Dodgy

UniConnection1.Connected := true ;
UniQuery1.Active := true ;


UniQuery1.Refresh ;
UniQuery1.Close ;
UniQuery1.ParamByName('kullaniciadi').Value := edit1.Text ;
UniQuery1.Open ;

if UniQuery1.RecordCount <> 0 then
begin
ShowMessage('Bu kullanıcı adı zaten mevcut');
end else
UniQuery1.Append; // yeni bir kayıt ekle
UniQuery1.FieldByName('kullaniciadi').AsString:=edit1.Text; // kıyasla
UniQuery1.FieldByName('sifre').AsString:=edit2.Text; // kıyasla
UniQuery1.post;  // veritabanına yaz

ShowMessage('Üyelik Oluşturuldu');

Edit1.Text := '';
Edit2.Text := '';
Edit3.Text := '';

UniConnection1.Connected := false ;
UniQuery1.Active := false ;

üyeol.Close ;
girisekranı.Show ;

Alıntı:
end else
UniQuery1.Append; // yeni bir kayıt ekle
UniQuery1.FieldByName('kullaniciadi').AsString:=edit1.Text; // kıyasla
UniQuery1.FieldByName('sifre').AsString:=edit2.Text; // kıyasla
UniQuery1.post;  // veritabanına yaz
burada "end else" kismindan sonrasini begin end icerisine almayi unutmussunuz.


mağlesef yeterli değil aynı sonuç
Cevapla
#5
Öncelike bu iş için tek Query kullanmanız daha sağlıklı olur. Ayrıca primary key ve unique index kavramlarını bir inceleyin. Kullanıcı tablonuzda k.adı alanında bir unique index muhakkak bulunmalı (id adında bir alanı zaten primary key olarak kullandığınızı umuyorum Wink )
Cevapla
#6
(16-10-2018, Saat: 18:05)edo Adlı Kullanıcıdan Alıntı: Öncelike bu iş için tek Query kullanmanız daha sağlıklı olur. Ayrıca primary key ve unique index kavramlarını bir inceleyin. Kullanıcı tablonuzda k.adı alanında bir unique index muhakkak bulunmalı (id adında bir alanı zaten primary key olarak kullandığınızı umuyorum Wink )

anladım hocam mesele kod değilmiş mysql'den yapacakmışım  Smile
Cevapla
#7
Merak ettiğim bir konu var UniQuery1 yi neden önce Refresh yapıp sonra Close yaptın, ve şifreyi neden olduğu gibi dbde tutuyorsun ya db'yi birisi kaparsa gitti bütün şifreler açıkta...
WWW
Cevapla
#8
(16-10-2018, Saat: 18:33)yhackup Adlı Kullanıcıdan Alıntı: Merak ettiğim bir konu var UniQuery1 yi neden önce Refresh yapıp sonra Close yaptın, ve şifreyi neden olduğu gibi dbde tutuyorsun ya db'yi birisi kaparsa gitti bütün şifreler açıkta...

aslında onu, kodu buraya eklerken bende düşündüm neden eklemişim diye  Smile sonra dedimki " boşver kalsın "  Big Grin

şimdilik sadece test aşamasındayım ve şuanlık çok önemi yok kullanıcı adı ve şifrenin.

mysql server işini hallettiğimde ( ki halen free olanlarla geçiniyorum) şifreleri md5 olarak tutarım en azından ben de bilemem çalanda  Shy
Cevapla
#9
Hocam bu arada,
Query nesnesi ile insert append vs gibi işlemler yapmak yerine Insert Into ile Direk SQL kodu göndermeniz daha sağlıklı olacaktır.
Daha önceden aynı kullanıcı adı varmı yokmu yu ise o tabloya select çekip Recordcount<1 ile kontrol ederseniz daha hızlı sonuç alırsınız
// Bilgi paylaştıkça çoğalır.. 

Cevapla
#10
(16-10-2018, Saat: 20:56)mcuyan Adlı Kullanıcıdan Alıntı: Hocam bu arada,
Query nesnesi ile insert append vs gibi işlemler yapmak yerine Insert Into ile Direk SQL kodu göndermeniz daha sağlıklı olacaktır.
Daha önceden aynı kullanıcı adı varmı yokmu yu ise o tabloya select çekip Recordcount<1 ile kontrol ederseniz daha hızlı sonuç alırsınız

aslında bu birazda alışkanlık meselesi gibi ve SQL kodlarına çok hakim değilim. öneriniz için teşekkür ederim.

bir deneyeyim hocam fırsat bulunca dediğinizi.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Orange Ui Page Control Hakkında nurah 3 563 30-10-2025, Saat: 09:17
Son Yorum: RAD Coder
  iOS Bildirim hakkında barissagir 19 3.120 03-02-2025, Saat: 16:27
Son Yorum: barissagir
  Duns Numarası Hakkında Yardım glagher 5 1.570 16-08-2024, Saat: 16:48
Son Yorum: glagher
  Xcode Üyeliği hakkında barissagir 15 4.993 07-02-2024, Saat: 16:26
Son Yorum: barissagir
  Andorid Font Hakkında barissagir 2 1.000 20-11-2023, Saat: 09:05
Son Yorum: RAD Coder



Konuyu Okuyanlar: