ASP ile Kayıtları Sayfalamak

Konu sahibi son olarak 2618 gün önce görüldü
ASP ile Kayıtları Sayfalamak

KAYITLARI SAYFALAMAK !

Mesela bir ziyaretçi defteri hazırlıyorsunuzYok yok boş verin ziyaretçi defterini daha profesyonel bir şeyler olsun… Mesela büyük bir şirketin Internet sitesini hazırlıyorsunuzVe bu site de yüzlerce ürün varHepsini aynı sayfada vermeniz kullanıcı açısından ve tasarım olarak can sıkıcı bir olaydırÜrünleri sayfalara bölerek vermek en doğrusu olacaktırZaten çoğu sitede böyle yapıyorMuhakkak örneklerini görmüşsünüzdür Sayfanın en altında 1 2 3 4 gibi numaralar olur ve bu numaralara tıkladığınız zaman aslında aynı sayfa olan fakat bölünmüş diğer küçük sayfalara ulaşırsınızPeki nasıl yapılır bu olay? İşte fazla uzatmadan bu sorunun cevabını vermeye çalışalım…



Başlamadan önce;



Adı “veritabanimmdb” olan bir Access dosyamızın olduğunu ve bu veritabanımızın içerisinde de “Tablom” adında bir tablomuzun olduğunu varsayıyorumİşte tablomuzda da 80-90 adet kayıt olsunBizde bunları parçalayarak 8-9 sayfa haline getirelim



Aşağıdaki kodları inc_baglantimasp olarak kaydedinBöylece her dosya için ayrı ayrı bu kodları yazmak zorunda kalmazsınız



inc_baglantiasp


<%
'veritabanimizi mevcut klasörler içerisinden sanal olarak
'adresini belirtelim
Sanal_Yol="Veritabani_Klasoru/veritabanimmdb"
Veri_Yolu=ServerMappath(Sanal_Yol)

' veritabanimiza iki sekilde baglanabiliriz
' MicrosoftJet sürücüsü ve Access sürücüsü kullanarak
' Asagida her iki sininde örnekleri mevcut
' Ben jet baglantisinin daha hizli olduguna inandigimdan onun kullanimini
' Tercih ediyorum
' Eger siz Access sürücüsünü kullanmak isterseniz
' Jet baglantisi nin altinda bulunan
' Tur 'ün önüne " ' " (Tek tirnak) isaretini ekleyip Access tipindeki
' Tur ün Tek tirnak ' isaretini kaldirmalisiniz


'Jet baglantisi
Tur = "Provider=MicrosoftJetOLEDB40 ;
Persist Security Info=False; Data Source=" & Veri_yolu

'Accsess Sürücüsü ile baglanti
'Tur = "DRIVER={Microsoft Access Driver (*mdb)};DBQ=" & Veri_yolu

'baglanti nesnemizi olusturalim

Set Baglanti=ServerCreateObject( "ADODBConnection" )
'Baglantimizi seçtigimiz sürücüye göre açalim

BaglantiOpen ( Tur )

%>
 
Sayfalama ASP

<%

' Hangi sayfada oldugumuzu adres çubugundan alalim
' QueryString ile veri alirken dikkat etmemiz gereken bir nokta var
' QueryString küçük - büyük harfe duyarlidir
' Yani RequestQueryString("Sayfa") ile
' RequestQueryString("sayfa") ayni degildir

Sayfa=RequestQueryString("Sayfa")
'Baglanti dosyamizi sayfamiza davet edelim
%>
<!--#include file="inc_baglantiasp"-->
<%
' Bir SQL ifadesi ile tablomuzdaki tüm verileri seçelim

SQL="Select * From Tablom"

' Seçtigimiz bilgilere ulasmak için bir RecordSet olusturalim
' ADODBConnection sayfalama islemini yapamadigimiz için
' RecordSet olusturuyoruz

Set Sonuc=ServerCreateObject("ADODBRecordSet")
SonucOpen SQL , Baglanti,1

'sonuc nesnemizin bos olmasi durumunda bunu ziyaretçiye bildirelim

if SonucEof Or SonucBof Then
ResponseWrite " Veritabanimiz Içerisinde uygun kayit bulunamadi "
' veritabanimiz içerisinde kayit varsa
ELSE
' Evet simdi Basliyoruz

Kayit_Sayisi=10 ' her sayfada bulunmasini istedigimiz kayit sayisi
SonucPageSize=Kayit_Sayisi
SonucCacheSize=Kayit_Sayisi
Toplam_Sayfa=SonucPageCount 'bütün verileri toplam kaç sayfaya böldük?


' Eger Sayfa degiskenimizin karakter uzunlugu sifir sa
' Yani sayfa degiskenimizde deger yoksa
if len(Sayfa)=0 Then
' Sayfa degiskeni olarak 1 'i atiyalim
' Ziyaretçi sayfaya ilk girisinde 1sayfadan baslayacaktir
' Biz sayfa degiskenini göndermedigimiz için de
' sayfa degiskeninde deger olayacaktir
Simdiki=1
'simdiki o anki yayinlanan sayfanin numarasini ifade ediyor
Else
' Eger sayfa degiskenimiz bir eger içeriyorsa bunu
' sayisallastiralim [ CINT(Degisken) ]
simdiki=CINT(Sayfa)
End if


' Kontrollere devam edelim
' Eger simdiki sayfa degiskenimiz Toplam sayfa sayimizdan büyükse
' Simdiki sayfayi son sayfa olarak ayarliyoruz

if simdiki > Toplam_Sayfa Then



Simdiki=Toplam_Sayfa
End if

'Eger simdiki sayfamiz 1 den küçükse
'yayinlanacak sayfa olarak 1 sayfayi atiyalim
if simdiki < 1 Then
Simdiki=1
End if

' Programin normal olarak çalismasi durumunda simdiki degiskeni
' Ne toplam sayfadan büyük nede 1 den küçük çikacaktir
' Ama kullanicinin müdahalesi sonucunda böyle hatalar olabilir
' Yukaridaki kontrollerde bu gibi hatalarin önüne geçtik


'Simdi de hazirladigimiz programa hangi sayfayi göstermesi
'gerektigini söylüyoruz
SonucAbsolutePage=Simdiki
' Toplam kaç tane kayit oldugunu ögrenelim
Bulunan_Sonuc=SonucRecordCount
' Döngümüze baslayalim
' Döngü kosullari ;
' 1- Döngümüz bir sayfada gösterilecek olan kayit sayisi kadar olmali
' 2- Döngümüz veritabanindaki son kayitta durmali (SonucEOF)
' Kaç kere döngü yaptigimizi saymak için bir degisken olusturalim
' Bu degiskeni sifirdan baslatiyoruz
Dongu_Say=0
Do While Scr < Kayit_Sayisi And Not SonucEOF
'istedigimiz kayitlari ekrana dökelim
ResponseWrite Sonuc("Sutun1")
ResponseWrite "<br>"
'Yaptigimiz döngü sayisini 1 arttiralim
Dongu_say = Dongu_say + 1
'Bir sonraki kayita geçelim
SonucMoveNext


'Döngü kosullar olusana kadar devam etsin
LOOP

'Döngümüz kosullarini yerine getirdikten
'sonra baglanti ve kayit nesnelerimizi
'Kapatalim Sonrada onlari imha edelim ki
'bosu bosuna yormasinlar serverimizi

BaglantiClose
Set Baglanti=Nothing
SonucClose
Set Sonuc= Nothing

' simdide sayfanin en altindaki linklerimizi olusturalim
' Döngümüzü yine kosullara bagli olarak yapacagiz
' Döngümüz Toplam sayfamizdan çok olmamali

FOR Link_Say = 1 TO Toplam_Sayfa

iF Link_say = Simdiki Then

ResponseWrite "<b>" & Link_Say & "<b>"

ELSE


ResponseWrite "<a href=Sayfalamaasp?Sayfa=" & Link_Say & ">" & Link_Say & "</a>"

END IF

'Döngümüz Devam etsin

NEXT


'Kodlarimizi yazmaya baslarken bir kontrol yapmis ama kapatmamistik
' Sonuc un kayitlar içermesi durumunda yapilmasi gerekenleri bir bir
' yaptirdiksimdide bu kontrolü bitirelim
 
Geri