İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

Asp ile sayfalama ve sıralama

forumselcuk

0
İyinet Üyesi
Katılım
26 Şubat 2006
Mesajlar
713
Reaction score
1
Konum
Selçuk Üniversi
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 www.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".
http://img524.imageshack.us/img524/5425/20071116225122uj8.png
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.
Kod:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1254">
<title>ASP ile sıralama ve sayfalama</title>
</head>
<body>
<table style="border:1px solid #c0c0c0;border-collapse:collapse;font-family:Tahoma;font-size:10pt;background-color:#f9f9f9" cellpadding="2" rules="all">
<tr><th>Site</th><th>Hit</th><th>Onay Durumu</th><th>Sil</th></tr>
<%
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
%>
<tr>
<td><a href="<%=rs("URL")%>"><%=rs("SiteAdi")%></a></td>
<td><%=rs("hit")%></td>
<td><%=rs("Onay")%></td>
<td>Sil</td>
</tr>
<%
rs.movenext
loop
%>
</table>
<%
rs.close
adoCon.close
%>
</body>
</html>

İşte şöyle bir görüntü elde ederiz
20071116230548sd7.png
Ş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....
Kod:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1254">
<title>ASP ile sıralama ve sayfalama</title>
</head>
<body>
<table style="border:1px solid #c0c0c0;border-collapse:collapse;font-family:Tahoma;font-size:10pt;background-color:#f9f9f9" cellpadding="2" rules="all">
<tr><th>Site</th><th>Hit</th><th>Onay Durumu</th><th>Sil</th></tr>
<%
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<rs.Pagesize
%>
<tr>
<td><a href="<%=rs("URL")%>"><%=rs("SiteAdi")%></a></td>
<td><%=rs("hit")%></td>
<td><%=rs("Onay")%></td>
<td>Sil</td>
</tr>
<%
j=j+1
rs.movenext
loop
%>
</table>
<%
rs.close
adoCon.close
%>
</body>
</html>

20071116231511xg8.png
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
Kod:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1254">
<title>ASP ile sıralama ve sayfalama</title>
</head>
<body>
<table style="border:1px solid #c0c0c0;border-collapse:collapse;font-family:Tahoma;font-size:10pt;background-color:#f9f9f9" cellpadding="2" rules="all">
<tr><th>Site</th><th>Hit</th><th>Onay Durumu</th><th>Sil</th></tr>
<%
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<rs.Pagesize
%>
<tr>
<td><a href="<%=rs("URL")%>"><%=rs("SiteAdi")%></a></td>
<td><%=rs("hit")%></td>
<td><%=rs("Onay")%></td>
<td>Sil</td>
</tr>
<%
j=j+1
rs.movenext
loop

%>
<tr><td colspan="4">
<%
for i=1 to rs.Pagecount
if i=cInt(sayfa) then
Response.write "["&i&"] |"
else
Response.Write "<a href=?sayfa="&i&">"&i&"</a> |"
end if
next

%>
</td>
</tr>
</table>
<%
rs.close
adoCon.close
%>
</body>
</html>

20071116232348tr9.png
Ş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.
Kod:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1254">
<title>ASP ile sıralama ve sayfalama</title>
</head>
<body>
<table style="border:1px solid #c0c0c0;border-collapse:collapse;font-family:Tahoma;font-size:10pt;background-color:#f9f9f9" cellpadding="2" rules="all">
<tr>
<th><a href="?sirala=SiteAdi">Site</a></th>
<th><a href="?sirala=hit">Hit</a></th>
<th><a href="?sirala=onay">Onay Durumu</a></th>
<th>Sil</th></tr>
<%
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<rs.Pagesize
%>
<tr>
<td><a href="<%=rs("URL")%>"><%=rs("SiteAdi")%></a></td>
<td><%=rs("hit")%></td>
<td><%=rs("Onay")%></td>
<td><a href="?sil=<%=rs("SiteID")%>&sirala=<%=sirala%>&sayfa=<%=sayfa%>">Sil</a></td>
</tr>
<%
j=j+1
rs.movenext
loop

%>
<tr><td colspan="4">
<%
for i=1 to rs.Pagecount
if i=cInt(sayfa) then
Response.write "["&i&"] |"
else
Response.Write "<a href=?sirala="&sirala&"&sayfa="&i&">"&i&"</a> |"
end if
next

%>
</td>
</tr>
</table>
<%
rs.close
adoCon.close
%>
</body>
</html>
İşte final kodu böyle oldu
http://img263.imageshack.us/img263/4457/20071116233952mi3.png Hit linkine tıkladığımda siteleri hite göre sıraladı.
http://img339.imageshack.us/img339/5253/20071116234019zf3.png Hitlere göre sıralı iken 3. sayfaya geçtim...
http://img401.imageshack.us/img401/6278/20071116234037sx7.png Ajdar isimli site için sil linkine tıkladım ve silmeden sonra tekrar 3. sayfadan devam etti...
Yılmaz YIKILMAZ - 2007
Burada biter.... Görüşleriniz ve sorularınız için [email protected] adresinden bana mail atabilirsiniz.
Anlattıklarımın kaynak asp dosyası,veritabanı ve resimleri zipli halde almak için şu adresten indirininiz.
http://rapidshare.com/files/70309345/asp_ile_sayfalama_ve_siralama.rar
Not:Klasöre yazma izni vermeyi unutmayınız...Silme işlemi için gerekecektir...
 

supper.clup

0
İyinet Üyesi
Katılım
30 Ekim 2007
Mesajlar
0
Reaction score
0
yararlı bir bilgi fakat querystring ler , recordset'i oluştururken sql sorgulamaları daha detaylı anlatabilirsin...mesela hit > "&forumdan-gelen-hit&" falan filan...ve bunları sitelerde yayınlatıp bilgilerimizi geliştirtebilirsin...

ellerine sağlık hocam saolasın =)
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Backlink ve Tanıtım Yazısı için iletişime geçmek için Skype Adresimiz: .cid.1580508955483fe5

Üst