• 10-05-2010, 15:39:49
    #1
    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.
  • 10-05-2010, 17:22:08
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Puanı o üyeninkinden büyük olan üyeler için bir sorgulama yapılıp kayıt sayısının üstüne 1 eklenebilir.
  • 10-05-2010, 19:06:18
    #3
    sanırım üye puanlarını sayfaya yazdırıken büyük sayıdan küçük sayıya doğru yazdırabilirsin.
    Böylece en yüksek puanlı oyuncu sayfada en üst sırada yeralır.Diğerleri onun altında sırayla yazdıralabilir sanırım.
  • 11-05-2010, 02:29:34
    #4
    <%
    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
    #5
    @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
    #6
    Ü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:42
    #7
    ShekerChi adlı üyeden alıntı: mesajı görüntüle
    <%
    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
    verdiğ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.

    Evet ayrıca dediğiniz gibi bu sistem üye sayısı arttıkça sistemi yoracaktır. Farklı yöntemler bulmak gerekir..
  • 11-05-2010, 23:20:09
    #8
    Üyeliği durduruldu
    ha evet kopyalayıp aldım tekrar yazmamak için unuttum silmeyi onu
  • 12-05-2010, 13:33:20
    #9
    maniakcoder adlı üyeden alıntı: mesajı görüntüle
    @doronty37 dediğin mantık aklıma yattı bir deneyeceğim teşekkürler
    Şu şekilde bir kod işinini görecektir.

    <%
    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
    %>