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
Sayfalama ASP
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