meraba arkadaşlar şu arağıdaki koda Asp sayfalama kodu yerleştirebilicek birisi warmı ?
her 200 etikette sayfalama yapıcak 1 2 3 4 5 .. gibi gidicek
<!-----#INCLUDE FILE="harddisk.asp"---> ( mdb dosyasını bu dosyadan include ediyor )
<%
set rs = server.createobject("ADODB.Recordset")
rs.open "SELECT ETIKET FROM ETIKETLER ORDER BY ID DESC",sur,1,3
for t=1 to 200
if rs.eof then exit for
%><span style="font-size: 8pt">
<a href="etiket/<%=rs("ETIKET")%>"><font face="Trebuchet MS" style="font-size: 8pt" color="#333333"><%=rs("ETIKET")%></font></a>
</span>
<%
rs.movenext : next
rs.close : set rs = nothing
%>
Asp ' de sayfalama
3
●4.191
- 12-03-2008, 00:40:43Üyeliği durduruldu.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 - 05-07-2009, 11:14:15Üyeliği durdurulduSet Rs = adoCon.Execute ("SELECT * FROM mesajlar ORDER BY id DESC LIMIT "&(BirSayfadaVeriAdedi * GecerliSayfamiz )-(BirSayfadaVeriAdedi )&" , "& BirSayfadaVeriAdedi&" ")
şöyle ayarladım düzeldi fakat sayfama direkt olarak girince hata veriyor.
Microsoft OLE DB Provider for ODBC Drivers hata '80040e14'
[MySQL][ODBC 3.51 Driver][mysqld-5.0.51b-community-nt-log]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-20 , 20' at line 1
/sayfa.asp, satır 38
