.ASP de sayfalama işlemi kullandığın veritabanına göre değişir ;
Eğer Access yada MSSQL kullanıyorsan sayfalama işlemi aynıdır , Mysql veritabanı kullanıyorsan sayfalama işleminden önce yapılması gerek başka işlemlerde vardır Örnekleme yaparak anlatalım .
1 - MYSQL veritabanında .asp sayfalama işlemi <%
Dim adoCon
Dim adoQuery
'Mysql için Veritabanı bağlantı Nesnesi
adoQuery= "DRIVER={MySQL ODBC 3.51 Driver}; Server=localhost; Port=3306; UID=KullaniciAdi; pwd=Parolasi; db=VeritabaniAdi;"
Set adoCon = Server.CreateObject("ADODB.Connection")
adoCon.Open (adoQuery)
'Şimdi işimize lazım olan Tabloyu açalım
'Burada lazım olan tabloda ne kadar veri olduğunu bulacağız
'Bu sayfalamada işimize yarayacak
Set KacVeri = adoCon.Execute ("SELECT Count(idno) FROM tablonunadi;")
ToplamVeriAdedi = KacVeri(0) 'Veri sayısını aldık
'Where yan tümcesini kullanarak ta
'işimize lazım olanlar için toplam sayı alabiliriz
'Şimdi yine lazım olan tabloya bağlanalım ve sayfalamaya için işlem yapalım
'Bağlanmadan önce Sayfalamada kullanacağımız değişkenleri atayalım
GelenSayfa = Request.QueryString("page") 'page requestinden sayfa numarası
If Cint(GelenSayfa) <> "" Then 'Yani page request i boş değilse
GecerliSayfamiz = GelenSayfa
Else
GecerliSayfamiz = 1 'Eğer page request i boş ise geçerli sayfa 1 oldu
End If
BirSayfadaVeriAdedi = 20 'Her sayfada 20 tane veri göstereceğiz
'Bu kısmı sayfalamada oluşan bir hata için eklemiştim
SayfalamaSayisi=Cint(ToplamVeriAdedi) / Cint(BirSayfadaVeriAdedi)
If SayfalamaSayisi Mod 2 = 0 Then
SayfaSayisiIcin=SayfalamaSayisi
Else
SayfaSayisiIcin = Cint(SayfalamaSayisi) + 1
End if
'Gerekli oluyor :D
MysqlIcinSayfalama = "&(BirSayfadaVeriAdedi * GecerliSayfamiz )-(BirSayfadaVeriAdedi ) & "," & BirSayfadaVeriAdedi & "
'MysqlIcinSayfalama değişkeninde şunu yaptık
'Mysql de sayfalama işlemi "LIMIT" ile yapıldığı için ;
'Diyelim GecerliSayfamiz = 1 di bunu BirSayfadaVeriAdedi ile yani 20 ile
'Çarptık Sonra yine BirSayfadaVeriAdedi nden yani 20 den çıkardık sonuç = 0 oldu
' Böylece LIMIT = 0,20 yaptı
'Eğer GecerliSayfamiz = 2 olsaydı bu sefer 20,20 olacaktı
'Nedir bu yani 1. kayıttan başla 20 tane göster,
'Nedir 20. kayıttan başla ve 20 tane veri göster demektir
'Sayfalama için değişkenler tamamdır
'Şimdi sayfalama işlemine geçebiliriz
Set Rs = adoCon.Execute ("SELECT * FROM tablonunadi ORDER BY idno DESC LIMIT " & MysqlIcinSayfalama & " ;")
'Burada dikket edeciğiz husus Kayıt sayısını aldığımız tablo ile
'verileri göstereceğimiz tablonu adının aynı olması ve "WHERE" yan tümcesi gibi
'yardımcı sorgular kullanırsak iki sorgulamadada aynısını kullanmamız lazım
Do While Not Rs.EOF
Response.Write (Rs("Sutunadi"))
Response.Write ("<br>")
Response.Write (Rs("DigerSutun"))
Response.Write("<br>")
Rs.Movenext
Loop
'Do Loop döngüsüne ile verileri sıralattık işlem buraya kadar tamam
'Sıra geldi sayfalama için kodlamaya
If not ToplamVeriAdedi="0" Then
'Sayfalatma Yapıyoruz
If Cint(GecerliSayfamiz) = 1 Then
Response.Write " "
Else
a = Cint(GecerliSayfamiz) -1
If not a = 0 Then
Response.Write "<a href=?page=" & a & qstring &"><< Önceki </a> "
End if
End If
If Cint(GecerliSayfamiz) + 5 > Cint(SayfaSayisiIcin) Then
b = Cint(SayfaSayisiIcin)
Else
b = Cint(GecerliSayfamiz) + 5
End If
If Cint(GecerliSayfamiz) < 5 Then
c = 1
Else
c = Cint(GecerliSayfamiz) - 5
End If
For j = c To b
If j = Cint(GecerliSayfamiz) Then
Response.Write "[<b>" & j & "</b>] "
Else
If not j = 0 Then
Response.Write "<a href=?page=" & j & qstring &".html>" & j & "</a> "
End if
End If
Next
If Cint(GecerliSayfamiz) = Cint(SayfaSayisiIcin) Then
Response.Write " "
Else
a = Cint(GecerliSayfamiz) + 1
Response.Write "<a href=?page=" & a & qstring &".html> Sonraki >></a> "
End If
End if
Rs.Close
SET Rs = NOTHING
%>
MYSQL için SAYFALAMA İŞLEMLERİNİ YAPTIK BİRAZ UZUN GİBİ GELEBİLİR AMA
KOD ZENGİNLİĞİ OLDU BİRAZ
----------------------------------------------------------------------------------
2 - MSSQL ve ACCESS için SAYFALAMA İŞLEMİ
<%
Dim adoCon
Dim adoQuery
'Bu Connection Nesnesi MSSQL için
Set adoCon=Server.CreateObject("Adodb.Connection")
adoQuery="driver={SQL Server};server=localhost;uid=KullaniciAdi;pwd=Parolasi;database=VeritabaniADI"
adoCon.Open (adoQuery)
'Buda ACCESS için
Set adoCon = Server.CreateObject("ADODB.Connection")
adoQuery = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("dataklasor/databaseAdi.mdb")
adoCon.Open (adoQuery)
'Hangisi Lazımsa onu kullanırız
Set rs = Server.CreateObject("Adodb.Recordset")
sql="SELECT * FROM TablonunAdi ORDER BY idno DESC "
rs.Open sql,adoCon,1
On Error Resume Next
BirSayfadaVeriAdedi = 20 'hersayfada 20 tane göster
page = CInt(Request("page")) ' Geçerli Sayfa
If (page ="" or page = 0) Then page = 1 Else page=page
rs.pageSize = BirSayfadaVeriAdedi
rs.absolutePage=page
Do While Not rs.Eof and i<rs.pagesize
i=i+1
Response.Write (rs("SutunAdi"))
Response.Write ("<br>")
Response.Write (rs("DigerSutun"))
Response.Write ("<br>")
rs.Movenext
Loop
'Şimdi sayfalamayı yapalım
If page = 1 Then
Response.Write " "
Else
a = page -1
Response.Write "<a href=?page=" & a & qstring &"><< Önceki </a> "
End If
If page + 5 > rs.pagecount Then
b = rs.pagecount
Else
b = page + 5
End If
If page < 5 Then
c = 1
Else
c = page - 5
End If
For j = c To b
If j = page Then
Response.Write "[<b>" & j & "</b>] "
Else
Response.Write "<a href=?page=" & j & qstring &">" & j & "</a> "
End If
Next
If page = rs.pagecount Then
Response.Write " "
Else
a = page + 1
Response.Write "<a href=?page=" & a & qstring &"> Sonraki >></a> "
End If
rs.close
set rs = Nothing
%>Access ve MSSQL veritabanında İşlemler aynıdır farketmez
Çok uzun bir makale oldu yine inşallah sıkıcı gelmemiştir