• 01-08-2007, 16:46:10
    #1
    Üyeliği durduruldu
    Selam arkadaşlar,
    Ceviz'de görmüştüm Hunter nickli arkadaş paylaşmıştı fakat baya kod karmaşası vardı ve bende oturup sıfırdan sayfalama class'ı yazdım en basit hale indirgedim.

    Sayfala_class.php
    <?php
    class Sayfala{
        public $db_host = 'localhost';
        public $db_user = 'kullanıcı adı';
        public $db_sifre = 'şifreniz';
        public $db_name = 'db adınız';
        public $sayfa_no;
        public $kolon = array();
        public $tablo;
        public $sayfa_sayi;
        public $sorgu;
        public $get;
        
        public function open(){
            $baglanti = @mysql_connect($this->db_host,$this->db_user,$this->db_sifre);
            if(!$baglanti){ die("Database Bağlantısı Sağlanamadı: " . mysql_errno()); }
            $select = @mysql_select_db($this->db_name,$baglanti);
            if(!$select){ die("Database Seçilemedi: " . mysql_errno()); }
            @mysql_query("SET NAMES 'latin5'");
            @mysql_query("SET CHARACTER SET latin5");
            @mysql_query("SET COLLATION_CONNECTION = 'latin5_turkish_ci'"); 
               @mysql_free_result($baglanti);
        }
        function gitsin(){
            $ilk = ($this->sayfa_no - 1) * $this->sayfa_sayi;
            $son = $this->sayfa_no * $this->sayfa_sayi;
            $kolonlar = implode(',', $this->kolon);
            $this->sorgu = "select ".$kolonlar." from ".$this->tablo ." order by ".$this->kolon[0]." asc LIMIT $ilk, $son";
            $sql = @mysql_query($this->sorgu);
            $s = 0;
            while($veri = @mysql_fetch_assoc($sql)){
                $veriler[$s] = $veri;
                ++$s;
            }
            $oran = @mysql_num_rows(@mysql_query("select * from ".$this->tablo));
            $say = ceil($oran / $this->sayfa_sayi);
            for($i=1;$i<=$say;$i++){
                 if($this->sayfa_no == $i){ 
                     $sayi .= "<b>[$i]</b>";
                 }else{
                     $sayi .= "&nbsp;<a href='$this->get=$i'>[$i]</a>&nbsp;"; 
                 }
            }
            $veriler[count($veriler)+1] = $sayi;
            return $veriler;
        }
    }
    ?>
    Test.php
    <?php
    include("deneme_class.php");
    $sayfala = new Sayfala();
    $sayfala->open();
    $sayfala->sayfa_no=intval($_GET['sayfa']); // sayfa numaramızı belirttik
    if(empty($_GET['sayfa']) || !intval($_GET['sayfa'])){ $sayfala->sayfa_no=1; }
    $sayfala->kolon[0] = "kolon1"; 
    $sayfala->kolon[1] = "kolon2";
    $sayfala->kolon[2] = "kolon3";
    #...
    $sayfala->tablo = "tabloadi";
    $sayfala->sayfa_sayi = 100; //listelenecek veri adedi
    $sayfala->get = "?sayfa"; //Get ile alınan değişken başka değişkenleriniz varsa onlarıda yazabilrsiniz örneğin ?test=0&ahmet=a&sayfa gibi ama en sona mutlşaka sayfa numarasını barındıracak değişken ismi gelmeli
    $veriler = $sayfala->gitsin();
    #print_r($veriler);
    for($i=0;$i<count($veriler)-1;$i++){
        for($j=0;$j<count($veriler[$i]);$j++){
            echo $veriler[$i][$sayfala->kolon[$j]]."<br />"; //verileri listeler ikinci for tek satırı simgeler her girişinde bir satırdaki verileri getirir.
        }
    }
    echo $veriler[count($veriler)]; // numaraları listeler
    
    ?>
  • 01-08-2007, 17:26:12
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    tam olarak ne işe yaradığını anlatırmısın ?
  • 01-08-2007, 17:41:55
    #3
    Üyeliği durduruldu
    Diyelim 10 bin tane veriniz var bunları 1.000'erli şekilde yaymak ve sayfalamak istiyosunuz ilk sayfada ilk bin veri sonraki sayfada ikinci bin veri sonraki sayfada üçünvü bin veri vs. şeklinde, o zaman bu class'ı kullanarak verilerinizi rahatlıkla sayfalayabilirsiniz.(bu sitede konuların/mesajların sayfalandığı gibi)
  • 03-08-2007, 23:38:23
    #4
    Üyeliği durduruldu
    peki veriyi mysql kullanmadan klasör icinden cekiyor ise nasıl yapacaz? mesela /askim/ klasörü icindeki resimleri çekerek listeliyor (askim klasöründe 500 resim varsayalım) ama bu resimin her sayfada 50 tane olması şartıyla nasıl sayfalayabiliriz?
  • 04-08-2007, 00:07:13
    #5
    Üyeliği durduruldu
    # coded by Lisans
    class Sayfala{
     public $dizin;
     public $sayfa_no;
     public $sayfa_sayi;
     public $veriler = array();
    
      function Sayfala($dizin){
          $this->dizin = $dizin;
          if (is_dir($this->dizin)) {
        if ($dh = opendir($this->dizin)) {
            while (($file = readdir($dh)) !== false) {
              if($file == "." || $file == ".."){continue;} 
                 $this->veriler[] = $file;
            } //while
            closedir($dh);
        } //if
       } //if is_dir
      } //funct.
      function Gitsin(){
        $getir = array();
        $ilk = ($this->sayfa_no - 1) * $this->sayfa_sayi;
        $son = $this->sayfa_no * $this->sayfa_sayi; 
         for($i=$ilk;$i<$son;$i++){
            $getir[] = $this->veriler[$i];
         }
        return $getir;
      }
    }
    Kullanımı
    $dizin = ''; //buraya dizinini gir
    $sayfala = new Sayfala($dizin);
    $sayfala->sayfa_no=intval($_GET['sayfa']); // sayfa numaramızı belirttik
    if(empty($_GET['sayfa']) || !intval($_GET['sayfa'])){ $sayfala->sayfa_no=1; }
    $sayfala->sayfa_sayi = 50; //bir sayfada gözükecek veri sayısı
    $veriler = $sayfala->Gitsin();
    foreach($veriler as $key => $value){
      echo "<img src='./$value' alt='' /><br />";
    }
    Şimdi yazdım kodları denemedim ama.
  • 04-08-2007, 00:11:07
    #6
    Üyeliği durduruldu
    denicem teşekkürler Lisans.
  • 04-08-2007, 17:14:54
    #7
    Üyeliği durduruldu
    Test.php yi bi yere entegre falan mı edicez.Nasıl yapıcaz.
  • 04-08-2007, 17:33:30
    #8
    Üyeliği durduruldu
    Hayır sayfala_class.php oluştur class'ı oraya kopyala yapıştır.
    test.php'deki kodları sayfana yapıştır. Yanlız include("deneme_class.php"); yerine include("Sayfala_class.php"); yap kolon kısmına sayfalama esnasında sıralanacak verlerin bulunduğu kolon'un ismini yaz tablo kısmınada tablo ismini yazman gerekli.
  • 04-08-2007, 22:12:47
    #9
    paginator kullaniyorum onu da 1 deneyin