ASP Arkadaş Listesi Oluşturma Mantığı
Bugüne kadar sitede genel anlamda hep kod verdim. Bu kodlar inanıyorum ve biliyorum ki bir çok okuyan takipçimin işine yarıyor, kullanıyor. Fakat her zaman kod vermek doğru olmayabiliyor. Bu paylaşımda size yine kod vericem fakat ağırlıklı olarak mantığından bahsedeceğim.
Dediğim gibi ASP veya herhangi bir dilde üyelik sistemi yazıyorsanız olmazsa olmazlarından biri arkadaşlık mevzusudur. Arkadaşlık için kod yazarken mantığını oluşturmak ve size en uygun olan sistemi seçmek lazım.
Genelde kullanılan iki yöntemden bahsedicem ' zaten bildiğim başka bir ekleme yöntemi yok (:
1- Veritabanına İkişerli Ekleme Yöntemi
Anlatacağım yöntemlerden birincisi veritabanına her kullanıcı ve arkadaşı için birer kez kayıt girmek. Bu yöntem çok sağlık ve/ya çok kolay akla geliyor olabilir fakat düşününki siteniz çok tuttu. Üye sayınız 100.00 (yüz bin) sınırını geçti. Böyle bir sitede üyeler arkadaş eklediklerinde ve biz her üyenin sadece 1 arkadaşı olduğunu düşünürsek toplam arkadaş tablomuzda 100.000 satırlık veri girişi olacaktır. Şimdi bunu veritabanı üzerinde nasıl oluşturacağımıza bakalım (istediğiniz kodlama dilinde istediğiniz veritabanını kullanabilirsiniz sonuç olarak bütün diller farklı olabilir ama mantık aynı):
Resimde de göründüğü gibi arkadaşlar isimli tablomuz var ve bu tablo içinde id, ekleyen, eklenen, onay isimli alanlarımız var. (Normalde ben ekleyen/eklenen üyelerin id lerini yazdırırım fakat burda rahat görülmesi açısından bu şekilde uyguladım.) Burda ayberk isimli üye atasay isimli üyeye ekleme talebi yolladığında üst satır ekleniyor ve onay kısmı F olarak atanıyor. (burda F=False/Yanlış, T=True/Doğru anlamı taşıyor. Veritabanında bu tarz özellikler var otomatik atayan ama ben bu şekilde kullanmayı uygun görüyorum.) Daha sonra atasay isimli üyemize giriş yapınca burdaki 'F'nin yardımıyla yeni bir arkadaşlık talebi olduğunu yazdırıyoruz. Bunu çekebileceğiniz SQL kodu;
select * from arkadaslar where eklenen = 'atasay' and onay = 'F'
Bu kod ile
atasay isimli üyemize yeni bir arkadaşlık teklifinin olup olmadığı kontrolünü yapıyoruz. Bu gelen teklifi
atasay isimli üye onaylarsa veritabanındaki onay alanı değerini 'T' olarak değiştirip aynı zamanda kendisinin de arkadaşı olduğunu gösterebilmesi için
ekleyen=atasay, eklenen=ayberk, onay=T olarak yeni kayıt giriyoruz. En son
ayberk'in sayfasındaki arkadaşlarını listeletmeye geliyor. Onun içinde kullanılacak kod;
select * from arkadaslar where ekleyen = 'ayberk' and onay = 'T'
Bu yöntem bu kadar basit ve kullanışlı fakat veritabanını fazla yormamak ve daha stabil kullanabilmek için diğer yönteme geçiyorum..
2- Veritabanına Tekli Ekleme Yöntemi
İkinci yöntem ise aslında aynı mantık üzerinden giden sonra birazcık daha karışan bir yöntem, fakat gözünüz korkmasın bu yöntemde gayet basit. Başlarda yazdığım gibi bir önceki yöntemde 100.000 üyelikli bir sitede sadece birer arkadaşı olsa toplam 100.000 satır oluşacaktı. Fakat bu yöntemle tam 50.000 satır tasarruf edebiliyoruz.
Resimde göründüğü gibi burda tek bir satırda iki üyenin arkadaşlığını doğrulamış olabiliyoruz fakat bu sefer arkadaş listeleme ekranımızdaki kodlar biraz daha karmaşık hal alabiliyor. Bu sefer yine
ayberk isimli üye
atasay isimli üyeyi ekliyor. Ardından bu üye kabul ederse onay kısmını 'T' olarak güncelliyor ve arkadaşlıkları başlamış oluyor.
atasay isimli üyenin teklifi olup olmadığını yukarıdaki kodu kullanarak (ilk yazdığım) çekebiliyoruz. Şimdi ise daha karmaşık gibi görünen fakat gayet kolay bu yöntemle arkadaş listeleme için gerekli SQL kodumuzu oluşturuyoruz;
select * from arkadaslar where ekleyen = 'ayberk' and onay = 'T' or eklenen = 'ayberk' and onay = 'T'
Burda kullandığımız mantık şu;
Eğer bir kullanıcı üye eklerse bunu ekleyen yardımıyla buluyoruz. Fakat bir üye sadece eklemeyebilir, diğer üyeler tarafındanda eklenebilir bu yüzden or sonrasında eklenen kısmı
ayberk olanları da kontrol ettiriyoruz.
İşte bu işin mantığı karmaşık gibi görünse de gayet basit. Umarım bu konuda biraz kafanızda soru varsa veya yeni birşey öğrenmenize yardım edebilmişimdir.
ASPAyberk Atasay3 Şubat 2009, SalıEkle Bunu
koray
4 Ekim 2009, PazarPeki şöyle bir sorun daha olacak
select * from arkadaslar where ekleyen = 'ayberk' and onay = 'T' or eklenen = 'ayberk' and onay = 'T'
deyimiyle yaptık. verileri listelerken <%=RS("eklenen")%> mi diyeceğiz yoksa <%=RS("ekleyen")%> mi? Ekleyen de koysak eklenende koysak sürekli aynı veriyi listeliyor.Çözelemedim ufak bi örnek yokmu acaba?