멤부아트 페이지네이션

19632 단어 phptutorial
Ketika Saya memiliki banyak data dan itu ditampilkan dalam Web. Hal ini akan menjadi masalah ketika banyak data tersebut berpengaruh pada banyaknya bandwidth atau nilai estetik web. Akhirnya pemberian halaman atau 페이지 매김 itu penting. Berikut 클래스 페이지 매김 sederhana yang mungkin dapat membantu mengerti cara kerja dari 페이지 매김.

페르시아어


  • Mengerti 바가이마나 멩구나칸 Class
  • Fungsi-fungsi php seperti count , max , min , ceil , array_slice , sprintf .
  • 펭구난 $this

  • 1. 콤포넨 세트



    Dalam set komponen dibuat dalam bentuk fungsi, dan komponen-komponen yang diperlukan seperti keterangan halaman berapa $page , jumlah 페이지 달람 $arr_page dan Batasan 항목 dalam satu page $limit , 세페르티 베리쿠트:

        public $page;
        public $limit;
        public $offset;
        public $totalPages;
        public $arr_page;
        public $link;
    
        public function setPager($page, $arr_page, $limit, $link) 
        { 
          $total = count( $arr_page );
          $totalPages = ceil( $total/ $limit );
    
          // proses QC $page input agar dalam batasan range total pages
          $page = max($page, 1);
          $page = min($page, $totalPages);
          $offset = ($page - 1) * $limit;
          if( $offset < 0 ) $offset = 0;
    
          // deklarasi page
          $this->page = $page;
          $this->limit  = $limit;
          $this->offset = $offset;
          $this->totalPages = $totalPages;
          $this->arr_page = $arr_page;
          $this->link = $link;
        }   
    


    2. 아이템 달람 페이지



    Fungsi berikut akan memanfaatkan komponen yang telah diset untuk menentukan items yang akan ikut dimasukan. Dengan memanfaatkan fungsi phparray_slice , fungsi akan memotong array 다리 오프셋 양 디잉기칸 파다 리미트 yang diperlukan.

     public function getArrayPage() 
        { 
            $res_testimony_page = array_slice( $this->arr_page, $this->offset, $this->limit );
            return $res_testimony_page;
        }
    


    3. 멤방군 호출기 Sederhana



    dalam fungsi pembuat conteiner pager ini ada beberapa bentuk, tampilan yang dihasilkan cuba berupa keterangan page dan total page, serta tombol next dan prev. Terlihat seperti << 1/10 >>
     public function getTestiContainerPager()
        {    
          $ret = '<div style="min-width: 300px;">';
          if( $this->totalPages != 0 ) {
    
            // Keterangan page aktif sebelah kiri
            if( $this->page == 1 ) {
              $ret .= '';
            }
            else {
              $ret .= sprintf( '<a href="?' . $this->link . '=%d" style="color: #0f4c75">&#171; prev</a>', $this->page - 1 );
            }
    
            // penunjuk total pages
            $ret .= ' <span><strong>' . $this->page . '</strong> / ' . $this->totalPages . '</span> ';
    
            // Keterangan page aktif sebelah Kanan
            if( $this->page == $this->totalPages ) {
              $ret .= '';
            }
            else {
              $ret .= sprintf( '<a href="?' . $this->link .'=%d" style="color: #0f4c75">next &#187;</a>', $this->page + 1 );
            }
          }
          $ret .= '</div>';
    
          return $ret;
      }
    


    4. 멩구나칸 코드




    $pager = new Pagination();
    $pager->setPager(1,50,10,testi.php);
    $items_page = $pager->getArrayPage();
    $con_pager = $pager->getTestiContainerPager();
    


    완료

    케셀루루한 코드




    class Pagination 
    { 
    
        private $page;
        private $limit;
        private $offset;
        private $totalPages;
        private $arr_page;
        private $link;
    
        public function setPager($page, $arr_page, $limit, $link) 
        { 
          $total = count( $arr_page );
          $totalPages = ceil( $total/ $limit ); 
          $page = max($page, 1);
          $page = min($page, $totalPages);
                $offset = ($page - 1) * $limit;
          if( $offset < 0 ) $offset = 0;
          $this->page = $page;
          $this->limit  = $limit;
          $this->offset = $offset;
          $this->totalPages = $totalPages;
          $this->arr_page = $arr_page;
          $this->link = $link;
        }   
    
        public function getArrayPage() 
        { 
            $res_testimony_page = array_slice( $this->arr_page, $this->offset, $this->limit );
            return $res_testimony_page;
        }
    
        public function getTestiContainerPager()
        {    
          $ret = '<div style="min-width: 300px;">';
          if( $this->totalPages != 0 ) {
            if( $this->page == 1 ) {
              $ret .= '';
            }
            else {
              $ret .= sprintf( '<a href="?' . $this->link . '=%d" style="color: #0f4c75">&#171; prev</a>', $this->page - 1 );
            }
            $ret .= ' <span><strong>' . $this->page . '</strong> / ' . $this->totalPages . '</span> ';
    
            if( $this->page == $this->totalPages ) {
              $ret .= '';
            }
            else {
              $ret .= sprintf( '<a href="?' . $this->link .'=%d" style="color: #0f4c75">next &#187;</a>', $this->page + 1 );
            }
          }
          $ret .= '</div>';
    
          return $ret;
      }
    }
    
    

    좋은 웹페이지 즐겨찾기