文章內容分頁主要有兩個辦法:
辦法一、按字數控制進行分頁
按字數分頁辦法簡單易用,但效果不好。
大致思想:首先、設定每頁能容納的最大字數;然後、計算文章內容的總字數,再由總字數和單頁最大字數計算出出總頁數。這樣整個分頁的准備工作就已經做好了。
具體到每一頁的顯示內容可以通過內容截取來實現。比如:頁容納500字,文章內容有2200字,那麼當頁面傳遞page=2時應該顯示第501至1000之間的內容。
這種辦法簡單,但顯示時可能會遇到麻煩,文章內容通常伴有HTML標簽,進行內容切割時實現HTML標簽的閉合有一定難度,如果這個工作沒做好,那麼分頁後的效果顯然也是不好的。
辦法二、通過分頁符進行分頁
通過分頁符進行分頁比起第一種辦法要更為理想。
大致思想:在編輯文章內容時往內容裡面插入分頁符(如:<hr class="page">),在文章顯示時對文章內容進行分割,每一部分表示一個頁的內容,通過傳遞參數控制顯示第幾頁。
這種辦法比較人性化,畢竟通過人工控制出來的分頁截取的內容更符全我們的思維,而且可以一定程度上避免HTML標簽不閉合的情形。
頁顯示
分頁顯示是將大批量的數據分批發送到客戶端的重要手段之一,通常是將數據庫中的結果集人為的分成一段一段的來顯示。
分類
PHP分頁分為列表分頁和內容分頁,不管是列表分頁還是內容分頁,基本原理是一樣的,將數據分批發送到客戶端。
pager.class.php
這是一個簡單的PHP分頁顯示類,目前支持兩種分頁模式。一種是最簡單的普通分頁模式[首頁] [上頁] [下頁] [尾頁]模式,另一種是經典分頁模式,即:[1][2][3][4][5][6][7][8][9][10][下一頁][尾頁]。
使用方法
代碼如下require_once 'pager.class.php';
$pager = new pager($totalPage,$currentPage); // $pager對象
echo $pager->showpager(); // 輸出分頁
此分頁顯示類的構造函數
/*
@total_page 總頁數
@current_num 當前頁
@sub_pages 每次顯示的頁數
@subPage_link 每個分頁的鏈接
@subPage_type 分頁模式
當@subPage_type=1的時候為普通分頁模式
如: 共4523條記錄,每頁顯示10條,當前第1/453頁 [首頁] [上頁] [下頁] [尾頁]
當@subPage_type=2的時候為經典分頁樣式
如: 當前第1/453頁 [首頁] [上頁] 1 2 3 4 5 6 7 8 9 10 [下頁] [尾頁]
*/
上述說的PHP分頁的兩種類別(列表分頁和內容分頁),相信列表分頁對大家並不陌生,對於內容分頁,常用的方法是以分頁符的形式(比如:<hr class="pager">)將內容分割成多段,求出總頁數,用當前頁碼去獲取分頁顯示列表。
代碼如下<?php
/**
* 示例:
* <?php
* require_once("pager.class.php");
* $subPages=new pager($totalPage,$currentPage);
* echo $subPages->showpager();
* ?>
* */
class pager{
var $each_disNums;//每頁顯示的條目數
var $nums;//總條目數
var $current_page;//當前被選中的頁
var $sub_pages;//每次顯示的頁數
var $pageNums;//總頁數
var $page_array = array();//用來構造分頁的數組
var $subPage_link;//每個分頁的鏈接
var $subPage_type;//顯示分頁的類型
var $_lang = array(
'index_page' => '首頁',
'pre_page' => '上一頁',
'next_page' => '下一頁',
'last_page' => '尾頁',
'current_page' => '當前頁:',
'total_page' => '總頁數:',
'current_show' => '當前顯示:',
'total_record' => '總記錄數:'
);
/*
__construct是SubPages的構造函數,用來在創建類的時候自動運行.
@total_page 總頁數
@current_num 當前被選中的頁
@sub_pages 每次顯示的頁數
@subPage_link 每個分頁的鏈接
@subPage_type 顯示分頁的類型
當@subPage_type=1的時候 為普通分頁模式
example: 共4523條記錄,每頁顯示10條,當前第1/453頁 [首頁] [上頁] [下頁] [尾頁]
當@subPage_type=2的時候為經典分頁樣式
example: 當前第1/453頁 [首頁] [上頁] 1 2 3 4 5 6 7 8 9 10 [下頁] [尾頁]
*/
function __construct($total_page,$current_page,$sub_pages=10,$subPage_link='',$subPage_type=2){
$this->pager($total_page,$current_page,$sub_pages,$subPage_link,$subPage_type);
}
function pager($total_page,$current_page,$sub_pages=10,$subPage_link='',$subPage_type=2){
if(!$current_page){
$this->current_page=1;
}else{
$this->current_page=intval($current_page);
}
$this->sub_pages=intval($sub_pages);
$this->pageNums=ceil($total_page);
if($subPage_link){
if(strpos($subPage_link,'?page=') === false AND strpos($subPage_link,'&page=') === false){
$subPage_link .= (strpos($subPage_link,'?') === false ? '?' : '&') . 'page=';
}
}
$this->subPage_link=$subPage_link ? $subPage_link : $_SERVER['PHP_SELF'] . '?page=';
$this->subPage_type = $subPage_type;
}
/*
show_SubPages函數用在構造函數裡面。而且用來判斷顯示什麼樣子的分頁
*/
function showpager(){
if($this->subPage_type == 1){
return $this->pagelist1();
}elseif ($this->subPage_type == 2){
return $this->pagelist2();
}
}
/*
用來給建立分頁的數組初始化的函數。
*/
function initArray(){
for($i=0;$i<$this->sub_pages;$i++){
$this->page_array[$i]=$i;
}
return $this->page_array;
}
/*
construct_num_Page該函數使用來構造顯示的條目
即