PHP 記事コンテンツのページネーションの詳細な分析
記事コンテンツのページネーションには主に 2 つの方法があります:
方法 1: 文字数制御に応じたページング
文字数によるページネーション方法はシンプルで使いやすいですが、効果はあまり良くありません。
一般的な考え方: まず、各ページに収容できる最大単語数を設定し、次に記事コンテンツの合計単語数を計算し、合計単語数と合計ページ数に基づいて合計ページ数を計算します。 1 ページの最大単語数。このようにして、ページングの準備が完了しました。
各ページの特定の表示コンテンツは、コンテンツのインターセプトを通じて実現できます。たとえば、ページに 500 ワードが含まれ、記事に 2200 ワードが含まれている場合、page=2 がページに渡されると、501 番目から 1000 番目までの間のコンテンツが表示されます。
この方法は簡単ですが、記事のコンテンツにはHTMLタグが付いていることが多いので、コンテンツを切り取る際にHTMLタグを閉じるのが難しく、ページング後の影響が顕著になります。同じです。
方法 2: 改ページを介してページングする
改ページによるページングは、最初の方法よりも理想的です。
一般的な考え方: 記事のコンテンツを編集するときは、コンテンツに改ページ (
など) を挿入し、記事が表示されるときに記事のコンテンツを分割します。各部分は、記事のコンテンツを表します。ページを渡すことにより、パラメータは表示するページを制御します。
結局のところ、この方法は、手動で制御されたページングによってインターセプトされたコンテンツの方がユーザーフレンドリーであり、HTML タグが閉じられていない状況をある程度回避できます。
ページ表示
ページング表示は、大量のデータをバッチでクライアントに送信するための重要な手段の 1 つであり、通常、データベース内の結果セットは表示のために人為的にセグメントに分割されます。
カテゴリー
PHP ページングはリスト ページングとコンテンツ ページングに分けられ、リスト ページングでもコンテンツ ページングでも基本原理は同じで、データはバッチでクライアントに送信されます。
pager.class.php
これは単純な PHP ページング表示クラスで、現在 2 つのページング モードをサポートしています。 1 つは最も単純な一般的なページング モード [Home Page] [Previous Page] [Next Page] [Last Page] モードで、もう 1 つは古典的なページング モード、つまり [1][2][3][4][5] です。 ][6][7][8][9][10][次のページ][最後のページ]。
使用方法
コードは次のとおりです |
|
require_once 'pager.class.php';
$pager = 新しいページャー($totalPage,$currentPage) // $ページャー オブジェクト ;
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 [次のページ] [最後のページ]
*/
コードは次のとおりです |
|
ページャー($total_page,$current_page,$sub_pages=10,$subPage_link='',$subPage_type=2) |
上記の PHP ページングの 2 つのカテゴリ (リスト ページングとコンテンツ ページング) ですが、リスト ページングは誰にとっても馴染みのあるものではないと思います。コンテンツ ページングの場合、一般的に使用される方法は改ページの形式です (例:
) コンテンツを複数のセグメントに分割し、合計ページ数を見つけ、現在のページ番号を使用してページング表示リストを取得します。
コードは次のとおりです |
|
/**
* 例:
*
* require_once("pager.class.php");
* $subPages=新しいページャー($totalPage,$currentPage);
* echo $subPages->showpager();
* ?>
**/
クラスポケベル{ 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の場合、通常のページングモードになります
例: 合計 4523 レコード、各ページに 10 レコードが表示、現在のページ 1/453 [ホーム] [前のページ] [次のページ] [最後のページ]
@subPage_type=2 の場合、古典的なページング スタイルです
例: 現在のページ 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);
}
関数ページャー($total_page,$current_page,$sub_pages=10,$subPage_link='',$subPage_type=2){
if(!$current_page){
$this->current_page=1;
}その他{
$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 関数はコンストラクターで使用されます。そして、どの種類のページングを表示するかを決定するために使用されます
*/
関数 showpager(){
if($this->subPage_type == 1){
$this->pagelist1(); を返す
}elseif ($this->subPage_type == 2){
$this->pagelist2(); を返す
}
}
/*
ページ分割された配列を初期化するために使用される関数。
*/
関数 initArray(){
for($i=0;$isub_pages;$i++){
$this->page_array[$i]=$i;
}
$this->page_array;を返す
}
/*
construct_num_Page この関数は、表示されるエントリを構築するために使用されます
偶数: [1][2][3][4][5][6][7][8][9][10]
*/
関数construct_num_Page(){ if($this->pageNums < $this->sub_pages){
$current_array=array();
for($i=0;$i<$this->pageNums;$i++){
$current_array[$i]=$i+1;
}
}その他{
$current_array=$this->initArray();
if($this->current_page <= 3){
for($i=0;$i
$current_array[$i]=$i+1;
}
}elseif ($this->current_page <= $this->pageNums && $this->current_page > $this->pageNums - $this->sub_pages + 1 ){
for($i=0;$i
$current_array[$i]=($this->pageNums)-($this->sub_pages)+1+$i;
}
}その他{
for($i=0;$i
$current_array[$i]=$this->current_page-2+$i;
}
}
}
$current_array を返す;
}
/*
製作普通モードの分数
共4523条记录,每页显示10条,当前第1/453页 [首页] [上页] [下页] [尾页]
*/
関数 pagelist1(){
$subPageCss1Str="";
$subPageCss1Str.= $this->_lang['current_page'] 。 $this->current_page." / " .$this->pageNums." ";
if($this->現在のページ > 1){
$firstPageUrl=$this->subPage_link."1";
$prewPageUrl=$this->subPage_link.($this->current_page-1);
$subPageCss1Str.="{$this->_lang['index_page']} ";
$subPageCss1Str.="{$this->_lang['pre_page']} ";
}その他{
$subPageCss1Str.="{$this->_lang['index_page']} ";
$subPageCss1Str.="{$this->_lang['pre_page']} ";
}
if($this->現在のページ < $this->pageNums){
$lastPageUrl=$this->subPage_link.$this->pageNums;
$nextPageUrl=$this->subPage_link.($this->current_page+1);
$subPageCss1Str.=" {$this->_lang['next_page']} ";
$subPageCss1Str.="{$this->_lang['last_page']} ";
}その他{
$subPageCss1Str.="{$this->_lang['next_page']} ";
$subPageCss1Str.="{$this->_lang['last_page']} ";
}
$subPageCss1Str; を返します
}
/*
构造经典模式的www.111cn.net分页
現在前第1/453页 [首页] [上页] 1 2 3 4 5 6 7 8 9 10 [下页] [尾页]
*/
関数 pagelist2(){
$subPageCss2Str="";
$subPageCss2Str.=$this->_lang['current_page'] 。 $this->current_page."/" 。 $this->pageNums." ";
if($this->現在のページ > 1){
$firstPageUrl=$this->subPage_link."1";
$prewPageUrl=$this->subPage_link.($this->current_page-1); $subPageCss2Str.="{$this->_lang['index_page']} ";
$subPageCss2Str.="{$this->_lang['pre_page']} ";
}その他{
$subPageCss2Str.="{$this->_lang['index_page']} ";
$subPageCss2Str.="{$this->_lang['pre_page']} ";
}
$a=$this->construct_num_Page();
for($i=0;$i
$s=$a[$i];
if($s == $this->current_page ){
$subPageCss2Str.="[".$s."]";
}その他{
$url=$this->subPage_link.$s;
$subPageCss2Str.="[".$s."]";
}
}
if($this->現在のページ < $this->pageNums){
$lastPageUrl=$this->subPage_link.$this->pageNums;
$nextPageUrl=$this->subPage_link.($this->current_page+1);
$subPageCss2Str.=" {$this->_lang['next_page']} ";
$subPageCss2Str.="{$this->_lang['last_page']} ";
}その他{
$subPageCss2Str.="{$this->_lang['next_page']} ";
$subPageCss2Str.="{$this->_lang['last_page']} ";
}
$subPageCss2Str; を返します
}
/*
__destruct 構造関数は、使用されていないときにリソースを解放するために使用されます。
*/
関数 __destruct(){
unset($each_disNums);
unset($nums);
unset($current_page);
unset($sub_pages);
unset($pageNums);
unset($page_array);
unset($subPage_link);
unset($subPage_type);
}
}
?>
|
http://www.bkjia.com/PHPjc/834976.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/834976.html技術記事 PHP の文章内容の徹底的な分析には、主に 2 つの方法があります: 方法 1、文字数制御を実行する方法 1 つは簡単ですが、結果は良くありません。