Mysql de verileri sayfalandırma (pagination)
Ceviz Viki, özgür ansiklopedi
kodu olduğu gibi kullanmak istiyorsanız 232.satırdan sonrasını okuyun ve duzenlemelerinizi yapın,kod yorum satırlarıyla size açıklanmıştır.
<?php ########## Mysql de verileri sayfalandırma (Pagination) ########## ########## Tarih:12-01-2008 23:00 ########## ########## Komutların bir üstü o komutun yorum satırıdır ########## /* Komutlar bittikten sonra nasıl çalıştıracaksınız kolayca,kritik noktaları komutların en altında anlatılmıştır */ /* Mysql baglantısını yazın */ /* www.site.com/sayfalar.php?sayfano=1 gibi lir linkten 1 sayısını elde ediyoruz intval ile ondalıklı sayı olmamasını ve abs ile negatif sayıdan verimizi kurtarıyoruz */ /* $limit ise $sorgu değikeninde limit olarak belirlediğimiz veritabanından sayfa no suna göre bilgileri alacağımızı belirtir,kodu olduğu gibi çalıştırabilmeniz için sizin tarafınızdan değiştirilecek bir şarttır */ /* $sayfano değişkeni getle gelen bir değişken olduğu için,sayfano 1 için $limit 0 olacaktır ve $sorgu da 0,2 arası bilgileri sayfamıza çekecektir. (*2) olarak belirttiğimiz nesne ise; $sorgu değişkeninde ki $limit ten sonra gelen sayfamıza kaçarlı olarak bilgi alacağımızı söyleyen bir kriterle aynı olmak zorundadır, $limit,10 ise ; burada sayfalarınıza 10 arlı bilgi alacağınızı soyler,dolayısıyla buradaki çarpım nesnesi de 10 olacaktır, $sorguda ne belirtilmişse;burada ki çarpım aynı olacaktır. */ $limit=($sayfano-1)*2; /* $veriler değişkenine depoladığımız sql sorgusu ile amacımız,veritabanımızda kaç tane bilgi var onu saymaktır,asıl sorgumuz $sorgu değişkenidir,bir üstte anlattığımız gibi. tabloismi sizin sayfalandırma yapacağınız tablo ismidir,doldurulması zorunludur. */ /* $verisay değişkenine mysql_num_rows ile tablomuzda kaç bilgi var depolamış oluyoruz */ /* $sorgu; asıl sayfalandırma da işimize yarıyan bu sorgudur; ben burada adi sutuna ait bilgileri sayfalandırmak istiyorum kendi tablomda,siz kendinize gore hangi sutundaki bilgileri sayfalandırmak isterseniz o sutun isimlerini yazabilirsiniz,$limit ve diğer sayısal değeri bir ustte ki komutun yorum satırında anlatılmıştır. tekrarlamak gerekirse $limit sayfa numarasınla gelen bilginin buradaki değerini yansıtır,2 rakamı ise her sayfaya 2 şer tane bilgi almamızı soyler,keyfinize gore değiştirebilirsiniz daha sonra */ } /* $pagination değişkenine depoladığımız sayısal veri $verisay ile veritabanımızda kaç bilgi varsa her sayfaya 2 şerli alacağımız için,bunu 2 ye bölüyoruz,zira 2 ye bölmemizde ki amaç,kaç sayfa oluşacağını bilmektir,ancak burada dikkat etmeniz gereken bir husus 2 ye bölünmeyen sayıda veri içerebilir veritabanınız,o yüzden $verisay ı 2 ye böldüğünüzde elimize küsüratlı bir rakam geçiyorsa,bunu bir üste yuvarlamaktır,zira şöyle diyebiliriz,21 tane veri oldugunu dusunun veritabanında,2 ye böldüğünüzde 10.5 gibi bir sayı elde edersiniz,ancak bu demek değildir ki 10 sayfa olacak,diğer 1 veriyi de 11.sayfada göstermemiz icap göstermektedir */ /* $geri değişkenine depoladığımız bilgi ise; sayfalandırma yaparken geri butonu özelliğini kazandırmaktır zira her zaman sayılara tıklamak yerine geri ,ileri gibi yapan sayfalandırma yapmak daha mantıklı olacaktır */ $geri=$sayfano-1; ##########Önemli kısım burasıdır ########################################## /* $i değişkeni while döngüsünde şart birinci koşuludur,sayfalandırmada 1.sayfadan başlanacağı için,buraya 1 rakamını yazıyoruz,echo ile başladığımız tablo komutları sayfa td sini yazdıracaktır ve yanına rakamları sıralayacaktır. */ /* if şartıyla sınadığımız eğer sayfano su 1 den buyukse geri butonunu koyuyoruz,cunku 1.sayfada geri butonunu koymak biraz mantıklı olmaz, dolayısıyla bu şart sağlandığında while dongusuyle linklerimizi sıralıyoruz,burada dikkat etmeniz gereken husus,while dongusunde bitim koşulunu 5 ile sınadık,eğer veritabanınızda 10 bilgiden daha az veri varsa burayı küçültmeniz sağlıklı olur, cunku uzun sayfalarda boyle bir sınırlama yapmak ve ileri butonuyla sayfa nosunu belirtmek daha saglıklı olur */ /*elseif şartında hangi sayfada iseniz,o linkin tablosu boyanacaktır,dolayısıyla ziyaretci hangi sayfada oldugunu somut olarak adres satırına bakmadan bilecektir. */ /*else şartıyla da linkleri sıralıyoruz */ /* $i++ dan sonra gelen bölümde ise ;yine bir if şartıyla sayfano nun 5 den buyuk olması durumdan hemen yanında ki bir kutucuga hangi sayfada oldugumuzu artan değerde soyleyen bir değerimizi goreceksiniz,tabi yine dediğimiz gibi bu 5 değeri önemli,standart olarak verilemez cunku,sayfalarınızda ne kadar veri varsa ona gore ayarlıyacaksınız,mesela 2 veri olan bir veritabanında kalkıpta 5 sayfa yapmak mantıklı olmaz */ /* if şartınla sınadığımız sayfano>5 bilgisini exit ile durdurduktan sonra,ki farkediceksiniz zaten komutu çalıştırdığınızda,5inci sayfadan sonra yan tarafta bir tablo acılacak ve sayfa 6 7 gibi değerliri boyalı bir sutunda gösterecektir */ /* en sonda ki değerimiz ise;5 den sonra tum linkleri artırarak goturur. */ /* if(!($sayfano>=$pagination) ile başlayan if şartı satırın da ise; 11 ve 11 den buyuk değerler için ileri butonunu kaldırmaktır,zira en son sayfa da ileri butonu koymak gerekmeyecektir.aynı 1.sayfada geri butonu koymamamız gibi. */ $i=1; echo '<table align="left" border="2"><tr><td valign="top"><b>sayfa</b></td>'; if($sayfano>1) { while ($i<=5) { if(!($sayfano)) { } elseif($sayfano==$i) { echo ' <td bgcolor="#006600"> <a href="?sayfano='.$i.'"><font color="#FFFFFF">'.$i.'</font></a></td>'; } else { } $i++; } if($sayfano>5) { $ileri=$sayfano+1; if(!($sayfano>=$pagination)) { echo '<td> <a href="?sayfano='.$ileri.'">ileri</td>'; } } $ileri=$sayfano+1; echo '<td><a href="?sayfano='.$ileri.'">ileri</td><td><a href="?sayfano='.$pagination.'">en son</a></td></tr></table>'; } ############################################################################# ############## ustteki bilgilerin aynısı burada 1.sayfa için kodlanmıştır###################### /* burada da bir ust komutun aynıları 1.sayfa icin kodlanmıştır,burada maksat,1.sayfa icin geri butonu koymamamızdır */ if($sayfano=1) { while ($i<=5) { if(!($sayfano)) { } elseif($sayfano==$i) { echo ' <td bgcolor="#006600"> <a href="?sayfano='.$i.'"><font color="#FFFFFF">'.$i.'</font></a></td>'; } else { } $i++; } $ileri=$sayfano+1; echo '<td><a href="?sayfano='.$ileri.'">ileri</td><td><a href="?sayfano='.$pagination.'">en son</a></td></tr></table>'; } ?> ############################################################################################### ###################### kOMUTU HİÇ YORUMLARI OKUMADAN NASIL ÇALIŞTIRIRIM############################ /* 16.SATIRDA MYSQL AYARLARINIZI GİRİN ,KULLANICI ADI,VARSAŞİFRENİZ */ /*17.SATIRDA VERİTABANI İSMİNİZİ GİRİN*/ /*55. 59. VE 63. satırlarda tablo ismini ve hangi sutunları sayfalandıracaksınız onları yazın */ /*tablolarınıza en az 10 tane veri girin,eğer tablolarınızda 10 dan az bilgi varsa */ /*134 ,153,ve 199. satırlarda ki 5 rakamını küçültün zira o rakam sayfalandırmada sınır olarak 5 tabloyu her halukarda olusturacaktır,bunu istediğiniz şekilde küçültün*/ /* sayfalandırmanızı eğer her sayfaya 2 şerli değilde (zira bu kod bir örnektir sadece) istediğiniz şekilde yapmak istiyorsanız, 36. 59. 80. satırlarda ki 2 rakamını değiştirin (hepsi aynı olmak zorunda),buna binaen tabi ki 242.satırda da anlattığımız gibi, 5 rakamlarını kucultun,bu kodu çalıştırdığınızda gözünüze çarpacak bir olay dır zaten */ /* ayrıca 55. satırda veritabanında kaç bilgi var onu saymak için örnek olarak id sutunu gösterilmiştir, siz herhangi bir sutunadını da yazabilirsiniz,ama id sutunu genelde her tabloda vardır */ /*59. ve 63. satırlardaki sutun adlarını kendinize gore yazmanızı tekrar hatırlatıyorum */ /* ve son olarak kodu istediğiniz adda kaydedin (ornek:sayfalar.php) calıstırırken,bu bir sadece sayfalandırma oldugu icin sayfalar.php?sayfano=1 yazın... */ /* sorularınızı http://forum.ceviz.net/veri-sayfalandirma-pagination-hazir-kod-t53650.html bu adreste sorabilirsiniz */ ###################################################################################################### /*deathisonitsway@windowslive.com*/ /*güle güle kullanın*/
