Doğru Cevap
-
İ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
Çok teşekkürler12 yıl önce yazılmış -
huseyiniskender
Merhaba berk, anlatımın gayet açıklayıcı olmuş, paylaşım için teşekkür ederim.12 yıl önce yazılmış
-
Cevaplar
-
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.