• 28-09-2010, 17:56:42
    #1
    Üyelerimin olduğu bir puan tablosu var

    uye_id | puan
    1 | 250
    2 | 125
    3 | 175
    4 | 100
    5 | 275
    .
    .
    100 | 540

    şeklinde bir tablo


    Bu tabloyu limit fonksiyonu kullanarak sayfada gösterilecek kayıt sayısını veriyorum. Örneğin bir sayfada 20 kayıt...


    Ancak kayıt listeme sayfasında puanı yüksekten küçüğe doğru sıralama şeklinde geldiğinde örneğin 25 sıralamada olan kişi direkt olarak ikinci sayfayı görmesini istiyorum.

    Şuanda listele dediğimde normal olarak ilk sayfadan başlıyor ve ileri tuşuna bastığında kendisini görüyor... Kaçıncı sayfada olduğunu direkt görmesi için nasıl bir fonksiyon kullanmam gerekiyor.


    Kullandığım Puan listelem kodum;

    <table width="100%" border="0" cellpadding="3">
      <tr>
        <td width="30" bgcolor="#FF9900">&nbsp;</td>
        <td height="30" bgcolor="#FF9900"><div align="left" class="style3">Üye Adı</div></td>
        <td bgcolor="#FF9900"><div align="center" class="style3"><strong>Genel Puan</strong></div></td>
        <td bgcolor="#FF9900"><div align="center" class="style3">
          <div align="center">Kodu</div>
        </div></td>
      </tr>
    <%
    
    deste = 20
    If Request.QueryString("s") <> "" Then 
      Sayfa = CInt(Request.QueryString("s"))
    Else 
      Sayfa = 1
    End If 
    
    'Toplam hesaplama
    Set topla = baglanti.Execute("select count(uye_id) AS toplam from uyeler")
    TopKayit = topla(0)
    hesapla = CInt(topla("toplam"))
    'Toplam hesaplama bitti
    
    set SQLuye =Baglanti.Execute("Select * from uyeler order by puan desc LIMIT "& (deste*Sayfa)-(deste) & "," & deste)
    if SQLuye.eof or SQLuye.bof then
    Response.Write ""
    else
    
    for k=1 to hesapla
    if SQLuye.eof then exit for
    
    if SQLuye("uye_id") = session("uye_id") then 
    %>
     <tr bgcolor="#CC3300">
    <% else %>
     
      <tr bgcolor="#<%
    if k mod 2 then
    Response.Write "333333"
    Else
    Response.Write "666666"
    end if %>">
    <% end if %>
        <td><div align="center"><%= deste*Sayfa+k-deste %></div></td>
        <td height="25"><%
    Response.Write "<a href=""#"">"& SQLuye("uye_adi") &"</a>"
    
    %></td>
        <td><div align="center"><font color="#FFFFFF">
          <%
    Response.Write SQLuye("puan")
    %>
        </font></div></td>
        <td><div align="center">
          <%
    Response.Write SQLuye("kodu")
    %>
        </div></td>
      </tr>
      <%
    SQLuye.movenext
    next
    SQLuye.close
    set SQLuye = nothing
    end if %>
    </table>
    
    <div align="center">
    
    <%
    If CInt(TopKayit) > CInt(deste) Then 
    SayfaSayisi = CInt(TopKayit) / CInt(deste) 
    
    If InStr(1,SayfaSayisi,",",1) > 1 Then SayfaSayisi = CInt(Left(SayfaSayisi,InStr(1,SayfaSayisi,",",1))) + 1 
    
    If SayfaSayisi > 1 Then 
    Response.Write "<a class=""pagenav"" href=puanlar.asp?s=1><< İlk</a> "
    if Sayfa = 1 then
    Response.Write ""
    else
    Response.Write "<a class=""pagenav"" href=puanlar.asp?s="&Sayfa-1&">< Önceki</a> "
    end if
    
    for t=d to Sayfa-1
    if Sayfa > Sayfa-10 and t > Sayfa-10  and t > 0 then
    Response.Write " <a class=""pagenav"" href=puanlar.asp?s=" & t & "><b>" & t & "</b></a> "
    end if
    next 
    
    For d=Sayfa To Sayfa+9
    if d = CInt(Sayfa) then
    Response.Write "<span class=""pagenav""><b>" & d & "</b></span>"
    elseif d > CInt(SayfaSayisi+1) then
    Response.Write ""
    else
    Response.Write " <a class=""pagenav"" href=puanlar.asp?s=" & d & "><b>" & d & "</b></a> " 
    end if
    Next
    
    
    if Sayfa = CInt(SayfaSayisi+1) then
    Response.Write ""
    else
    Response.Write " <a class=""pagenav"" href=puanlar.asp?s="&Sayfa+1&"> Sonraki ></a> "
    Response.Write " <a class=""pagenav"" href=puanlar.asp?s="&CInt(SayfaSayisi+1)&">Son >></a>"
    end if
    
    
    End If 
    End If 
    %></div>
  • 28-09-2010, 18:21:54
    #2
    Üyeliği durduruldu
    sayfanın en üstünde üyenin id ve puanı değişkene atansın. şimdi limitsiz bi döngü yaptırcan. order by uye_puan desc ile tüm puanları listeledik. döngü içinde şu olacak.

    UYEID=session("uye_id")
    UYEPUAN=session("uye_puan")

    if not rs.eof then
    i=1
    do while not rs.eof

    if rs("uye_id")=UYEID AND rs("uye_puan")=UYEPUAN Then
    Response.write i
    response.end
    End If

    i=i+1
    rs.movenext : loop
    end if
    rs.close : set rs=nothing

    bu şekilde kaçıncı olduğunu buluruz test etmedim dene sen. sırayı bulunca da sayfa numarasını bulursun zaten

    düşünceyi ozan bağrıyanık arkadaşım belirtti bende ona göre yazdım kodları
  • 28-09-2010, 19:33:59
    #3
    set skont = baglanti.execute("select * from uyeler order by puan desc")
    UYEID=session("uid")

    if not skont.eof then
    ihh=1
    do while not skont.eof

    if skont("uid")=UYEID Then
    Response.write ihh & "kontrol"
    siram = ihh
    End If

    ihh=ihh+1
    skont.movenext : loop
    end if
    skont.close : set skont=nothing

    şeklinde yaptım buraya kadar güzel sıkıntı yok sıralamasını bulduk...

    şimdi bu sıra hangi sayfada?
  • 28-09-2010, 19:40:40
    #4
    ben şu sayfayı bulma olayını bir kağıt kalem alıp yazarak bulmaya çalışayım karnım aç kafam durdu midem acayip gurulduyo
  • 28-09-2010, 20:00:00
    #5
    tamamdır..

    Round((siram/deste) + 0.5)

    ile sayfa numarasınıda hallettim sorun kalmadı

    sıra/sayfadaki kayıt sayısı, yuvarla yukarı ile işlem tamadır
  • 28-09-2010, 22:11:34
    #6
    Üyeliği durduruldu
    aynen öyle