詳細については、http://qxblog.sinaapp.com/?p=100 を参照してください。
- //$count はエントリの総数、$page は現在のページ番号、$page_size は各ページに表示されるエントリの数です
- function show_page( $count,$page, $page_size)
- {
- $page_count = ceil($count/$page_size); // 総ページ数を計算します
-
- $init=1;
- $page_len=7;
- $max_p=$ page_count;
- $pages= $page_count;
-
- //現在のページ番号を判定
- $page=(empty($page)||$page<0)?1:$page;
- //現在のページのURLを取得
- $url = $_SERVER['REQUEST_URI' ];
- // URL 内の元のページ パラメータを削除して、新しいページ パラメータを追加します
- $parsedurl=parse_url($url);
- $url_query = isset($parsedurl['query'] ) ? $parsedurl['query'] :'';
- if($url_query != ''){
- $url_query = preg_replace("/(^|&)page=$page/",'',$url_query) ;
- $url = str_replace($parsedurl ['query'],$url_query,$url);
- if($url_query != ''){
- $url .= '&';
- }
- } else {
- $ url .= '?';
- }
-
- //ページング関数コード
- $page_len = ($page_len%2)?$page_len:$page_len+1; //ページ番号の数
- $pageoffset = ($page_len-1; )/2; //ページ番号のオフセットについて
- $navs='';
- if($pages != 0){
- if($page!=1){
- $navs.="ホームページ "; //最初のページ
- $navs.=""; //前のページ
- } else {
- $navs .= "ホームページ";
- $ navs .= "< ;span class='disabled'>前のページ";
- }
- if($pages>$page_len)
- {
- // 現在のページが左以下の場合offset
- if($page<=$ pageoffset){
- $init=1;
- $max_p = $page_len;
- }
- else //現在のページが左のオフセットより大きい場合
- {
- //現在のページの場合number 右オフセットが最大ページ数を超えています
- if($page+ $pageoffset>=$pages+1){
- $init = $pages-$page_len+1;
- }
- else
- {
- //左と左の両方の場合の計算正しいオフセットが存在します
- $init = $page-$pageoffset;
- $max_p = $page+$pageoffset;
- }
- }
- }
- for($i=$init;$i<=$max_p;$i++)
- {
- if($i==$page){$navs.= "".$i.'';}
- else {$navs.=" ".$i."";}
- }
- if($page!=$pages)
- {
- $ navs.=" 次のページ ";//次のページ
- $navs.="< ;a href="".$url."page =".$pages."">最後のページ"; //最後のページ
- } else {
- $navs .= "次のページ
- $navs .= "最後のページ";
- }
- echo "$navs";
- }
- }
コードをコピー
|