Php ile Verileri Sayfalayalım

Tarih: Haziran 24th, 2009 | Yazar: | Kategori: Php | Etiketler: , , , , , , , , , , | 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 :D . 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;

coded by nessus

“Php ile Verileri Sayfalayalım” yazısında 5 Ahkam var.

  1. 1 jasmine 22:09 on Haziran 24th, 2009 anında kesmiş:

    Tebrikler, oldukça kısa ve temiz kodlar.

  2. 2 Ali Görkem 19:54 on Kasım 11th, 2009 anında kesmiş:

    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…

  3. 3 mustafa 22:37 on Mayıs 28th, 2010 anında kesmiş:

    sorgu("select yorumlar.*, bos_members.memberName from yorumlar inner join bos_members
    on 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?

  4. 4 kadri 14:03 on Eylül 15th, 2010 anında kesmiş:

    güzel ve yararlı bir örnek tşkr

  5. 5 mesut 02:00 on Ocak 21st, 2012 anında kesmiş:

    Bende bu sistemi kullanıyorum anlatım için tşkler.


Ahkam Kesme Aparatı

  • *