ASP İLE SAYFALAMA VE SIRALAMA
Asp ile sayfalamayı asp ile uğraşanların bir kısmı bilir.Ben ise bu yazımda sıralama ile birlikte 2 şeyden daha bahsedeceğim
1-Özellikle alışveriş sitelerinde gördüğünüz fiyata göre sırala,adete göre sırala…vs.
2-Kayıtlarınızı sıraladınız ve 5. sayfadasınız bir işlem yaptınız ve işlemden sonra ilk sayfaya döndü tekrar.Bu problemi Oyunsiteleri.org da admin panelinde yaşadığımdan sizlerlede paylaşmak istedim.Burada işlemden sonra kaldığımız sayfaya dönmeyi de anlatacağım.
Şimdi planladığım şey şu…Bir veritabanı oluşturacağım ve içinde linkler olacak.Bu linklerin hitleri ve onay durumları olacak.Bende bu linkleri sayfalara böleceğim ve onayla/onay kaldır ve sil gibi işlemler yapacağım.Ayrıca hite göre sıralama,onay duruma göre sıralama,site adına göre sıralama yapacağım.
Öncelikle veritabanımı şu şekilde tasarlıyorum.Veri tabanımın ve tablomun adı “siteler”.
Sanırım 10 tane kayıt yeterli ben zaten kayıtları deneme amaçlı olduğu için 3’erli sayfalara böleceğim böylelikle toplam 4 sayfa olacak.
Artık asp kodlarımıza geçelim…
Kodları bir defada mı yazayım yoksa aşamalı olarak vereyim gibi bir kararsızlık yaşadım ve genelde kendim bir şeyleri denerken yaptığım basitten karmaşığa yöntemini uygulayacağım ve her defasında kodların tamamını tekrar yazacağım.
Bu aşamada veritabanımızdan aldığımız verileri bir tabloya yazdıralım sadece.
<% Dim adoCon Set adoCon=Server.CreateObject("ADODB.Connection") adoCon.open "Provider=Microsoft.JET.OLEDB.4.0; Data Source="&Server.MapPath("siteler.mdb") Set rs=Server.createobject("ADODB.Recordset") rs.open "select * from siteler",adoCon,1,3 do while not rs.eof %> <% rs.movenext loop %>
Site | Hit | Onay Durumu | Sil |
---|---|---|---|
“><%=rs(“SiteAdi”)%> | <%=rs(“hit”)%> | <%=rs(“Onay”)%> | Sil |
<% rs.close adoCon.close %>
İşte şöyle bir görüntü elde ederiz
Şimdi bunları 3’erli sayfalara böleceğim.Sayfa numarasını url’den Request.QueryString(“”) ile alacağım.
Ve recordset’in bi kaç komutundan kısaca bahsedeyim sonra sayfalama kodunu vereceğim.
Rs.PageSize=3 ‘Böyle bir kullanım rs’nin bir sayfadaki kayıt sayısını belirtir.
Rs.AbsolutePage=2 ‘Tamam 3’erli sayfalara böldük peki kaçıncı sayfadayız.Bunuda bu komut belirler burada 2. sayfa
rs.PageCount ‘Hani 3’erli sayfalara böldük ya peki kaç sayfa oldu bunuda rs.PageCount ile hesaplayacağız.
Neyse koda geçelim….
<% Dim adoCon Set adoCon=Server.CreateObject("ADODB.Connection") adoCon.open "Provider=Microsoft.JET.OLEDB.4.0; Data Source="&Server.MapPath("siteler.mdb") Set rs=Server.createobject("ADODB.Recordset") rs.open "select * from siteler",adoCon,1,3 rs.Pagesize=3 sayfa=Request.QueryString("sayfa") if sayfa="" then sayfa=1 rs.AbsolutePage=sayfa j=0 do while not rs.eof and j <% j=j+1 rs.movenext loop %>
Site | Hit | Onay Durumu | Sil |
---|---|---|---|
“><%=rs(“SiteAdi”)%> | <%=rs(“hit”)%> | <%=rs(“Onay”)%> | Sil |
<% rs.close adoCon.close %>
Başardık işte sayfamızda sadece istediğimiz sayıda kayıt gösteriliyor.Peki diğer sayfalara nasıl geçeceğiz şimdi onu yazalım.
Ama kısaca ne yaptım bahsedeyim. rs.Pagesize ile sayfadaki kayıt sayısını belirledim ve rs.absolutepage ile aktif sayfayı belirttim. j adında bir değişkenle de döngünün sadece rs.pagesize kadar dönmesini sağladım.
Hadi sayfalamaya geçelim
<% Dim adoCon Set adoCon=Server.CreateObject("ADODB.Connection") adoCon.open "Provider=Microsoft.JET.OLEDB.4.0; Data Source="&Server.MapPath("siteler.mdb") Set rs=Server.createobject("ADODB.Recordset") rs.open "select * from siteler",adoCon,1,3 rs.Pagesize=3 sayfa=Request.QueryString("sayfa") if sayfa="" then sayfa=1 rs.AbsolutePage=sayfa j=0 do while not rs.eof and j <% j=j+1 rs.movenext loop %>
Site | Hit | Onay Durumu | Sil |
---|---|---|---|
“><%=rs(“SiteAdi”)%> | <%=rs(“hit”)%> | <%=rs(“Onay”)%> | Sil |
<% for i=1 to rs.Pagecount if i=cInt(sayfa) then Response.write “[“&i&”] |” else Response.Write ““&i&” |” end if next %> |
<% rs.close adoCon.close %>
Şimdi sayfalar arası geçişte çalışıyor….Artık sıralama kısmına geçebiliriz.Burada 3. sayfada 1 kaydı sileceğim ve silme işleminden sonra tekrar 3. sayfaya dönmesini sağlayacağım.
<% sirala="onay" if Request.QueryString("sirala")<>"" then sirala=Request.QueryString("sirala") Dim adoCon Set adoCon=Server.CreateObject("ADODB.Connection") adoCon.open "Provider=Microsoft.JET.OLEDB.4.0; Data Source="&Server.MapPath("siteler.mdb") if Request.QueryString("sil")<>"" then adoCon.execute("delete from siteler where SiteID="&Request.QueryString("sil")) end if Set rs=Server.createobject("ADODB.Recordset") rs.open "select * from siteler order by "&sirala&" desc",adoCon,1,3 rs.Pagesize=3 sayfa=Request.QueryString("sayfa") if sayfa="" then sayfa=1 rs.AbsolutePage=sayfa j=0 do while not rs.eof and j <% j=j+1 rs.movenext loop %>
Site | Hit | Onay Durumu | Sil |
---|---|---|---|
“><%=rs(“SiteAdi”)%> | <%=rs(“hit”)%> | <%=rs(“Onay”)%> | &sirala=<%=sirala%>&sayfa=<%=sayfa%>”>Sil |
<% for i=1 to rs.Pagecount if i=cInt(sayfa) then Response.write “[“&i&”] |” else Response.Write ““&i&” |” end if next %> |
<% rs.close adoCon.close %>
İşte final kodu böyle oldu
Hit linkine tıkladığımda siteleri hite göre sıraladı.
Hitlere göre sıralı iken 3. sayfaya geçtim…
Ajdar isimli site için sil linkine tıkladım ve silmeden sonra tekrar 3. sayfadan devam etti…
Alıntıdır ( Yılmaz YIKILMAZ – 2007 )
Not:Klasöre yazma izni vermeyi unutmayınız…Silme işlemi için gerekecektir…
Bir yanıt yazın