Ayberk Atasay

ASP, CSS, Internet konuları üzerine paylaşımlar


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
Önceki Kayıt
Sonraki Kayıt
Yorumlar
oyuncehennemi
22 Ocak 2010, Cuma
teşekkürler,güzel açıklamışsın..
koray
4 Ekim 2009, Pazar
Peki şö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?
koray
4 Ekim 2009, Pazar
arkadaş tablosundaki eklenen id sini üyeler idsiyle nasıl eşitleyip ekleyen yada eklenen ismini göstereceğiz yardımcı olurmusunuz.
Kenan
16 Ağustos 2009, Pazar
Süper çok sağolun. İnş yapacağım hata olmadan :)
kemal öz
13 Ağustos 2009, Perşembe
Şöyle birşey var, mesala uyeler tablosuna bağlancam ama hangi sütunu id olarak kabul etcem :) Ben bunun için başka mantık geliştirdim :)
eyüp
19 Haziran 2009, Cuma
merhaba. tam bana lazım olan şey bu. nezamandır arıyodum lütfen yardım edin mail olarak bunun bi ufak scriptini atabilirmisiniz lütfen
Özgün SARI
18 Haziran 2009, Perşembe
ikinci mantık veritabanı sisteminin kullanım amacına daha uygun ama gerçek dünya kullanımında ayberkin yaptığı gibi isimleri değil kullanıcı id lerini saklarız genellikle.
Mehmet Mutlu
16 Mayıs 2009, Cumartesi
Üyelerin bulundugu satır içinde bir hücrede arkadaşları gibi,array ile döndürmeyi filan düşünüyordum ama böyle daha kaliteli bir sistem olucak mantık için teşekkür ederim.
hatice
6 Mayıs 2009, Çarşamba
hiç kod yok siteye kod koyun faydalanalım ya nolur lütfen
Mujdat Korkmaz
3 Şubat 2009, Salı
ASP'den pek fazla anlamam. Ama mantığı kavradım ileride bu tür konularla ilgili işim çıkarsa aklımın ucunda bulunduracağım bu anlatıığını. Teşekkürler.
Yorum Yaz

İsim (*)

e-Posta (*) (Yayımlanmayacak)

URL




Resmi Değiştir
Güvenlik Kodu (Yukarıda gördüğünüz karakterleri yazınız)


Copyright © 2008 ayberk.com | Bu sitenin kodlaması ve teması Ayberk Atasay tarafından hazırlanmıştır. | XHTML 1.0