• 11-03-2008, 03:07:21
    #1
    Üyeliği durduruldu
    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">&nbsp;
    <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
    %>
  • 12-03-2008, 00:40:43
    #2
    Ü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:00:25
    #3
    Üyeliği durduruldu
    Sıkıcı değil hocam ellerine sağlık da;
    MysqlIcinSayfalama = "&(BirSayfadaVeriAdedi * GecerliSayfamiz )-(BirSayfadaVeriAdedi ) & "," & BirSayfadaVeriAdedi & "

    virgülde niye hata veriyor onu anlayamadım :S
  • 05-07-2009, 11:14:15
    #4
    Üyeliği durduruldu
    Set 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