HAZİRAN29
ASP ile MySQL'den gelen verileri sayfalara bölme
Şimdiye kadar içerisinde bulunduğum forumlardan hemen hepsinde, standart olarak sorulan sorular arasında verileri sayfalama konusu bulunuyor. Herhangi bir sorgu sonucunda, kayıt setine yüklenmiş verilerin belirli sayılarla sayfalara bölünmesi işlemi aslında çok da zor bir işlem deil.
Aşağıda MySQL kullanılan bir projede kayıtları istediğimiz kadar kayıttan oluşan parçalara bölmek için gereken kodlara basit bir örnek bulacaksınız.
ilk olarak MySQL veritabanına bağlanmamız gerekiyor.
<%
Mysql_server = "ServerAdi" 'MySQL Serverinizin adı, IP'si
Mysql_user = "KullaniciAdi" 'MySQL serverdaki Kullanıcı Adınız
Mysql_pass = "Sifre" 'MySQL Serverdeki Şifreniz.
Mysql_db = "VeritabaniAdi" 'Verilerle oynamak için gereken Veritabanı
' Bir bağlantı string'i oluşturuyoruz.
strConn = "DRIVER={MySQL ODBC 3.51 Driver}; SERVER="&mysql_server&"; UID="&mysql_user&"; pwd="&mysql_pass&";db="&mysql_db&";"
' Bağlantımız için Bağlantı Nesnesini oluşturuyoruz
Set objConn= Server.CreateObject("ADODB.Connection")
' Oluşturduğumuz nesneyi kullanıma açıyoruz.
objConn.Open strConn
%>
Veritabanı bağlantımızı yaptık... Sıra geldi parametre kontrolüne
<%
SayfalamaKayitSayi = 20 ' her sayfada kaç kayıt olacak
' p isimli bir parametre ile sayfa bilgisini sayfadan sayfaya taşıyoruz.
' p parametresini iSayfa isimlil bir değişkene yüklüyoruz.
iSayfa = Request.QueryString("p")
if Not Isnumeric(iSayfa) OR iSayfa = "" Then 'Eğer parametremiz Numeric bir veri ile yüklü değil ise
iSayfa = 1 ' Değişkene 1. sayfadayız diyoruz
iBaslangic = 0 ' Kayıtların, kaçıncı kayıttan itibaren gösterilmeye başlayacağını belirtiyoruz
else ' Eğer p parametresinden numeric bir veri gelmiş ise
iBaslangic = (iSayfa-1)*SayfalamaKayitSayi ' Kayıtların hangi kayıttan itibaren alınacağını belirttik
end if
' SQL sorgumuzu hazırlıyoruz.
' Aşağıdaki sorguda "tlbTabloAdi" adlı tablodan "iBaslangic" da kaç rakamı varsa ordan itibaren 20 kayıt istiyoruz.
strSQL = "SELECT * FROM tblTabloAdi Limit "& iBaslangic &", "& SayfalamaKayitSayi
' strSQL adlı sorguyu objRs isimli Kayıt Seti nesnesine yüklüyoruz
Set objRs = objConn.execute(strSQL)
%>
Kullanılacak kayıtlarımızı da elimize aldık. Şimdi kayıtlarımızı sayfamızda gösterelim ve sayfalama kodlarımızı ekleyelim..
<%
if objRs.EOF Then ' Eğer sorgu sonucunda herhangi bir kayıt bulunamamışsa
Response.Write"Listelenecek kayıt bulunamadı"
else
' Kayıt setindeki sn kayıda kadar aşağıdaki döngüyü çalıştır.
Do While Not objRs.EOF
Response.Write objRs("fldFieldAdi") &"<br>" ' fldFieldAdi adlı fieldde bulunan veriyi sayfaya yazdık
objRs.MoveNext ' Kayıt setindeki bir sonraki kayıta geçiyoruz
Loop ' Kayıtsetteki kayıtlar bitene kadar yukarıdaki işlemleri tekrarlıyoruz
' Sayfalama kodları başlar
'Toplam kayıt sayısını buluyoruz
iToplamSayi = objConn.Execute("SELECT COUNT(*) FROM tblTabloAdi")
' Toplam kayıt sayısını 20'şerli parçalara bölüp kaç sayfamız olduğunu buluyoruz
for i = 1 To cint(replace(iToplamSayi,",","."))/SayfalamaKayitSayi+1
' Eğer bulunduğumuz sayfa numarası yazıcaksa link olmasın
if i = int(iSayfa) Then
response.Write "<strong>"& i &"</strong> "
else
' Sayfalara linklerini veriyoruz
Response.Write "<a href=""?p="& i &""">"& i &"</a> "
end if
next
' Sayfalama kodları biter
end if
%>
Sayfalama kodlarınıda bitirdik. Şimdi nesnelerimizi kapatalım
<%
objRs.Close
Set objRs = Nothing
objConn.Close
Set objConn = Nothing
%>
Evet bu kadar :)
- Kodların bir arada bulunduğu txt dosyasını incelemek için tıklayın
Şunu belirtmeme izin verin. Yukarıdaki kodlar sadece olayın mantığını anlamanız amaçlı yazılmıştır. Kendi bilgisayarımda kullandığım ve sorunsuz çalışan kodlardır (Veritabanı, tablo adı, field adları kendi veritabanınıza göre değişmelidir)
Olabildiğince bu tür konularda tamamen bitmiş kodlardan çok en basit halde oluşturulmuş kodları paylaşmayı tercih ediyorum. Bunun nedeni sizinde kodlara birşeyler katmanızı sağlamak. Ne kadar çok kod yazarsanız o kadar iyi olur.
Farklı konularda görüşmek üzere...



