ホームページ >php教程 >php手册 >PHP の一般的なページング クラス page.php [Google ページングの模倣]

PHP の一般的なページング クラス page.php [Google ページングの模倣]

WBOY
WBOYオリジナル
2016-06-13 12:26:55905ブラウズ

page.php

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



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

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

$this->pg=$_GET["pg"];
//unspecified の 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->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;$ipage 1;$i ){
$this->; thestr=$this->thestr.Pager::makepg($i,$this->pg);
}

}
}
}
// 上页下页等文字链接生成
$this->backstr = Pager::gotoback($this- >ページ);
$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 " ".$i."";
}
}
// 上一页等情報の関数を生成
function gotoback($pg){
if ($pg-1>0){
return $this ->gotoback="
首页< /a> 上一页";
}else{
return $this->gotoback="首页 上一页 ";
}
}
// 次の一页等情報の関数を生成
function gotonext($pg,$page){
if ($pg < $page){
return "
下一页尾页 ;
}else{
return " 下一页 尾页";
}
}
//処理url中$pgのメソッド、自動生成用pg=x
function replacepg($url,$flag,$i){
if ($フラグ == 1){
$temp_pg = $this->pg;
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{
return $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 を返す;
}
}
?>

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。