看板 Mesak
作者 標題 [PHP] 純分頁程式
時間 2015年02月10日 Tue. PM 04:43:41
程式截取自 CodeIgniter Pagination
function pagination($total_rows = 0, $per_page = 0, $cur_page = 0)
{
}
{
$num_links = 2;
$result = FALSE;
if ($total_rows == 0 OR $per_page == 0)
{
return '';
}
$base_page = 0 ;
$num_pages = ceil($total_rows / $per_page);
if ($num_pages == 1)
{
return '';
}
$cur_page = (int)$cur_page;
if ($cur_page > $total_rows)
{
$cur_page = ($num_pages - 1) * $per_page;
}
$uri_page_number = $cur_page;
//echo ($cur_page/$per_page);
$cur_page = floor(($cur_page/$per_page) + 1);
$start = (($cur_page - $num_links) > 0) ? $cur_page - ($num_links - 1) : 1;
$end = (($cur_page + $num_links) < $num_pages) ? $cur_page + $num_links : $num_pages;
$result = array();
if( $cur_page > ($num_links + 1))
{
$result[] = array('num'=> '1','statu' => 'first');
}
if( $cur_page != 1)
{
$i = $uri_page_number - $per_page;
if ($i == 0 )
{
$result[] = array('num'=> '1','statu' => 'prev');
}
else
{
$i = ($i == 0) ? '' : $i;
$result[] = array('num'=> '1','offset'=> $i,'statu' => 'prev');
}
}
for ($loop = $start -1; $loop <= $end; $loop++)
{
$i = ($loop * $per_page) - $per_page;
if ($i >= $base_page)
{
$page = array('num'=> $loop,'statu' => '');
if ($cur_page == $loop)
{
$page['statu'] = 'active';
}
else
{
$n = ($i == $base_page) ? '' : $i;
if ($n == '' )
{
$n = ($n == '') ? '' : $n;
$page['offset'] = 0;
$page['statu'] = '1';
}
else
{
$n = ($n == '') ? '' : $n;
$page['offset'] = $n;
}
}
$result[] = $page;
}
}
if ($cur_page < $num_pages)
{
$i = ($cur_page * $per_page);
$result[] = array('num'=> '1','statu' => 'next','offset'=>$i);
}
// Render the "Last" link
if ( ($cur_page + $num_links) < $num_pages)
{
$i = (($num_pages * $per_page) - $per_page);
$result[] = array('num'=> '1','statu' => 'last','offset'=>$i);
}
return $result;
}
@list($url, $qs) = explode("?", $url, 2);
if( !is_null($qs) ){
}else{
}
先把網址拆成參數以及網址。
function build_url( $url , $args = array() )
{
}
//$offset 以位移數為主,不以頁面號碼設計,如果要設計頁面號碼可直接參照 CI 的程式
$pages = pagination($total, $limit, $offset);
if( is_array($pages) )
{
}
if( !is_null($qs) ){
parse_str($qs, $url_query);
}else{
$url_query = array();
}
先把網址拆成參數以及網址。
function build_url( $url , $args = array() )
{
if( is_array($args) && count($args)) {
return $url .'?'.http_build_query($args);
}
return $url;
}
//$offset 以位移數為主,不以頁面號碼設計,如果要設計頁面號碼可直接參照 CI 的程式
$pages = pagination($total, $limit, $offset);
if( is_array($pages) )
{
$output = '<ul>';
foreach($pages as $page)
{
$title = $page['num']; //頁數
if( isset( $page['offset'] ) )
{
$url_query['offset'] = $page['offset'];
}else{
unset( $url_query['offset'] );
}
$page_url = build_url( $url , $url_query ); //下一頁網址
if( $page['statu'] == 'active' )
{
$link = $title; //目前該頁
}else{
if($page['statu'] != '')
{
$title = $page['statu']; //上一頁下一頁等
}
$link = '<a href="'.$page_url.'">' . $title . '</a>';
}
$output .= '<li>'.$link.'</li>'; //項目
}
$output .= '</ul>';
echo $output;
}
--
※ 作者: mesak 時間: 2015-02-10 16:43:41
※ 看板: Mesak 文章推薦值: 0 目前人氣: 0 累積人氣: 262
回列表(←)
分享