ASP Arkadas Listesi Olusturma Mantigi

Bugune kadar sitede genel anlamda hep kod verdim. Bu kodlar inaniyorum ve biliyorum ki bir cok okuyan takipcimin isine yariyor, kullaniyor. Fakat her zaman kod vermek dogru olmayabiliyor. Bu paylasimda size yine kod vericem fakat agirlikli olarak mantigindan bahsedecegim.

Dedigim gibi ASP veya herhangi bir dilde uyelik sistemi yaziyorsaniz olmazsa olmazlarindan biri arkadaslik mevzusudur. Arkadaslik icin kod yazarken mantigini olusturmak ve size en uygun olan sistemi secmek lazim.

Genelde kullanilan iki yontemden bahsedicem /* zaten bildigim baska bir ekleme yontemi yok (: */

1- Veritabanina Ikiserli Ekleme Yontemi
Anlatacagim yontemlerden birincisi veritabanina her kullanici ve arkadasi icin birer kez kayit girmek. Bu yontem cok saglik ve/ya cok kolay akla geliyor olabilir fakat dusununki siteniz cok tuttu. Uye sayiniz 100.00 (yuz bin) sinirini gecti. Boyle bir sitede uyeler arkadas eklediklerinde ve biz her uyenin sadece 1 arkadasi oldugunu dusunursek toplam arkadas tablomuzda 100.000 satirlik veri girisi olacaktir. Simdi bunu veritabani uzerinde nasil olusturacagimiza bakalim (istediginiz kodlama dilinde istediginiz veritabanini kullanabilirsiniz sonuc olarak butun diller farkli olabilir ama mantik ayni):

Resimde de gorundugu gibi arkadaslar isimli tablomuz var ve bu tablo icinde id, ekleyen, eklenen, onay isimli alanlarimiz var. (Normalde ben ekleyen/eklenen uyelerin id lerini yazdiririm fakat burda rahat gorulmesi acisindan bu sekilde uyguladim.) Burda ayberk isimli uye atasay isimli uyeye ekleme talebi yolladiginda ust satir ekleniyor ve onay kismi F olarak ataniyor. (burda F=False/Yanlis, T=True/Dogru anlami tasiyor. Veritabaninda bu tarz ozellikler var otomatik atayan ama ben bu sekilde kullanmayi uygun goruyorum.) Daha sonra atasay isimli uyemize giris yapinca burdaki 'F'nin yardimiyla yeni bir arkadaslik talebi oldugunu yazdiriyoruz. Bunu cekebileceginiz SQL kodu;

select * from arkadaslar where eklenen = 'atasay' and onay = 'F'

Bu kod ile atasay isimli uyemize yeni bir arkadaslik teklifinin olup olmadigi kontrolunu yapiyoruz. Bu gelen teklifi atasay isimli uye onaylarsa veritabanindaki onay alani degerini 'T' olarak degistirip ayni zamanda kendisinin de arkadasi oldugunu gosterebilmesi icin ekleyen=atasay, eklenen=ayberk, onay=T olarak yeni kayit giriyoruz. En son ayberk'in sayfasindaki arkadaslarini listeletmeye geliyor. Onun icinde kullanilacak kod;

select * from arkadaslar where ekleyen = 'ayberk' and onay = 'T'


Bu yontem bu kadar basit ve kullanisli fakat veritabanini fazla yormamak ve daha stabil kullanabilmek icin diger yonteme geciyorum..

2- Veritabanina Tekli Ekleme Yontemi
Ikinci yontem ise aslinda ayni mantik uzerinden giden sonra birazcik daha karisan bir yontem, fakat gozunuz korkmasin bu yontemde gayet basit. Baslarda yazdigim gibi bir onceki yontemde 100.000 uyelikli bir sitede sadece birer arkadasi olsa toplam 100.000 satir olusacakti. Fakat bu yontemle tam 50.000 satir tasarruf edebiliyoruz.

Resimde gorundugu gibi burda tek bir satirda iki uyenin arkadasligini dogrulamis olabiliyoruz fakat bu sefer arkadas listeleme ekranimizdaki kodlar biraz daha karmasik hal alabiliyor. Bu sefer yine ayberk isimli uye atasay isimli uyeyi ekliyor. Ardindan bu uye kabul ederse onay kismini 'T' olarak guncelliyor ve arkadasliklari baslamis oluyor. atasay isimli uyenin teklifi olup olmadigini yukaridaki kodu kullanarak (ilk yazdigim) cekebiliyoruz. Simdi ise daha karmasik gibi gorunen fakat gayet kolay bu yontemle arkadas listeleme icin gerekli SQL kodumuzu olusturuyoruz;

select * from arkadaslar where ekleyen = 'ayberk' and onay = 'T' or eklenen = 'ayberk' and onay = 'T'


Burda kullandigimiz mantik su;
Eger bir kullanici uye eklerse bunu ekleyen yardimiyla buluyoruz. Fakat bir uye sadece eklemeyebilir, diger uyeler tarafindanda eklenebilir bu yuzden or sonrasinda eklenen kismi ayberk olanlari da kontrol ettiriyoruz.

Iste bu isin mantigi karmasik gibi gorunse de gayet basit. Umarim bu konuda biraz kafanizda soru varsa veya yeni birsey ogrenmenize yardim edebilmisimdir.


  • personAyberk Atasay
  • calendar_monthFebruary 3, 2009
  • categoryASP
  • sharepaylaş
  • Eski Yorumlar:
  • Mujdat Korkmaz
  • ASP'den pek fazla anlamam. Ama mantigi kavradim ileride bu tur konularla ilgili isim cikarsa aklimin ucunda bulunduracagim bu anlatiigini. Tesekkurler.
  • 2009-02-03 00:52:50
  • hatice
  • hic kod yok siteye kod koyun faydalanalim ya nolur lutfen
  • 2009-05-06 20:20:16
  • Mehmet Mutlu
  • Uyelerin bulundugu satir icinde bir hucrede arkadaslari gibi,array ile dondurmeyi filan dusunuyordum ama boyle daha kaliteli bir sistem olucak mantik icin tesekkur ederim.
  • 2009-05-16 21:46:39
  • Ozgun SARI
  • ikinci mantik veritabani sisteminin kullanim amacina daha uygun ama gercek dunya kullaniminda ayberkin yaptigi gibi isimleri degil kullanici id lerini saklariz genellikle.
  • 2009-06-18 15:54:22
  • eyup
  • merhaba. tam bana lazim olan sey bu. nezamandir ariyodum lutfen yardim edin mail olarak bunun bi ufak scriptini atabilirmisiniz lutfen
  • 2009-06-19 00:40:04
  • kemal oz
  • Soyle birsey var, mesala uyeler tablosuna baglancam ama hangi sutunu id olarak kabul etcem :) Ben bunun icin baska mantik gelistirdim :)
  • 2009-08-13 12:54:48
  • Kenan
  • Super cok sagolun. Ins yapacagim hata olmadan :)
  • 2009-08-16 19:17:57
  • koray
  • arkadas tablosundaki eklenen id sini uyeler idsiyle nasil esitleyip ekleyen yada eklenen ismini gosterecegiz yardimci olurmusunuz.
  • 2009-10-04 14:02:56
  • koray
  • Peki soyle bir sorun daha olacak select * from arkadaslar where ekleyen = 'ayberk' and onay = 'T' or eklenen = 'ayberk' and onay = 'T' deyimiyle yaptik. verileri listelerken <%=RS("eklenen")%> mi diyecegiz yoksa <%=RS("ekleyen")%> mi? Ekleyen de koysak eklenende koysak surekli ayni veriyi listeliyor.Cozelemedim ufak bi ornek yokmu acaba?
  • 2009-10-04 16:15:55
  • oyuncehennemi
  • tesekkurler,guzel aciklamissin..
  • 2010-01-22 22:55:15
  • Murathan
  • super, emeginize saglik.
  • 2010-08-14 23:09:14
  • can
  • gulebilirsiniz ama *or* aklima gelmemisti :D cok ama cok tesekkurler
  • 2011-05-24 18:30:17
  • oyuncehennemi
  • cok iyi olmus tesekkurler.
  • 2011-06-25 01:14:10