Merhaba,
Database de üyelerin topladıkları puanları saklıyorum. Bu puanlar sürekli güncelleniyor. Üye sisteme girdiğinde yada kendinin kaçıncı sırada olduğunu öğrenmek isterse bunu nasıl yaparız. Yani üyenin puanlara göre kaçıncı olduğunu nasıl hallederiz?
Bilgisi olan ya da fikri olan varsa paylaşırsa sevinirim.
İyi çalışmalar.
Üyenin Puana Göre Kaçıncı Olduğu
9
●877
- 10-05-2010, 15:39:49
- 11-05-2010, 02:29:34
<% Set rs = Baglanti.Execute("Select TOP 5 * from uyeler order by giris DESC") Do While Not rs.Eof %> <%=rs("kullaniciadi")%> <% rs.MoveNext Loop rs.Close : Set rs = Nothing %>kalın olarak yazdığım kısımlar sırasıyla
Baglanti (Veritabanı bağlantı tanımı)
TOP 5 (veri sayısı)
uyeler (tablo adı)
giris (puanların toplandığı tablo)
eğer puanlamayı düşündüğüm gibi kaydettiyseniz bu kod işinizi görecektir. - 11-05-2010, 17:06:43@doronty37 dediğin mantık aklıma yattı bir deneyeceğim teşekkürler
@dj_nuz ve @LineBilisim siz galiba ilk 10 ilk 5 sıralamasından ya da puanı yüksekten küçüğe sıralamayı söylemişsiniz ama onları yapabiliyorum zaten. Benim istediğim üye sisteme giriş yaptığında direk kaçıncı olabildiğini görmeli. Mesela ben sisteme girdim orda 597. sıradasınız falan diyecek. - 11-05-2010, 19:14:36Üyeliği durduruldu
<% GirisYapanKulAdi=Session("kullaniciadi") Set rs = Baglanti.Execute("Select TOP 5 * from uyeler order by puan DESC") i=1 Do While Not rs.Eof SiralananKullaniciAdi=rs("kullaniciadi") If SiralananKullaniciAdi=GirisYapanKulAdi Then response.write i&". sıradasınız" End If i=i+1 rs.MoveNext Loop rs.Close : Set rs = Nothing %>test etmedim ama çalışır.
kullancıcıları puana göre listeledim ve her birine i değişkenine bağlı sıra numarası verdim. sıralanan kullanıcıadlarını kontrol ettim, oturum açanh kullanıcı adıyla aynı ise sıra numarasını gösterdim.
Not: Eğer sistemde çok fazla üye var ise bunu yapmak sakıncalı daha hızlı çalışan alternatif bi yol bulmak gerek, aksi taktirde sayfanın açılışı yavaşlar çünkü tüm kullanıcılar listeleniyor - 11-05-2010, 23:17:42verdiğiniz kod 5 üye arasından arama yapıyor zaten.. puanı en yüksek olan 5 kişi arasında ise çalışacaktır. 6. kişi ise göstermeyecektir.ShekerChi adlı üyeden alıntı: mesajı görüntüle
Evet ayrıca dediğiniz gibi bu sistem üye sayısı arttıkça sistemi yoracaktır. Farklı yöntemler bulmak gerekir.. - 12-05-2010, 13:33:20Şu şekilde bir kod işinini görecektir.maniakcoder adlı üyeden alıntı: mesajı görüntüle
<%
uye_puani = 15 'Bunu kendi kayıt setinden alırsınız
rs.Open "SELECT COUNT(id) FROM uyeler WHERE puan > "& uye_puani &"", baglanti, 1, 3
uye_sayisi = CInt(rs(0))
rs.Close
'Üyenin kaçıncı sırada olduğu
sira = uye_sayisi + 1
%>