• 12-08-2009, 23:43:31
    #1
    Merhaba arkadaşlar veri tabanımda video isimli bir tablom var, bu tablomun içinde ise id,title,read_count,saat,tarih diye alanlarım.
    bu tablomda çok sayıda veri var ve liste uzadıkça uzuyor liste uzadıkçada listeleme yapan sayfada ağırlaşıyor. bu tablodan galan verileri her sayfasında 20 satır olacak şekilde listelemek istiyorum. R10 PHP Kütüphanesinin son sayfasında ismailperim nickli arkadaşın hazırlayıp paylaşıma sunduğu aşağıdaki kodlarla istediğim şeyi yaklaşık 2 gün yapmak için uğraştım ama işin içinden bir türlü çıkamayıp son çare olarak konu açmaya karar verdim ustalarımdan konuyla ilgili yardım rica ediyorum. cevap yazarak yardımcı olan veya öneride bulunan arkadaşlarada şimdiden teşekkür ederim...
    sayfalama.php
    <?php 
    ////////////////////////////////////////////////////
    //                                                                                                  
    //    Code By İsmail Perim                                                 
    //    Dosya                : /sayfalama.php
    //    Açıklama            : Sayfalandırma Sınıfı
    //                            
    ////////////////////////////////////////////////////
    class Sayfalama
    {
        public $KayitSayisi = 10;
        public $Sorgu = "";
        public $ToplamKayit = "";
        public $Linkler = "";
        public $Sayfa = "";
        public function Sayfalama($_Sorgu,$_TopKay,$_Sayfa,$_KayitSayisi=10)
        {
            $this->KayitSayisi = $_KayitSayisi;
            $this->Sorgu = $_Sorgu ;
            $this->ToplamKayit = $_TopKay;
            $this->Sayfa = $_Sayfa;
        }
        public function Olustur()
        {
                $adet=15;
                if($_GET['sayfa']==0)
                {
                    $_GET['sayfa']=1;
                    $sayfa=0;
                    $kayit=0;
                }
                elseif($_GET['sayfa']==1)
                {
                    $sayfa=0;
                    $kayit=0;
                }
                else
                {
                    $sayfa=$_GET['sayfa'];
                    $kayit=($sayfa*$adet-$adet);
                }
                $sorgu_temp = $this->Sorgu."   LIMIT $kayit,$adet  ";
                $this->Sorgu=mysql_query($sorgu_temp);
                #######################   LİNKLER  #######################
                        $sonraki=$_GET['sayfa']+1;
                        $onceki=$_GET['sayfa']-1;
                                            if($onceki>0)
                        {
                            $this->Linkler.='<a href="?'.$this->Sayfa.'sayfa='.$onceki.' " style="text-decoration:none;"> [ Önceki ] </a>';
                        }
                        $say=$this->ToplamKayit;
                        $link=ceil($say/$adet);
                        $nokta=0;
                        $nokta1=0;
                        for($i=1;$i<$link+1;$i++)
                        {
                            if($i<$sayfa+6 && $i>$sayfa-6)
                            {
                                if((int)$sayfa==$i)
                                {
                                    $this->Linkler.='<b>';
                                }
                                $this->Linkler.='<a href="'.$this->Sayfa.'sayfa='.$i.'" style="text-decoration:none;"> ['.$i.'] </a>';
                                if((int)$sayfa==$i)
                                {
                                    $this->Linkler.='</b>';
                                }
                            }    
                            else
                            {
                                if( $i<$sayfa+6 && $nokta== 0)
                                {
                                    $this->Linkler.=  '<a href="'.$this->Sayfa.'sayfa='.($sayfa-5).' " style="text-decoration:none;"> [ ... ] </a>';
                                    $nokta = 1;
                                }    
                                if( $i>$sayfa-6 && $nokta1== 0)
                                {
                                    $this->Linkler.=  '<a href="'.$this->Sayfa.'sayfa='.($sayfa+5).' " style="text-decoration:none;"> [ ... ] </a>';
                                    $nokta1 = 1;
                                }    
                            }
                        }
                        if($sonraki<$link+1)
                        {
                            $this->Linkler.='<a href="'.$this->Sayfa.'sayfa='.$sonraki.' " style="text-decoration:none;"> [ Sonraki ] </a>';
                        }
                #######################  / LİNKLER #######################
        }
    }
    ?>
    sayfalama_ornek.php
    <?php
    ////////////////////////////////////////////////////
    //                                                                                                  
    //    Code By İsmail Perim                                                 
    //    Dosya                : /sayfalama_ornek.php
    //    Açıklama            : Sayfalandırma Sınıfı Örneği
    //                            
    ////////////////////////////////////////////////////
    # Sayfalama Sınıfımızı Ekliyoruz
    include_once "sayfalama.php";
    # MySQL Bağlantılarını Yaptığımız Sayfamız
    include_once "baglanti.php";
    # Toplam Kayıt Sayısını Alıyoruz.
    $KayitSayisi = mysql_num_rows(mysql_query("SELECT * FROM Tablo"));
    #Bir Sayfada Gösterilecek Kayıt Sayısı
    $KacKayit = 15;
    # Yeni Bir Sayfalama Sınıfı Türetiyoruz
    $Sayfa = new Sayfalama("SELECT * FROM Tablo ",$KayitSayisi,"index.php?Islem=KayitListe&",$KacKayit);
    # Sınıfımız Gerekli İşlemleri Yaparak Sorguları Sayfalandırmaya Uygun Hale Getiriyor
    $Sayfa->Olustur();
    # Oluşan Sayfa Linklerini Ekrana Bastırıyoruz
    echo $Sayfa->Linkler;
    # Sayfalandırma Sonucu Uygun Hale Getirilen Sorgumuzu İşlemlerimiz İçin Kullanıyoruz.
    while($Veri = mysql_fetch_array($Sayfa->Sorgu))
    {
         #... İşlemlerimiz ... #
    }
    ?>
    NOT: Aşağıdaki kodlar R10 ismailperim nickli üyenin paylaşıma sunduğu kodlardan alıntı yapılmıştır...
  • 13-08-2009, 01:17:25
    #2
    Üyeliği durduruldu
    Ben çok basit bir şekilde kendim yaptım.Mantığını anlatıyım kendiniz yapabilirsiniz.
    İlk olarak bir sayfada kaç veri görmek istiyorsak bunu belirmeliyiz(bir değişkene atayalım.örneğin $maximum).

    $maximum = 10;
    Daha sonra get ile gene sayfa bilgilerini çekelim.

    $sayfa = @$_GET["sayfa"];
    Şimdi can alıcı noktam
     
    if($sayfa==""){ //sayfa boş ise verileri çek ama $maximum ile sınırla
    //buraya mysql kodları
    //burayada bastırma kodları
    }
    eğer sayfa boş değilse sayfalamamız lazım
    örneğin


    örneğin sayfa 3 ise

     
    if($sayfa!=""){ //sayfa boş değilse yaptım şimdide
    //buraya mysql kodları
    //burayada bastırma kodları
    }
     
    $goster=$maximum*$sayfa;
    $toplamgoster=$goster-$maximum;
    örneğin sayfamız 3 ve bir sayfada 10 yazı göstermek istiyorum o zaman 10 ile 3 ü çarpıyoruz yani 30.veriye kadar çekiyoruz ama 0'dan 30'a kadar değil 20'den 30'a kadar çekmemiz lazım.O zaman 30'dan bir sayfada göstermemiz gereken(10 yapmıştık) veriyi çıkartıyoruz.Şimdi ne oldu 20. satırdan itibaren 30. satıra kadar göster oldu.

    LIMIT $toplamgoster,$goster

    Kendi bildiğim kadar anlattım.Bende yeni yeni öğreniyorum php'yi mantık kullanark yaptım umaraım faydalı olabilmişimdir