Şimdi sayfalama demek listelediğin kayıtları sayfalara ayırmak demek
Eğer sorun buysa bunun için Veritabanın LIMIT fonksiyonunu kullanacaksın. Aşağıda PHP SAYFALAMA olarak detaylıca anlattım.
Fakat sormuş olduğun soru bir sayfaya konu başlıklarını yada başka bi özelliğini getirip üzerine tıklandığında detaylarını görmek ise onu belirt ona göre onu anlatalım.
PHP SAYFALAMA konusunda bilgi almak isteyenler aşağıdaki metinden yararlanabilir.
Bu işi pratik halletmen adına sana eskiden kullandığım bir class yükleyip anlatıyorum hızlıca.
Öncelikle aşağıda bulunan kodları sayfalaClass.php olarak kaydederek scriptin olduğunun dizine koymalısın.
PHP:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-9">
<META HTTP-EQUIV="Content-Type" content="text/html; charset=windows-1254">
<?
class sayfalamaClass
{
public static $kayitSayisi;
public static $sayfaSayisi;
public static $sql;
public static $nerden;
public static $query;
public static $page;
public static function sayfala($tablo,$kacar)
{
self::$sql = "select * from ".$tablo."";
self::$kayitSayisi = mysql_fetch_array(mysql_query("select count(id) from ".$tablo.""));
self::$sayfaSayisi = ceil(self::$kayitSayisi[0]/$kacar);
self::$page = mysql_escape_string($_REQUEST['p']);
if(!isset(self::$page) || !is_numeric(self::$page) || self::$page>self::$sayfaSayisi)
{
self::$page = 1;
}
self::$nerden = (self::$page*$kacar)-$kacar;
self::$query = mysql_query(self::$sql." order by id desc limit ".self::$nerden.",".$kacar."");
}
public static function sayfalar($link)
{
if(self::$sayfaSayisi>1)
{
echo '<table border="0" cellpadding="0" cellspacing="0" class="sayfala"><tr>';
if(self::$page!=1)
{
echo '<td class="aktif" align="center" valign="middle"><a href="'.$link.'&p=1"> İlk Sayfa </a></td>';
$onceki = self::$page-1;
echo '<td class="aktif" align="center" valign="middle"><a href="'.$link.'&p='.$onceki.'"> Geri </a></td>';
}
else
{
echo '<td class="pasif" align="center" valign="middle">İlk Sayfa </td>';
$onceki = self::$page-1;
echo '<td class="pasif" align="center" valign="middle">Geri</td>';
}
echo '<td class="sayfaNumarasi" align="center" valign="middle"> Sayfa <b>'.self::$page.' / '.self::$sayfaSayisi.'</b></td>';
if(self::$page!=self::$sayfaSayisi)
{
$sonraki = self::$page+1;
echo '<td class="aktif" align="center" valign="middle"><a href="'.$link.'&p='.$sonraki.'"> İleri </a></td>';
echo '<td class="aktif" align="center" valign="middle"><a href="'.$link.'&p='.self::$sayfaSayisi.'"> Son Sayfa</a></td>';
}
else
{
$sonraki = self::$page+1;
echo '<td class="pasif" align="center" valign="middle">İleri</td>';
echo '<td class="pasif" align="center" valign="middle">Son Sayfa</td>';
}
echo '<td><form action='.$link.' method="post"><input type="text" name="p"></td><td><input type="submit" value="Git" class="buton"></td></tr></table>';
}
}
}
?>
Daha sonra sayfalama yapacağın dosyayı açarak aşağıdaki kodu ekleyerek classımızı include ediyoruz. Sayfalama yapacağım sayfa adı varsayalım index.php olsun.
PHP:
<?
include("sayfalaClass.php");
?>
Bundan sonraki aşama çok basit while yapısında veritabanı satırı yerine bu classdan fonksiyon çağıracağız. Tablomuzun adının urunler oldugunu varsayalım
PHP:
<?
sayfalamaClass::sayfala("urunler",5); //urunlerin yanında gormus oldugun 5 rakami kac kayitda bir sayfalama yapacagini ayarliyor. Rakami revize edebilirsin.
while ($row = mysql_fetch_array(sayfalamaClass::$query)){
?>
Ve While döngüsü bitiminden sonra sayfalama linklerinin ([1,2,3,4,5,etc..] gibi) gelmesini istediğin alana aşağıdak kodu yapıştırıyorsun.
Sayfanın isminin yukarıda index.php oldugunu varsaydığımız için o parantez içindeki kısım index.php olarak geçiyor. Revizyon yapabilirsin.
PHP:
<?php
sayfalamaClass::sayfalar("index.php");
?>
Bunu bu şekilde veritabanında koşul belirtmeden mantığı anlamak adına çalıştır. Ondan sonra zaten istersen tek bi yerde kullanacaksan class içindeki
PHP:
self::$sql = "select * from ".$tablo."";
self::$kayitSayisi = mysql_fetch_array(mysql_query("select count(id) from ".$tablo.""));
satırlarının son iki tırnağın arasına WHERE ile koşul belirtebilirsin. Yada istersen fonksiyonda koşul için düzenleme yaparız hemen.
Kolay gelsin
