Merhaba arkadaşlar. Bu makalemizde php ile veritabanından verileri çekip sayfalama işlemini anlatacağım. Özetle mantığını anlatayım. Sayfamızdaki kayıtları get ile gönderdiğimiz sayfa değerleri ile yönetiyoruz. Bir sayfada 5 kayıt gösterileceğini varsayalım. Get ile gönderilen değer 2 ise eğer 5'ten fazla kayıt varsa 5-10 arasını gösterecektir. Get ile değerleri nereden gönderiyoruz der iseniz kayıtlarımızın altına bir döngü kuruyoruz. Veritabanımızdaki kayıt sayısına göre sayfa numarası çıkartıyoruz. Örnek olarak her sayfada 5 kayıt listelediğimizi düşünürsek veritabanımızda eğer 12 kayıt varsa bu kayıtları ancak 3 sayfada gösterebiliriz. Yani alt kısımda 3 adet sayfa linki bulunacaktır. Bir kısmının mantığını anlattım. Şimdi kodlarımıza geçelim.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="stil.css" type="text/css" media="screen">
<title>
Php ile Sayfalama
</title>
</head><body>
<table border="0" id="kayitlar" cellpadding="3" width="400" cellspacing="2">
<tr id="baslik">
<td>
No
</td>
<td>
İsim
</td>
<td>
Soyisim
</td>
<td>
Tel-Numarası
</td>
</tr>
$mak = $_GET['m']; //bulunduğumuz sayfa değeridb.php Sayfamız
include ("db.php"); //bağlantı sayfamız
$sayfamiktar = 5; //görüntülenecek kayıt sayısı
if ($mak == ""){ //get ile değer gelip gelmediğini kontrol ettik. Gelmediyse $mak değişkenimize 1 değerini atadık.
$listele = mysql_query("SELECT * FROM bilgiler order by no desc LIMIT 0,".$sayfamiktar."");
$mak = 1;
}
if ($mak == 1){ //get ile gelen değere göre sorgulama yapıyoruz.
$listele = mysql_query("SELECT * FROM bilgiler order by no desc LIMIT 0,".$sayfamiktar."");
} else if ($mak == 2){
$listele = mysql_query("SELECT * FROM bilgiler order by no desc LIMIT 5,".$sayfamiktar."");
}else if ($mak == 3){
$listele = mysql_query("SELECT * FROM bilgiler order by no desc LIMIT 10,".$sayfamiktar."");
}
while($bas = mysql_fetch_array($listele)) //kayıt listeleme işlemi
{
$no = $bas['no'];
$ad = $bas['ad'];
$soyad = $bas['soyad'];
$tel = $bas['tel'];
echo "<tr id='liste'>
<td>
$no
</td>
<td>
$ad
</td>
<td>
$soyad
</td>
<td>
$tel
</td>
</tr>";
}
echo "</table>";
$kayitsayi = mysql_query("SELECT * FROM bilgiler");
$kayitsayisi = mysql_num_rows($kayitsayi); //kaç satır veri olduğunu öğrendik
if ($kayitsayisi <= 5) //kayıtlarımızı kaç sayfada göstereceğimizi buluyoruz. 15 kayıta kadar kontrol ettik.
{
$asilsayi = 1;
} else if ($kayitsayisi <= 10)
{
$asilsayi = 2;
} else if ($kayitsayisi <= 15)
{
$asilsayi = 3;
}
$ileri += $mak;
$ileri += 1; // 1 ekledik.
$geri += $mak;
$geri -= 1; // 1 çıkardık.
if ($asilsayi > 1){
echo '<ul id="sayilar">';
if ($geri != 0){
echo '<li><a href="index.php?m='.$geri.'"><</a></li>'; }
for ($i=1; $i <= $asilsayi; $i++)
{
if ($mak == $i)//get ile gelen deger ile şuan dönen değer eşit ise link vermedik.
{
echo '<li><a title="asd" style="color:#ffffff; background:#cccccc;">'.$i.'</a></li>';
}else {
echo '<li><a href="index.php?m='.$i.'">'.$i.'</a></li>';
}}
$ileri2 = $ileri - 1;
if ($asilsayi > $ileri2){
echo '<li><a href="index.php?m='.$ileri.'">></a></li>'; }
echo '</ul>';
}
$mysql_host="localhost";Yaptığımız işlemleri sırasıyla anlayalım şimdi. İlk olarak get değerimiz bir değişkene aktardık. Sonrasında bağlantı sayfamızı include ettik. Listelenmesini istediğimiz kayıt sayısını değişkene aktardık. Get ile değer gelip gelmediğini kontrol ettik. Eğer gelmediyse $mak değişkenimize 1 değerini atadık ve ilk 5 kaydı listeleyecek sql sorgumuzu yazdık. Sonra if şartlarımız yardımıyla get ile gelen değere göre sorgulama yapıyoruz. Örneğin gelen değer 2 ise ikinci sayfamızdaki kayıtları göstermemiz gerekiyor. Bunun için sql kodumuzdaki limit değerinin ilk kısmına 5 yazıyoruz. Yani ilk 5 kayıttan sonraki 5 kaydı($sayfamiktar değişkenimiz ile belirtiyoruz) listelemesini istiyoruz. Ben 15 kayda kadar kontrol ettim. Toplam 3 sayfaya karşılık geliyor. Sayfa sayısını artırmak sizin elinizde. Şimdi geçelim while döngümüze.
$mysql_kullaniciadi="root";
$mysql_sifre="root";
$mysql_vtadi="sayfalama";
$baglan= @mysql_connect($mysql_host,$mysql_kullaniciadi,$mysql_sifre);
mysql_query("SET NAMES UTF8");
if(! $baglan) die ("mysql bağlantısında hata oluştu");
mysql_select_db($mysql_vtadi,$baglan) or die ("veritabanına bağlanırken hata oluştu");
Mysql_fetch_array ile listeleme işlemi yaptık, değişkenlere atadık ve ekrana yazdırdık. Şimdi yukarıdaki görselde de görmüş olduğunuz sayfa numaralarımıza geçelim. Veritabanımızda kayıt sayısını mysql_num_rows fonksiyonu sayesinde bulduk ve değişkene aktardık. Sonra if ile bir şartlandırma yaptık. Bunu yapmamızın amacı for döngümüzü kaç kere döndüreceğimizi bulmaktır. Yani kaç tane sayfa linki vereceğimizi bulduk. Kayıt sayısı 5 ise veya daha düşükse döngümüz 1 kere dönecektir. Kayıt sayımız 10 veya altındaysa döngümüz 2 kere dönecektir. Sonraki if deyimimizde sayfa sayısını kontrol ettik. Yani 5’ten fazla kayıt olup olmadığını. 5’ten az kayıt varsa zaten sayfa numaralarının ekrana basılmasına gerek kalmayacaktır. 5’ten fazla kayıt mevcut ise if şartımızın içini işleme alacaktır. Sayfa numaralarını listelettik. İleri butonu bizi 1 ileri sayfaya taşımak için vardır. Aynı şekilde geri butonu bizi 1 geri taşımak için vardır. Bu butonlarımızın standart bir linki olmayacak. Her sayfaya geçildiğinde değişmek zorundadır. Get ile gelen değeri $ileri ve $geri değişkenlerimize aktardık. Aktarmamızın nedeni hangi sayfada olduğumuzu bulmaktır. Sonrasında $ileri değişkenimizi bizi bir sonraki sayfaya taşıması için 1 artırdık. Aynı şekilde $geri butonumuzun bizi 1 geri taşıması için eksilttik. Sonra butonlarımızı if şartına soktuk. Şarta sokmamızdaki amaç 1. sayfadayken geri butonumuzun gözükmemesini sağlamaktır ve son sayfadayken ileri butonunun gözükmemesini sağlamaktır. Böylelikle makalemizin sonuna gelmiş bulunmaktayız. Anlamadığınız noktaları yorum yolu ile sorabilirsiniz. Sonraki makalelerde görüşmek üzere...
0 Yorum