Kodları lütfen aşağıdaki butonları kullanarak renklendirin. Örnek: <php> echo "Selam Dünya"; </php>
Yardım
karakter kaldı

Php İle sayfalama mantığı

Php de birçok şeyi halledebiliyorum. ancak şu sayfalama mantığını bir türlü tam anlamıyla çözemedim arkadaşlar. yapıyorum bir sayfalama ama tam bir verim alamadım şimdiye kadar. şimdiden teşekkürler.
+0
-0
Cevaba KatılıyorumKatılmıyorum
Cevap Yaz Yorum Yaz Arşivime Ekle Takip Et

Doğru Cevap

  • 8
    berk adlı üyenin fotoğrafı
    10 yıl önce yazılmış
    10 cevap - 1 soru
    İlk önce kaç sayfaya ayrılacağının hesaplanması gerek. Bunun için mysql_num_rows fonksiyonu kullanılıyor. Örneğin:

    $sql = mysql_query("select * from tablo");
    $sayfa_sayisi = (mysql_num_rows($sql) / 10) + 1;
    


    Burada sayfa sayısını bulduk. Her sayfada 10 eleman listelenecek. Daha kesin bir sayfa sayısı için mysql_num_rows'tan dönen sayının 10 ile bölümünden kalana göre kodda yazdığım "+ 1" kısmı eklenmeyebilir. Kod bu haliyle, 10 ve 10'un katları sayıda eleman dönerse sql sorgumuzdan, bir sayfa fazla gösterecektir.

    Kullanıcının kaçıncı sayfaya gideceğini bilmek için GET yöntemiyle "sayfa" adında bir değişken alalım. Kullanıcı altta bulunan sayfa numaralarından 5'e tıkladığında GET ile sayfa değişkenine 5 atansın yani.

    if($_GET["sayfa"])
    $sayfa = ($_GET["sayfa"] - 1) * 10;
    else
    {
    	$sayfa = 0;
    }
    


    Burada tanımladığım sayfa değişkeni, veritabanından kayıtları çekmeye kaçıncı sıradan başlandığını tutacak. Örneğin kullanıcı 5. sayfaya gidince GET'ten gelen 5 değeri. Ben bu değerden 1 çıkarıp 10 ile çarparsam 40 bulurum. Bu da demek oluyor ki 5. sayfada 40 ile 50 arasındaki kayıtları göstereceğiz. Onu da şu sql sorgusuyla hallediyoruz.

    $sql = mysql_query("select * from tablo limit $sayfa, 10");
    


    Buradaki $sayfa, kaçıncı kayıttan başlanacağı, 10 ise kaç kayıt çekileceği.

    Sayfanın altında da daha önceden bulduğumuz sayfa sayısı kadar for ile döndürüp her seferinde sayfa numarasına ilgili linki vererek altta tıklanabilir sayfalar oluşturuyoruz.

    for($i = 1 ; $i <= $sayfa_sayisi ; $i++)
    { ?>
    <a href="?sayfa=<?php print $i; ?>"><?php print $i; ?></a> 
    <?php } ?>
    
    


    Onu da yukarıdaki kodda göstermeye çalıştım.

    Yukarıdaki yöntemi kullandığım bir script için: http://www.berkbaykal.com/web-projelerim/soru-sor
    sitemdeki şu scripti inceleyebilirsiniz.
    • camcicarsi adlı üyenin fotoğrafı camcicarsi
      Çok teşekkürler
      10 yıl önce yazılmış
    • huseyiniskender adlı üyenin fotoğrafı huseyiniskender
      Merhaba berk, anlatımın gayet açıklayıcı olmuş, paylaşım için teşekkür ederim.
      10 yıl önce yazılmış

Cevaplar

  • zysistem adlı üyenin fotoğrafı
    7 yıl önce yazılmış
    1 cevap - 0 soru
    Merhabalar sevgili hocam,

    Şu an yapıyor olduğum bir site için Sayfalama kullanmam gerekiyor bu konu hakkında yardımcı olabilirmisiniz.

    Listeleme için kullandığım kod;

    <?php
                    $HizmetlerSor = mysql_query("SELECT * FROM ".$Prefix."hizmetler WHERE HizmetDurum='1' && KategoriID='6'");
    						while($HizmetlerYaz = mysql_fetch_assoc($HizmetlerSor)){
    						$HizmetAdi 			= substr($HizmetlerYaz['HizmetAdi'],0,180);
    						$HizmetResim 		= $HizmetlerYaz['HizmetResim'];
    						$HizmetAciklama 	= substr(strip_tags($HizmetlerYaz['HizmetAciklama']),0,150).'..';
    						$HizmetSeo			= $HizmetlerYaz['SeoLink'];
    				?>
    


    Her eklediğim içerik sayfayı malum uzatıyor. Bunu nasıl çözebilirim,

    Şimdiden teşekkür ederim.