ホームページ >バックエンド開発 >PHPチュートリアル >php_PHP チュートリアルのページング ソースとページング クラス

php_PHP チュートリアルのページング ソースとページング クラス

WBOY
WBOYオリジナル
2016-07-13 17:14:291805ブラウズ

いわゆるページング表示とは、データベース内の結果セットを表示のために人為的にセクションに分割することを意味します。ここでは 2 つの初期パラメーターが必要です。 1 ページあたりのレコード数 ($PageSize)?

現在どのページにありますか ($CurrentPageID)?
ここで、別の結果セットを与えるだけで、特定の結果を表示できます。
前のページ ($PReviousPageID)、次のページ ($NextPageID)、総ページ数 ($numPages) などの他のパラメーターについては、すべて前述の内容に基づいて取得できます。
MySQL データベースを例にとると、テーブルから特定のコンテンツをインターセプトしたい場合は、SQL ステートメントを使用できます: select * from table limit offset, rows。次の一連の SQL ステートメントを見て、ルールを見つけてください。
最初の 10 レコード: select * from tablelimit 0,10
レコード 11 ~ 20: * テーブル制限 10,10 から選択
レコード 21 ~ 30: * テーブル制限 20,10 から選択

この SQL ステートメントのセットは、実際には、$PageSize=10 の場合にテーブル内の各ページからデータをフェッチするための SQL ステートメントです。このようなテンプレートを要約すると、次のようになります。 select * テーブル制限から ($CurrentPageID – 1) * $PageSize, $PageSize
このテンプレートを使用し、対応する値を上記の一連の SQL ステートメントに代入して、そのとおりであるかどうかを確認してください。データを取得する方法という最も重要な問題を解決したら、あとはパラメータを渡し、適切な SQL ステートメントを作成し、PHP を使用してデータベースからデータを取得して表示するだけです。以下、具体的なコードを用いて説明していきます。
3. 簡単なコード
次のコードを詳しく読んで、自分でデバッグして実行してください。コードを変更して、検索などの独自の機能を追加するのが最善です。
[php]

コードは次のとおりですコードをコピー
// データベース接続を確立します
$link = mysql_connect(“localhost”, “mysql_user”, “mysql_passWord”)
または die(“接続できませんでした: ” .mysql_error());
// 現在のページ番号を取得します
if( isset($_GET['page']) ){
$page = intval( $_GET['page'] );
}
他{
$ページ = 1;
}
//ページごとの数量
$PageSize = 10;
// 総データ量を取得します
$sql = “テーブルから金額として count(*) を選択”;
$result = mysql_query($sql);
$row = mysql_fetch_row($result);
$amount = $row['amount'];
// 合計ページ数を計算します
if( $amount ){
if($< $ page_size){$ page_count = 1; if($額%$ page_size){ $page_count = (int)($amount / $page_size) + 1; // 余りがある場合、ページ数は合計データ量をページあたりのページ数で割って切り上げて 1 を加えたものになります
}その他{
$ page_count = $ amount /$ page_size; // これ以上の数値がない場合、ページ数は合計データ量を各ページの結果で割ったものと等しくなります。 }
}
他{
$page_count = 0;
}
// ページめくりリンク
$page_string = ”;
if( $page == 1 ){
$page_string .= ‘最初のページ|前のページ|’;
}
他{
$page_string .= '最初のページ|前のページ|' ;
}
if( ($page == $page_count) || ($page_count == 0) ){
$page_string .= ‘次のページ|最後のページ’;
}
他{
$page_string .= '
次のページ| ;/a>';
}
// データを取得し、結果を 2 次元配列形式で返します
if( $amount ){
$sql = “select * from table order by id desc limit”. ($page-1)*$page_size .”, $page_size”;
$result = mysql_query($sql);

while ( $row = mysql_fetch_row($result) ){
$rowset[] = $row;
} }その他{

$rowset = array();
}
// 結果を表示するコードがないため、これについては説明の範囲を超えています。foreach
を使用して、取得した 2 次元配列を使用するだけで結果を表示できます。 ?>



PHP ページネーターの作成、ファセット ページ番号を自動的に生成、JS が関数を呼び出します

コードは次のとおりです コードをコピー

クラス PageView{
/**ページ番号**/
パブリック $pageNo = 1;
/**ページサイズ**/
パブリック $pageSize = 20;
/**合計何ページ**/
パブリック $pageCount = 0;
/**合計**/
パブリック $totalNum = 0;
/**現在のページのオフセット、開始行**/
パブリック $offSet = 0;
/**ページあたりのデータ**/
パブリック $pageData = array();

/**前のページはありますか**/
パブリック $hasPrePage = true;
/**次のページはありますか**/
パブリック $hasNextPage = true;

public $pageNoList = array();

public $jsFunction ='jsFunction';
/**
*
* @paramknown_type $count 合計行数
* @param known_type $size ページング サイズ
* @param 不明なタイプ $string
​​*/
パブリック関数 __construct($count=0, $size=20,$pageNo=1,$pageData =array(),$jsFunction='jsFunction'){

$this->totalNum = $count;//レコードの総数
$this->pageSize = $size;//各ページのサイズ
$this->pageNo = $pageNo;
//総ページ数を計算します
$this->pageCount = ceil($this->totalNum/$this->pageSize);
$this->pageCount = ($this->pageCount<=0)?1:$this->pageCount;
//ページ番号を確認
$this->pageNo = $this->pageNo == 0 ? 1 : $this->pageNo;
$this->pageNo = $this->pageNo > $this->pageCount : $this->pageNo;

//オフセットを計算する
$this->offset = ( $this->pageNo - 1 ) * $this->pageSize;
//前のページか次のページがあるかを計算します
$this->hasPrePage = $this->pageNo == 1 ?false:true;

$this->hasNextPage = $this->pageNo >= $this->pageCount ?false:true;

$this->pageData = $pageData;
$this->jsFunction = $jsFunction;

}
    /**
* ページングアルゴリズム
* @return
​​*/
    プライベート関数generatePageList(){
        $pageList = array();
        if($this->pageCount             for($i=0;$ipageCount;$i++){
                array_push($pageList,$i+1);
            }
        }その他{
            if($this->pageNo                 for($i=0;$i                     array_push($pageList,$i+1);
                }
                array_push($pageList,-1);
                array_push($pageList,$this->pageCount);

}else if($this->pageNo > $this->pageCount - 4){
                array_push($pageList,1);

array_push($pageList,-1);
                for($i=5;$i>0;$i--){
                    array_push($pageList,$this->pageCount - $i+1);
                }
            }else if($this->pageNo > 4 && $this->pageNo <= $this->pageCount - 4){
                array_push($pageList,1);
                array_push($pageList,-1);

array_push($pageList,$this->pageNo -2);
                array_push($pageList,$this->pageNo -1);
                array_push($pageList,$this->pageNo);
                array_push($pageList,$this->pageNo + 1);
                array_push($pageList,$this->pageNo + 2);

array_push($pageList,-1);
                array_push($pageList,$this->pageCount);

}
        }
        $pageList を返す;
    }

/***
* ページングコントロールを作成します
* @param
* @return 文字列
​*/
    パブリック関数 echoPageAsDiv(){
        $pageList = $this->generatePageList();

$pageString ="

");
        $pageString を返す;
    }
}

?>

PHP调用

代码如下 复制幣


$pageNo = $_GET['pageNo'];
if(空($pageNo)){
}
//分页データ
$pageData = News::getNewsPage($pageNo,$pageSize);
       // 总行数取得
$count = ニュース::getNewsCount();
        //创建分页器
$p = 新しい PageView($count['0']['TOTAL'],$pageSize,$pageNo,$pageData);
     //页码
を生成 $pageViewString = $p->echoPageAsDiv();

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/628968.html技術記事分別表示、つまり、データベース内の結果収集者を第 1 段階に分割することを示します。ここでは、最初のパラメータが 2 つ必要です: 每页量条记录($PageSize)? 現在は...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。