Php ile Verileri Sayfalayalım
Tarih: Haziran 24th, 2009 | Yazar: Ertuğrul Erkan | Kategori: Php | Etiketler: mysql, php, php listeleme, php sayfalama, php veri sayfalama, php veritabanı, sayfalama, sayfalama sınıfı, sayfalama yapmak, verileri listeleme, veritabanı | 5 Yorum »Selam arkadaşlar. Bugün sizlere veritabanından alınan verini nasıl sayfalandığını anlatacağım. Aslında çok basit bir matematiksel işlem ile yapılıyor. Genelde ben bütün sistemlerimde burada anlatacağım yöntemi kullanıyorum. Fakat bunun üzerine birçok sınıf yazılmış durumda. İsteyen kişiler olursa tekrar belirtebilirim…
Verileri sayfalama konusundan önce tam olarak bir açıklama yapalım. Arkadaşlar veritabanına bağlanacağız ve verileri alacağız. Eğer ki verilerimiz 10 taneden ( veya sizin belirlediğiniz bir sayı ) fazla ile yeni bir sayfa yaratılacak. Böylece he sayfada sadece 10 adet veri ile düzen sağlanmış olacak. Bunun yanında birden fazla işlemden de kurtulmuş olacağız…
Öncelikle arkadaşlar kodlarımızı verelim;
<?php
$sayfa = $_GET["sayfa"];
if(empty($sayfa)) $sayfa=1;
$sayfalik_kayit = 10;
$toplam_kayit = mysql_query("SELECT count(*) FROM yazilar");
$toplam_sayfa = ceil($toplam_kayit/$sayfalik_kayit);
if($sayfa>$toplam_sayfa) $sayfa=1;
$baslangic = (($sayfa*$sayfalik_kayit)-$sayfalik_kayit);
$al = $sayfa * $sayfalik_kayit;
$yazilar = mysql_query("SELECT * FROM videolar order by id desc limit $baslangic,$al");
//verileri yazdır
?>
Evet gördüğünüz gibi bu şekilde. Öncelikle arkadaşlar adres satırından sayfa değişkenini alıyoruz. Sonra bakıyoruz; eğer herhangi bir veri atanmamışsa 1 e eşitliyoruz. Burada işlemlerin problem çıkartmaması için kontrol ediliyor. Sonra bir sayfada kaç adet veri olacağını belirtiyoruz. Ardından toplam veriler alınıyor. Sonra; toplam veri sayısı ile bir sayfada olacak verilerin bölümü elde ediliyor. Yani veritabanında 25 veri var; 25/10′ dan 2.5 yapıyor. Fakat ceil yani bir üste yuvarla ile 2.5 -> 3 e yuvarlanıyor. Böylece toplam sayfa elde ediliyor. Sonrasında yukarıdan alınan sayfa toplam sayfadan fazla mı diye bakılıyor. Eğer fazla ise tekrar 1 e eşitleniyor. Burada önemli olan sayfanın herhangi bir suistimale uğramaması.
Sonra olarak kaçtan kaça verinin alınacağı öğreniliyor. Yani arkadaşlar 25 adet veri varsa;
Birinci sayfada;0-10
İkinci sayfada;10-20
Üçüncü sayfada;20-25
arası çekiliyor. İşte kaçla kaç arasında ilk sayı bulunuyor. Ardından bu dizilimde ikinci sayı bulunuyor ve veritabanından ikisi arasındaki veriler çekilip yazdırılıyor. Kodlar ise index.php?sayfa=n yapıldığı sürece istenilen sayfa şeklinde çalışıyor…
Bazı arkadaşlar sayfaları yazdırmak isteyecektir ki bu zaten mantıklı olan
. O zaman liste kutusu ( combobox ) şeklinde yapmalarını öneriyorum;
<?php
$echo .= "<div id='sayfa'><a href='?s=1'>Ilk Sayfa</a> <select onchange=\"location='?s='+this.value\">\n";
for($i=0;$i<$toplam_sayfa; $i++){
$sayfa_no = $i+1;
$sec = ($sayfa_no==$sayfa) ? " selected" : "";
$echo .= "<option value=\"$sayfa_no\" $sec>Sayfa $sayfa_no</option>\n";
}
$echo .= "</select> <a href='?s=".$toplam_sayfa."'>Son Sayfa</a></div>";
echo $echo;
?>
;
Arkadaşlar burada ise sayfalar şu şekilde; 1 [combobox] n oluyor. Sayfalar listeye yazdırılıyor. Kişi seçtiği anda adres satırına veriler yollanıyor. Tabi istenilen sayfada bu sayede açılıyor…
Şimdilik hoşçakalın.
Herkese iyi günler, iyi çalışmalar…
Benzer Yazılar;
- Php ve Mysql İle Yönetim Paneli
- Php ve Mysql İle Yazı Ekle/Oku Paneli
- Blog Sistemi Yapalım - 1
- Php de Kullanıcıyı Belirli Bir Süre Bekletmek
- Görsel Ders: Php İle Mysql İşlemleri

Tebrikler, oldukça kısa ve temiz kodlar.
Bu koda benzer bir kodu ilk php sistemimde kullanmışdım(kodu ben kendi kendime yazmışdım)sonra gerekmedi hiç tesadüfen gördüm bu konuyuda.Gelecek nesnel programlama ile ilgili yazınızda bize örnek olacak bir sayfalama sınıfı yazmayı anlatmanızı rica ediyorum…
sorgu("select yorumlar.*, bos_members.memberName from yorumlar inner join bos_memberson yorumlar.yoruye=bos_members.ID_MEMBER
where yorumlar.nesneno='$nesneno' and yorumlar.yoryer='$yoryer'");
$yorsayi = mysql_num_rows($yorsql);
if($yorsayi == "0") {
echo 'Bu İçeriğe Henüz Yorum Eklenmemiş';
} else {
while($yorcek = mysql_fetch_assoc($yorsql)) {
?>
<a href="./forum/index.php?action=profile;u=">
anlattığınız sayfalama örneğine göre yukarıdaki kodları nasıl entegre etmeliyim?
güzel ve yararlı bir örnek tşkr
Bende bu sistemi kullanıyorum anlatım için tşkler.