簡單好用的PHP分頁類
class Pagination 獨立分頁類
調用方式:
$pagenation = new Pagination( 4, 10, 200 ); // 4(第一個參數) = currentPage, 10(第二個參數) = pageSize, 200(第三個參數) = 總數
$pagenation->set_link( 'http://www.baiduhome.net' );
$pagenation->show();
<?php
/**
* class Pagination
*
* 獨立分頁類
* 調用方式:
* $pagenation = new Pagination( 4, 10, 200 ); // 4(第一個參數) = currentPage, 10(第二個參數) = pageSize, 200(第三個參數) = 總數
* $pagenation->set_link( 'http://www.360hqb.com' );
* $pagenation->show();
*/
class Java_Pagination
{
protected $_total = 0;
protected $_total_page = 0;
protected $_page = 1;
protected $_page_size = 10;
protected $_link = '';
protected $_grep = 3;
protected $_admin = false;
protected $_css_next = 'next-page';
protected $_css_prev = 'prev-page';
protected $_css_curr = 'curr-page';
protected $_css_page = 'page-nav inline-block';
public function __construct ( $page, $page_size, $total, $admin = false )
{
$this->set_current_page( $page );
$this->set_page_size( $page_size );
$this->set_total( $total );
if ( $admin )
{
$this->_admin = $admin;
}
//$this->_link = $_SERVER['REQUEST_URI'];
$this->set_link( $_SERVER['REQUEST_URI'] );
}
public function set_link ( $link, $is_shop = TRUE )
{
$len = strlen( $link );
$substr = substr( $link, $len - 1 );
if ( '&' == $substr )
{
$link = substr( $link, 0, $len - 1 );
}
$pos = strpos( $link, '?' );
if ( $pos )
{
$link = substr( $link, 0, $pos );
}
if ( !empty( $_GET ) )
{
$link .= '?';
foreach ( $_GET as $k=>$v )
{
if ( 'page' == strtolower( $k ) )
{
continue;
}
$link .= $k.'='.$v.'&';
}
$len = strlen( $link );
$substr = substr( $link, $len - 1 );
if ( '&' == $substr )
{
$link = substr( $link, 0, $len - 1);
}
}
elseif ( isset( $_SERVER['QUERY_STRING'] ) AND !empty( $_SERVER['QUERY_STRING'] ) AND $is_shop )
{
$link .= '?'.$_SERVER['QUERY_STRING'];
$len = strlen( $link );
$substr = substr( $link, $len - 1 );
if ( '&' == $substr )
{
$link = substr( $link, 0, $len - 1);
}
}
$this->_link = $link;
}
public function set_page_size ( $page_size )
{
if ( empty( $page_size ) )
{
$this->_page_size = 10;
}
else
{
$this->_page_size = (int) $page_size;
}
}
public function set_total ( $total )
{
$page_size = empty( $this->_page_size )?10:$this->_page_size;
$this->_total = $total;
if ( 0 == ( $total % $page_size ) )
{
$this->_total_page = intval( $total / $page_size );
}
else
{
$this->_total_page = intval( $total / $page_size ) + 1;
}
if ( $this->_page > $this->_total_page )
{
$this->_page = $this->_total_page;
}
}
public function set_current_page ( $page )
{
if ( empty( $page ) )
{
$this->_page = 1;
}
else
{
$this->_page = (int) $page;
}
}
public function get_next_page_btn ()
{
if ( $this->_page < $this->_total_page )
{
$link = '';
if ( strpos( $this->_link, '?' ) )
{
$link = $this->_link.'&page='.( $this->_page + 1 );
}
else
{
$link = $this->_link.'?page='.( $this->_page + 1 );
}
if ( $this->_admin )
{
return '<a href="'.$link.'">下一頁</a>';
}
else
{
return '<li class="'.$this->_css_next.'"><a href="'.$link.'">下一頁</a></li>';
}
}
if ( $this->_admin )
return '下一頁 ?';
else
return '';
}
public function get_prev_page_btn ()
{
if ( $this->_page > 1 )
{
$link = '';
if ( strpos( $this->_link, '?' ) )
{
$link = $this->_link.'&page='.( $this->_page - 1 );
}
else
{
$link = $this->_link.'?page='.( $this->_page - 1 );
}
if ( $this->_admin )
{
return '<a href="'.$link.'">上一頁</a>';
}
else
{
return '<li class="'.$this->_css_prev.'"><a href="'.$link.'">上一頁</a></li>';
}
}
if ( $this->_admin )
return '? 上一頁';
else
return '';
}
public function get_current_page ()
{
if ( $this->_admin )
return '<strong>'.$this->_page.'</strong>';
else
return '<li class="'.$this->_css_curr.'"><a class="selected" href="javascript:void(0)">'.$this->_page.'</a></li>';
}
public function get_page_link ( $page )
{
$link = '';
if ( strpos( $this->_link, '?' ) )
{
$link = $this->_link.'&page='.$page;
}
else
{
$link = $this->_link.'?page='.$page;
}
if ( $this->_admin )
{
return '<a href="'.$link.'">'.$page.'</a>';
}
else
{
return '<li><a href="'.$link.'">'.$page.'</a></li>';
}
}
public function get_prev_pages ()
{
$pages = array();
$begin = $this->_page - $this->_grep;
if ( $begin < 1 )
{
$begin = 1;
}
elseif ( $begin > 2 )
{
$pages[] = $this->get_page_link( 1 );
if ( $this->_admin )
{
$pages[] = ' ... ';
}
else
{
$pages[] = '<li>...</li>';
}
}
elseif ( $begin == 2 )
{
$pages[] = $this->get_page_link( 1 );
}
for ( $i = $begin; $i < $this->_page; $i++ )
{
$pages[] = $this->get_page_link( $i );
}
return $pages;
}
public function get_next_pages ()
{
$pages = array();
$begin = $this->_page + 1;
if ( $begin < $this->_total_page )
{
$end = $begin + $this->_grep;
if ( $end > $this->_total_page )
{
$end = $this->_total_page;
}
for ( $i = $begin; $i < $end; $i++ )
{
$pages[] = $this->get_page_link( $i );
}
if ( $i < $this->_total_page )
{
if ( $this->_admin )
{
$pages[] = ' ... ';
}
else
{
$pages[] = '<li>...</li>';
}
$pages[] = $this->get_page_link( $this->_total_page );
}
else
{
$pages[] = $this->get_page_link( $this->_total_page );
}
}
elseif ( $begin == $this->_total_page )
{
$pages[] = $this->get_page_link( $this->_total_page );
}
return $pages;
}
public function show ()
{
if ( $this->_total_page <= 1 )
{
return;
}
if ( $this->_admin )
{
echo '<p class="pagination">';
echo '<span>共有'.$this->_total.'條記錄</span>';
}
else
{
echo '<ul class="'.$this->_css_page.'">';
}
echo $this->get_prev_page_btn();
$prev_pages = $this->get_prev_pages ();
if ( !empty( $prev_pages ) )
{
foreach ( $prev_pages as $page )
{
echo $page;
}
}
echo $this->get_current_page();
$next_pages = $this->get_next_pages ();
if ( !empty( $next_pages ) )
{
foreach ( $next_pages as $page )
{
echo $page;
}
}
echo $this->get_next_page_btn();
if ( $this->_admin )
{
echo '</p>';
}
else
{
echo '</ul>';
}
}
} 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!