php函数封装完美分页,封装好的PHP分页类,简单好用

本文介绍了一个PHP分页类`Java_Pagination`的实现,该类用于处理数据分页,支持设置当前页、每页大小、总数量等参数。类中包含了获取上一页、下一页按钮的方法,并能智能构建链接,确保查询参数的传递。同时,提供了显示分页链接的功能,方便在前端展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**

* 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 '下一页';

}

else

{

return '

下一页';

}

}

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 '上一页';

}

else

{

return '

上一页';

}

}

if ( $this->_admin )

return '? 上一页';

else

return '';

}

public function get_current_page ()

{

if ( $this->_admin )

return ''.$this->_page.'';

else

return '

'.$this->_page.'';

}

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 ''.$page.'';

}

else

{

return '

'.$page.'';

}

}

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[] = '

...';

}

}

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[] = '

...';

}

$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 '

';

echo '共有'.$this->_total.'条记录';

}

else

{

echo '';

}

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 '';

}

else

{

echo '';

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值