ASP ile Kayıtları Sayfalamak

WildWolF

New member
Katılım
18 Haz 2005
Mesajlar
285
Reaction score
0
Puanları
0
KAYITLARI SAYFALAMAK !

Mesela bir ziyaretçi defteri hazırlıyorsunuz.Yok yok boş verin ziyaretçi defterini daha profesyonel bir şeyler olsun… Mesela büyük bir şirketin Internet sitesini hazırlıyorsunuz.Ve bu site de yüzlerce ürün var.Hepsini 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ır.Zaten çoğu sitede böyle yapıyor.Muhakkak ö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ız.Peki nasıl yapılır bu olay? İşte fazla uzatmadan bu sorunun cevabını vermeye çalışalım…



Başlamadan önce;



Adı “veritabanim.mdb” 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 olsun.Bizde bunları parçalayarak 8-9 sayfa haline getirelim.



Aşağıdaki kodları inc_baglantim.asp olarak kaydedin.Böylece her dosya için ayrı ayrı bu kodları yazmak zorunda kalmazsınız.



inc_baglanti.asp

PHP:
<%
'veritabanimizi mevcut klasörler içerisinden sanal olarak 
'adresini belirtelim.
Sanal_Yol="Veritabani_Klasoru/veritabanim.mdb"
Veri_Yolu=Server.Mappath(Sanal_Yol)

' veritabanimiza iki sekilde baglanabiliriz.
' Microsoft.Jet 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=Microsoft.Jet.OLEDB.4.0 ; 
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=Server.CreateObject( "ADODB.Connection" ) 
'Baglantimizi seçtigimiz sürücüye göre açalim

Baglanti.Open ( Tur )

%>

Sayfalama ASP

PHP:
<%

' 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 Request.QueryString("Sayfa") ile 
' Request.QueryString("sayfa") ayni degildir.

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

SQL="Select * From Tablom"

' Seçtigimiz bilgilere ulasmak için bir RecordSet olusturalim.
' ADODB.Connection sayfalama islemini yapamadigimiz için 
' RecordSet olusturuyoruz.

Set Sonuc=Server.CreateObject("ADODB.RecordSet")
Sonuc.Open SQL , Baglanti,1

'sonuc nesnemizin bos olmasi durumunda bunu ziyaretçiye bildirelim

if Sonuc.Eof Or Sonuc.Bof  Then
Response.Write " Veritabanimiz Içerisinde uygun kayit bulunamadi. "
' veritabanimiz içerisinde kayit varsa
ELSE
' Evet simdi Basliyoruz.

Kayit_Sayisi=10 ' her sayfada bulunmasini istedigimiz kayit sayisi 
Sonuc.PageSize=Kayit_Sayisi
Sonuc.CacheSize=Kayit_Sayisi
Toplam_Sayfa=Sonuc.PageCount '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 1.sayfadan 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. 
Sonuc.AbsolutePage=Simdiki
' Toplam kaç tane kayit oldugunu ögrenelim
Bulunan_Sonuc=Sonuc.RecordCount
' 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 (Sonuc.EOF)
' 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  Sonuc.EOF
'istedigimiz kayitlari ekrana dökelim
Response.Write  Sonuc("Sutun1")
Response.Write "<br>"
'Yaptigimiz döngü sayisini 1 arttiralim
Dongu_say = Dongu_say + 1
'Bir sonraki kayita geçelim
Sonuc.MoveNext


'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 

Baglanti.Close
Set Baglanti=Nothing
Sonuc.Close
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

Response.Write "<b>" & Link_Say & "<b>" 

ELSE


Response.Write "<a href=Sayfalama.asp?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

END iF
 
Geri
Üst