Arkadaşlar konuma başlamadan önce şunu hatırlatayım: bazı arkadaşlar reklam maksadıyla böyle konuları açtığımı ileri sürüyor oysaki inanın böyle bir maksadım yok.Bu konuyu sadece php de yaptığım birşeyi sizlerle paylaşmak ve öğretmek amacıyla paylaşıyorum.



Sitem de ki üye listem de üye sayısı arttıkça liste sürekli aşağıya doğru gidiyordu ve böyle olunca da aşağı doğru kaymalar başlıyor, şekil bozulmaları oluşuyordu.Doğal olarak ta bu durum beni rahatsız etmeye başlamıştı.



Sonra da uzun araştırmalarım sonucun da php de sayfalama sistemini yapmayı başardım.Yaptığımı anlatacak olursam;



Önce işe sayfalama ismini verdiğim bir fonksiyon oluşturmayla başladım:

 

 function sayfalama
daha sonra ise parantez içerisinde $ işareti başkığında ki değerleri parantez açarak yazdım. (Daha sonra bu değerleri tanımlayacağım tabiki.)

 

 

($limit,$sayfano,$satir_sayisi=0,$sayfaadi='liste.php',$adresdeger=''
buradaki liste.php benim üyelistemin bulunduğu php dosyasıdır.



daha sonra sayfalama fonksiyonunda ki mantıksal olasıkları tanımladım.

{ 

$sayfalama = ''; 

if($satir_sayisi > $limit) 

{ 

$sayfa_sayisi = $satir_sayisi / $limit; 

$sayfa_sayisi = ceil($sayfa_sayisi); 

if($sayfano == $sayfa_sayisi) 

{ 

$to = $sayfa_sayisi; 

} elseif($sayfano == $sayfa_sayisi - 1) 

{ 

$to = $sayfano + 1; 

} elseif($sayfano == $sayfa_sayisi - 2) 

{ 

$to = $sayfano + 2; 

} else { 

$to = $sayfano + 3; 

} 

if($sayfano < 4) 

{ 

$from = 1; 

} else { 

$from = $sayfano - 3; 

}
Daha da açacak olursam, sayfa sayısı değerini işlem yaparak tanımladım.Şöyle ki; eğer satır sayısı belirlediğim satır limitinden büyük ise satır sayısı limite bölünsün ve kalan kısım diğer sayfaya aktarılsın.

Sayfa aktarma işlemide var ayrıca.Diğer sayfalara aktarılan veri nin nasıl diğer sayfalara aktarılacağı hakkında bir işlem: eğer sayfa numarası ardaşık olarak (yani birer birer) artıyorsa bununla birlikte sayfa sayısı aynı değerde azalsın.

son olarak ta sayfa sayısı 4 ten küçükse eğer numaralar 1,2,3 diye ardaşık olarak sıralansın.



 

 

if (4 < $sayfano) 

$sayfalama .= ' <b><a href="'.$sayfaadi.'?sayfa=1'.$adresdeger.'"><b>1</b></a>...</b> '; 


for($i=$from; $i <= $to; $i++) 

{ 

if($i == $sayfano) 

{ 

$sayfalama .= ' ['.$i.']'; 

} else { 

$sayfalama .= ' <A href="'.$sayfaadi.'?sayfa='.$i.$adresdeger.'">'.$i.'</a> '; 

} 

} 

if ($to < $sayfa_sayisi) 

{ 

$sayfalama .= ' <b>...<a href="'.$sayfaadi.'?sayfa='.$sayfa_sayisi.$adresdeger.'"> '.$sayfa_sayisi.'</a></b> '; 

} 

} 

if($sayfalama == ""  

{ 

$sayfalama = 'Sayfa 1'; 

} 

return $sayfalama; 

}
burada ki mantıksal değerim de ise belirledğim sayfalara otomatik tekrarlanan link verdim. liste.php?sayfa=1 liste.php?sayfa=2 gibi...

Ayrıca sadece bir sayfalık veri varsa sıralamanın durdurulup sadece birinci sayfanın gösterilmesi işlemini de yaptım.



 

 

$limit = 8;

$sql = mysql_query ("SELECT COUNT(*) FROM tabloismim" ; 

$satir_sayisi=mysql_result($sql, 0);
burada limit değerindeki sayıyı tanımlamış oldum.ayrıca sql den çekeceğim toplam veriyi tanımladım.



Kırmızı renkli yazan "tabloismim" benim phpmy adminde ki tablo adım.select count * ta tabloadki tüm değerleri sayma komutu.from tabloismim ise belirlediğim tablodan say anlamına geliyor.



@ $sayfa=abs(intval($_GET['sayfa'])); 

if(empty($sayfa) || $sayfa > ceil($satir_sayisi/$limit)) { 

$sayfa=1; 

$baslangic=0; 

} else { 

$baslangic=($sayfa - 1) * $limit; 

}
Bu kodların anlamı ise şayet sayfa boşsa başlangıçın 0 dan başlamasını belirtiyor.



include("veritabanibaglantidosyam.php" ;

$sql = mysql_query ("select * from tabloismim order by id asc LIMIT $baslangic,$limit" ; 

while ($liste = mysql_fetch_array($sql)) {

?>

.

.

.

.

.


Bu son kodumda ise kırmızı renkle gösterdeğim veritabanibaglantidosyam.php isimli veritabanı bilgilerimi içeren dosyayı include ederek veritabanıyla bağlantı kurmasını sağladım.

sql değerinde tanımladığım sql bağlantı kodumda ise; tablomdaki tüm kayıtların id numarasına göre asc komutuyla yukarıdan aşağıya doğru (yani ilkten sona doğru) belirlediğim $baslangic ve $limit değerlerini Limit komutuyla başlangıç tan limite kadar sıralanmasını sağladım.

Eğer sondan ilke doğru sıralasnmasını isteseydim de asc yerine desc komutunu kullanırdım.



Diğer while döngüsü ise veritabanımdan çekip gösterdiğim tablo değerleri ile alakalı bir durum.YANİ KONUMUZLA ALAKALI DEĞİL.



Benden şimdilik bu kadar arkadaşlar.Umarım sizlere HADDİM OLMAYARAK birşeyler öğretmeyi zerre kadar bile olsa başarabilmişimdir.Kodların hepsini paylaşamadığım için lütfen beni mağdur görünüz.

demo: http:www.dizaynturko.com/liste.php = > (sql bağlantısı olduğu için üyelik girişi gerekmektedir.)

kullanıcı adı: deneme
şifre: deneme

Sevgi ve Saygılarımla,

Sinan ANDIRMAN