ホームページ  >  記事  >  バックエンド開発  >  PHP 一般ページング クラス page.php [Google ページングの模倣]_PHP チュートリアル

PHP 一般ページング クラス page.php [Google ページングの模倣]_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:50:03836ブラウズ

page.php

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


/**
** 一般的な PHP ページング クラス。 (Google スタイルを模倣)
** レコードの総数とページごとの表示数の 2 つのパラメーターを指定するだけです。 (詳細な手順は添付されています。)
** URLを指定する必要はありません。リンクはプログラムによって生成されます。検索結果のページングに便利です。
** フォームは GET メソッドを使用して送信されます。これにより、クエリや削除などの操作中に URL パラメータが失われないようになります
**/

class Pager{
//IE アドレスバーアドレス
var $url;
//合計レコード数
var $countall; Number
var $page;
//ページ番号リンク
var $thestr;
//前のページのリンク
var $backstr;
//現在のページ番号
var $pg;
//各ページに表示されるレコードの数
var $countlist;
//ページめくりスタイル
var $style;
//この関数は、このクラスをインスタンス化するときに自動的に実行されます
function Pager( $countall,$countlist,$style="page"){
//レコード数と各ページに表示される件数が統合できない場合はページ数を余りとして1を加算します
$this ->countall = $countall;
$this->countlist = $countlist;
if ($this->countall%$this->countlist!=0) {
$this->page=sprintf(" %d",$this->countall/$this->countlist)+1;
}else{
$this->page=$this->; countall/$this->countlist;

$this->pg=$_GET["pg"];
//指定されていない場合はページが 1 から始まることを保証します
if (!ereg("^[1 -9][0-9 ]*$",$this->pg) || empty($this->pg)){
$this->pg=1;
}
//ページ番号最大範囲を超えている場合は、最大値を取得します
if ($this->pg>$this->page){
$this->pg=$this->page;
}
//現在の値を取得しますURL。特定の実装については、下部の関数エンティティを参照してください
$this->url = Pager::getUrl();
//間違った形式のページ番号を正しいページ番号に置き換えます
if(isset($_GET[" pg"]) && $ _GET["pg"]!=$this->pg){
$this->url=str_replace("?pg=".$_GET["pg"],"?pg= $this->pg ",$this->url);
$this->url=str_replace("&pg=".$_GET["pg"],"&pg=$this->pg", $this->url );
}
//12345 などの数値の形式でページネーションを生成します。
if ($this->pagefor ($i=1;$ipage+1;$i++){
$this->gt;thestr=$this-> ;thestr.Pager::makepg($i,$this->pg);
}
}else{
if ($this->pgfor ($i=1;$i$this->thestr=$this-> thestr.Pager::makepg($i,$this->pg);
}
}else{
if (6+$this->pg<=$this->page){
for ($i=$this->pg-4;$i<$this-> pg+6;$i++){
$this->thestr=$this->thestr.Pager::makepg($i,$this->pg);
}
}else{
for ($i=$this->pg-4;$i<$this->page+1;$i++){
$this->thestr=$this-> thestr.Pager::makepg($i,$this->pg);
}

}
}
}
//生成上页下页等文字链接
$this->backstr = Pager::gotoback($this->pg);
$this->nextstr = Pager::gotonext($this->pg,$this->page);
//echo (" 共".$this->countall." 条,每页".$this->countlist."条,共".$this->page."页".$this- >backstr.$this->thestr.$this->nextstr);
}
// 数字分を生成する補助関数
function makepg($i,$pg){
if ($i==$pg){
return " ".$i."";
}else{
return " < ;u>".$i."";
}
}
// 上一页等情報の関数を生成
function gotoback($pg){
if ($pg-1>0){
return $this->gotoback="
首页 上一页";
}else{
return $this->gotoback="首页 上一页 ";
}
}
// 次の一页等情報の関数を生成
function gotonext($pg,$page){
if ($pg < $page){
return " 下一页 尾页";
}else{
return " 下一页 尾页";
}
}
//処理url中$pgのメソッド、自動生成用pg=x
function replacepg($url,$flag,$i){
if ($flag == 1){
$temp_pg = $this->ページ;
return str_replace("pg=".$temp_pg,"pg=".($this->pg+1),$url);
}else if($flag == 2) {
$temp_pg = $this->pg;
return str_replace("pg=".$temp_pg,"pg=".($this->pg-1),$url);
}else if($flag == 3) {
$temp_pg = $this->pg;
return str_replace("pg=".$temp_pg,"pg=1",$url);
}else if($flag == 4){
$temp_pg = $this->pg;
return str_replace("pg=".$temp_pg,"pg=".$this->page,$url);
}else if($flag == 5){
$temp_pg = $this->pg;
return str_replace("pg=".$temp_pg,"pg=".$i,$url);
}else{
$url を返す;
}
}
//現在のURLを取得する方法
function getUrl(){
$url="http://".$_SERVER["HTTP_HOST"];
if(isset($_SERVER["REQUEST_URI"])){
$url.=$_SERVER["REQUEST_URI"];
}else{
$url.=$_SERVER["PHP_SELF"];
if(!empty($_SERVER["QUERY_STRING"])){
$url.="?".$_SERVER["QUERY_STRING"];
}
}
//現在のURL里に追加pg=x字样
if (!ereg("(pg=|PG=|pG=|Pg=)", $url)){
if (!strpos( $url,"?")){
$url = $url."?pg=1";
}else{
$url = $url."&pg=1";
}
}
$url を返す;
}
}
?>

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/319430.html技術記事 page.php の代用コードは次のようになります: ?php /** ** 汎用 php 分別クラス。(Google 式) ** 必要なのは、承認数と各表示数の 2 つのパラメータだけです。(すでに説明を使用しています..) ** 必要ありません...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。