Mysql de verileri sayfalandırma (pagination)

Ceviz Viki, özgür ansiklopedi

Git ve: kullan, ara

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.

  1. <?php
  2.  
  3. ########## Mysql de verileri sayfalandırma (Pagination) ##########
  4. ########## Tarih:12-01-2008 23:00 ##########
  5. ########## Komutların bir üstü o komutun yorum satırıdır ##########
  6.  
  7. /* Komutlar bittikten sonra nasıl çalıştıracaksınız kolayca,kritik noktaları
  8.   komutların en altında anlatılmıştır */
  9.  
  10.  
  11.  
  12.  
  13. /* Mysql baglantısını yazın */
  14.  
  15.  
  16. mysql_connect ("localhost","kullanici_adi","varsasifre") || die ("mysql hata");
  17. mysql_select_db ("vt_ismi") || die ("vt hata");
  18.  
  19.  
  20.  
  21. /* www.site.com/sayfalar.php?sayfano=1 gibi lir linkten 1 sayısını elde ediyoruz
  22. intval ile ondalıklı sayı olmamasını ve abs ile negatif sayıdan verimizi kurtarıyoruz */
  23.  
  24. /* $limit ise $sorgu değikeninde limit olarak belirlediğimiz veritabanından sayfa no suna göre
  25. bilgileri alacağımızı belirtir,kodu olduğu gibi çalıştırabilmeniz için sizin tarafınızdan değiştirilecek bir şarttır */
  26.  
  27. /* $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ı
  28. bilgileri sayfamıza çekecektir. (*2) olarak belirttiğimiz nesne ise; $sorgu değişkeninde ki
  29. $limit ten sonra gelen sayfamıza kaçarlı olarak bilgi alacağımızı söyleyen bir kriterle aynı olmak zorundadır,
  30. $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,
  31. $sorguda ne belirtilmişse;burada ki çarpım aynı olacaktır. */
  32.  
  33.  
  34.  
  35. $sayfano=(intval(abs ($_GET['sayfano']) ) );
  36. $limit=($sayfano-1)*2;
  37.  
  38.  
  39.  
  40. /* $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
  41. sorgumuz $sorgu değişkenidir,bir üstte anlattığımız gibi. tabloismi sizin sayfalandırma yapacağınız tablo ismidir,doldurulması
  42. zorunludur. */
  43.  
  44. /* $verisay değişkenine mysql_num_rows ile tablomuzda kaç bilgi var depolamış oluyoruz */
  45.  
  46. /* $sorgu; asıl sayfalandırma da işimize yarıyan bu sorgudur; ben burada adi sutuna ait bilgileri
  47. sayfalandırmak istiyorum kendi tablomda,siz kendinize gore hangi sutundaki bilgileri sayfalandırmak
  48. isterseniz o sutun isimlerini yazabilirsiniz,$limit ve diğer sayısal değeri bir ustte ki komutun yorum satırında
  49. anlatılmıştır. tekrarlamak gerekirse $limit sayfa numarasınla gelen bilginin buradaki değerini yansıtır,2 rakamı ise
  50. her sayfaya 2 şer tane bilgi almamızı soyler,keyfinize gore değiştirebilirsiniz daha sonra */
  51.  
  52.  
  53.  
  54.  
  55. $veriler=mysql_query("select id from tabloismi");
  56.  
  57. $verisay=mysql_num_rows($veriler);
  58.  
  59. $sorgu=mysql_query("select sutunadi from tabloismi limit $limit,2");
  60.  
  61. while ($oku=mysql_fetch_assoc($sorgu)) {
  62.  
  63. echo ''.$oku['sutunadi'].'<br>';
  64.  
  65.  
  66. }
  67.  
  68.  
  69. /* $pagination değişkenine depoladığımız sayısal veri $verisay ile veritabanımızda kaç bilgi
  70. 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
  71. oluşacağını bilmektir,ancak burada dikkat etmeniz gereken bir husus 2 ye bölünmeyen sayıda veri
  72. içerebilir veritabanınız,o yüzden $verisay ı 2 ye böldüğünüzde elimize küsüratlı bir rakam geçiyorsa,bunu
  73. bir üste yuvarlamaktır,zira şöyle diyebiliriz,21 tane veri oldugunu dusunun veritabanında,2 ye böldüğünüzde
  74. 10.5 gibi bir sayı elde edersiniz,ancak bu demek değildir ki 10 sayfa olacak,diğer 1 veriyi de 11.sayfada
  75. göstermemiz icap göstermektedir */
  76.  
  77.  
  78.  
  79.  
  80. $pagination=ceil ($verisay/2);
  81.  
  82.  
  83.  
  84.  
  85. /* $geri değişkenine depoladığımız bilgi ise; sayfalandırma yaparken geri butonu özelliğini kazandırmaktır
  86. zira her zaman sayılara tıklamak yerine geri ,ileri gibi yapan sayfalandırma yapmak daha mantıklı olacaktır */
  87.  
  88.  
  89.  
  90. $geri=$sayfano-1;
  91.  
  92. ##########Önemli kısım burasıdır ##########################################
  93.  
  94.  
  95. /* $i değişkeni while döngüsünde şart birinci koşuludur,sayfalandırmada 1.sayfadan başlanacağı
  96. 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
  97. rakamları sıralayacaktır. */
  98.  
  99. /* if şartıyla sınadığımız eğer sayfano su 1 den buyukse geri butonunu koyuyoruz,cunku
  100. 1.sayfada geri butonunu koymak biraz mantıklı olmaz, dolayısıyla bu şart sağlandığında
  101. while dongusuyle linklerimizi sıralıyoruz,burada dikkat etmeniz gereken husus,while dongusunde bitim
  102. 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,
  103. cunku uzun sayfalarda boyle bir sınırlama yapmak ve ileri butonuyla sayfa nosunu belirtmek daha saglıklı olur */
  104.  
  105. /*elseif şartında hangi sayfada iseniz,o linkin tablosu boyanacaktır,dolayısıyla ziyaretci hangi sayfada oldugunu
  106. somut olarak adres satırına bakmadan bilecektir. */
  107.  
  108. /*else şartıyla da linkleri sıralıyoruz */
  109.  
  110. /* $i++ dan sonra gelen bölümde ise ;yine bir if şartıyla sayfano nun 5 den buyuk olması durumdan
  111. hemen yanında ki bir kutucuga hangi sayfada oldugumuzu artan değerde soyleyen bir değerimizi
  112. goreceksiniz,tabi yine dediğimiz gibi bu 5 değeri önemli,standart olarak verilemez cunku,sayfalarınızda ne kadar veri
  113. varsa ona gore ayarlıyacaksınız,mesela 2 veri olan bir veritabanında kalkıpta 5 sayfa yapmak mantıklı olmaz */
  114.  
  115. /* if şartınla sınadığımız sayfano>5 bilgisini exit ile durdurduktan sonra,ki farkediceksiniz zaten komutu
  116. çalıştırdığınızda,5inci sayfadan sonra yan tarafta bir tablo acılacak ve sayfa 6 7 gibi değerliri boyalı bir sutunda
  117. gösterecektir */
  118.  
  119. /* en sonda ki değerimiz ise;5 den sonra tum linkleri artırarak goturur. */
  120.  
  121. /* if(!($sayfano>=$pagination) ile başlayan if şartı satırın da ise; 11 ve 11 den buyuk değerler için
  122. ileri butonunu kaldırmaktır,zira en son sayfa da ileri butonu koymak gerekmeyecektir.aynı 1.sayfada
  123. geri butonu koymamamız gibi. */
  124.  
  125.  
  126.  
  127.  
  128.  
  129. $i=1;
  130. echo '<table align="left" border="2"><tr><td valign="top"><b>sayfa</b></td>';
  131. if($sayfano>1) {
  132. echo '<td><a href="?sayfano='.$geri.'">geri</td>';
  133.  
  134. while ($i<=5) {
  135. if(!($sayfano)) {
  136. echo ' <td> <a href="?sayfano='.$i.'">'.$i.'</a></td>';
  137. }
  138. elseif($sayfano==$i) {
  139. echo ' <td bgcolor="#006600"> <a href="?sayfano='.$i.'"><font color="#FFFFFF">'.$i.'</font></a></td>';
  140.  
  141. }
  142.  
  143. else
  144. {
  145. echo ' <td> <a href="?sayfano='.$i.'">'.$i.'</a></td>';
  146. }
  147.  
  148.  
  149. $i++;
  150.  
  151. }
  152.  
  153. if($sayfano>5) {
  154.  
  155.  
  156. $ileri=$sayfano+1;
  157. echo '<td bgcolor="#006600"><font color="#FFFFFF">sayfa : '.$sayfano.'</font></td>';
  158.  
  159. if(!($sayfano>=$pagination)) {
  160.  
  161. echo '<td>
  162. <a href="?sayfano='.$ileri.'">ileri</td>';
  163.  
  164. }
  165.  
  166. echo '<td><a href="?sayfano='.$pagination.'">en son</a></td></tr></table>';
  167.  
  168. exit();
  169.  
  170. }
  171.  
  172. $ileri=$sayfano+1;
  173. echo '<td><a href="?sayfano='.$ileri.'">ileri</td><td><a href="?sayfano='.$pagination.'">en son</a></td></tr></table>';
  174. exit();
  175.  
  176. }
  177.  
  178.  
  179.  
  180.  
  181. #############################################################################
  182.  
  183.  
  184.  
  185.  
  186. ############## ustteki bilgilerin aynısı burada 1.sayfa için kodlanmıştır######################
  187.  
  188.  
  189.  
  190.  
  191. /* burada da bir ust komutun aynıları 1.sayfa icin kodlanmıştır,burada maksat,1.sayfa icin geri butonu
  192. koymamamızdır */
  193.  
  194.  
  195.  
  196.  
  197. if($sayfano=1) {
  198.  
  199. while ($i<=5) {
  200.  
  201. if(!($sayfano)) {
  202. echo ' <td> <a href="?sayfano='.$i.'">'.$i.'</a></td>';
  203. }
  204. elseif($sayfano==$i) {
  205. echo ' <td bgcolor="#006600"> <a href="?sayfano='.$i.'"><font color="#FFFFFF">'.$i.'</font></a></td>';
  206.  
  207. }
  208.  
  209. else
  210. {
  211. echo ' <td> <a href="?sayfano='.$i.'">'.$i.'</a></td>';
  212. }
  213.  
  214.  
  215.  
  216. $i++;
  217.  
  218. }
  219.  
  220. $ileri=$sayfano+1;
  221.  
  222. echo '<td><a href="?sayfano='.$ileri.'">ileri</td><td><a href="?sayfano='.$pagination.'">en son</a></td></tr></table>';
  223. exit();
  224. }
  225.  
  226.  
  227. ?>
  228.  
  229. ###############################################################################################
  230.  
  231.  
  232. ###################### kOMUTU HİÇ YORUMLARI OKUMADAN NASIL ÇALIŞTIRIRIM############################
  233.  
  234.  
  235. /* 16.SATIRDA MYSQL AYARLARINIZI GİRİN ,KULLANICI ADI,VARSAŞİFRENİZ */
  236.  
  237. /*17.SATIRDA VERİTABANI İSMİNİZİ GİRİN*/
  238.  
  239. /*55. 59. VE 63. satırlarda tablo ismini ve hangi sutunları sayfalandıracaksınız onları yazın */
  240. /*tablolarınıza en az 10 tane veri girin,eğer tablolarınızda 10 dan az bilgi varsa */
  241.  
  242. /*134 ,153,ve 199. satırlarda ki 5 rakamını küçültün zira o rakam sayfalandırmada sınır olarak 5 tabloyu
  243. her halukarda olusturacaktır,bunu istediğiniz şekilde küçültün*/
  244.  
  245. /* sayfalandırmanızı eğer her sayfaya 2 şerli değilde (zira bu kod bir örnektir sadece) istediğiniz şekilde
  246. yapmak istiyorsanız, 36. 59. 80. satırlarda ki 2 rakamını değiştirin (hepsi aynı olmak zorunda),buna binaen tabi ki
  247. 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
  248. dır zaten */
  249.  
  250. /* ayrıca 55. satırda veritabanında kaç bilgi var onu saymak için örnek olarak id sutunu gösterilmiştir,
  251. siz herhangi bir sutunadını da yazabilirsiniz,ama id sutunu genelde her tabloda vardır */
  252.  
  253. /*59. ve 63. satırlardaki sutun adlarını kendinize gore yazmanızı tekrar hatırlatıyorum */
  254.  
  255. /* ve son olarak kodu istediğiniz adda kaydedin (ornek:sayfalar.php) calıstırırken,bu bir sadece sayfalandırma oldugu icin
  256. sayfalar.php?sayfano=1 yazın... */
  257.  
  258. /* sorularınızı http://forum.ceviz.net/veri-sayfalandirma-pagination-hazir-kod-t53650.html bu adreste sorabilirsiniz */
  259.  
  260.  
  261. ######################################################################################################
  262.  
  263.  
  264. /*deathisonitsway@windowslive.com*/
  265.  
  266. /*güle güle kullanın*/