Aspnetpager を模倣した PHP ページング クラス コードとソース コード download_PHP チュートリアル
基本的な論理的な考え方は.netと同じで、エンティティクラスによる設定を配列による設定に置き換えるロジックは比較的単純で、条件判断に基づいてページングHTMLをつなぎ合わせます。 。
には以下のような簡単な機能があります:
1: 関連ボタンを表示するかどうかの設定をサポート
2: ページ数、テキスト名、HTMLタグのクラス名の自由な設定をサポート
3: URL書き換えをサポート渡されたページ (構成配列に書き換えルールを自分で追加する必要があります)
コードを直接アップロードするだけなので簡単です:
コアコード: pager.class.php
class pager{
//ページングパラメータ設定
private $config=array(
//ホームボタンのテキスト
"first_btn_text"=>"Home",
//前ページボタンのテキストテキスト,
"pre_btn_text"=>"前のページ",
//次のページのテキスト
"next_btn_text"=>"次のページ",
//最後のページのテキスト
"last_btn_text" =>"最後のページ",
//レコードの総数*必須
"record_count"=>0,
//ページごとのページサイズ
"pager_size"=>10,
//現在のページ番号*必須
"pager_index"=>1,
//各ページに表示されるボタンの最大数
"max_show_page_size"=>10,
//ブラウザに渡されるページ番号の名前のデフォルトはページです
"querystring_name" => ;"page",
//URL が書き換えられるかどうか、デフォルトは flase
"enable_urlrewriting"=>false,
//page/{page} などの URL 書き換えルール ({page} はページ数を表します)
"urlrewrite_pattern"= >"",
//ページングコンテナの CSS 名
"classname"=>"paginator",
//現在のページボタンのクラス名
"current_btn_class"=>"cpb" ,
//ページングのテキスト説明spanタグのcss
"span_text_class"=>"stc",
/*ジャンプ先の詳細テキスト
*totleは総ページ数、
*sizeはページ数を表します各ページの
* goto はジャンプする入力ボックスを表します
* Record はレコードの総数を表します
* Index は現在のページ番号を表します
*/
"jump_info_text"=>"合計 {totle} ページ、{size} レコードページごとに、{goto} ページにジャンプします",
// ジャンプボタンのテキスト
"jump_btn_text"=>"OK",
//ジャンプを表示するかどうか
"show_jump"=>false,
/ /前のボタンのホームページと前のページを表示するかどうか
"show_front_btn"= >true,
//ボタンの次のページと最後のページを表示するかどうか
"show_last_btn"=>true
);クラスのコンストラクター
* $config: ページングクラスの構成
* /
public function __construct($config)
{
$this->init_config($config)
}
function __destruct()
{
unset; ($this->config);
}
/*
* ページングのメイン関数を構築します
*/
public function builder_pager()
{
//ページ文字列
$pager_arr=array();各ページの
$pager_size=$this->config["pager_size "];
//ページングの合計数を取得します
$pager_num=$this->config["record_count"]%$pager_size==0? $this->config["record_count"]/$pager_size:floor( $this->config["record_count"]/$pager_size)+1;
//現在のページ番号が 0 の場合は、1 に設定します。
$pager_index=round($this->config["pager_index"] )==0?1:round($this->config["pager_index"]);
//現在のページ番号が次より大きい場合最後のページと同じか、現在のページ番号が最後のページに設定されます
$pager_index=$pager_index> ;=$pager_num?$pager_num:$pager_index;
//次のページのページ番号
$pager_next=$pager_index> ;=$pager_num?$pager_num:($pager_index+1);
//ジャンプする必要がある URL を取得します
$url=$this->get_url();
//先頭の div を追加します
$classname= $this->config["classname"];
$pager_arr[]="
//最初の 2 つのボタンの HTML を追加します
if($this- >config["show_front_btn"])
{
//現在のページ番号が 1 の場合、前面の 2 つのボタンは無効になります
$attr=$pager_index==1?"disabled=disabled":""
$; pager_arr[]=$this->get_a_html(self::format_url($url,1),$this-> config["first_btn_text"],$attr);
$pager_arr[]=$this->get_a_html (self::format_url($url,$pager_index-1),$this->config["pre_btn_text"], $attr);
}
//現在表示されているページ番号の先頭 1~10 1 11~20 11
$current_pager_start=$pager_index%$pager_size==0?($pager_index/$pager_size-1)*$pager_size+1 :floor($pager_index/$pager_size)*$pager_size+1;
//終わり現在表示されているページ番号
$current_pager_end=($current_pager_start+$pager_size-1)>=$pager_num?$pager_num:($current_pager_start+$pager_size- 1);
//前のレベルにジャンプするHTMLを追加
if($pager_index>) ;$pager_size)
{
$pager_arr[]=$this->get_a_html(self::format_url($url,$current_pager_start- 1),"...")
}
//メインページ番号部分
for($i=$current_pager_start;$i<=$current_pager_end;$i++)
{
if($i!=$pager_index)
{
$pager_arr[]=$this->get_a_html(self::format_url( $url,$i),$i);
}else{
//これが現在のページの場合
$pager_arr[]=$this ->get_span_html($i,$this->config["current_btn_class" ]);
}
}
//HTML の次のレイヤーを追加します
if($pager_index<=($pager_num-$pager_num%$pager_size ))
{
$pager_arr[]=$this->get_a_html(self ::format_url($url,$current_pager_end+1),"...");
//添加后面两个按钮的html
if($this->config["show_last_btn"])
{
//如果当前的页码为最后一页 则last这两个按钮则会被禁用
$attr=$pager_index>=$pager_num?"disabled=disabled":"";
$pager_arr[]=$this->get_a_html(self::format_url($url,$pager_next),$this->config["next_btn_text"],$attr);
$pager_arr[]=$this->get_a_html(self::format_url($url,$pager_num),$this->config["last_btn_text"],$attr);
}
//添加跳转的html
if($this->config["show_jump"])
{
$patterns=array("/\{totle\}/","/\{size\}/","/\{goto\}/","/\{record\}/","/\{index\}/",);
$replacements=array(
$pager_num,
$pager_size,
"\n",
$this->config["record_count"],
$this->config["pager_index"]
);
//替换特定的标签组成跳转
$pager_arr[]=preg_replace($patterns,$replacements,$this->config["jump_info_text"]);
$btn_text=$this->config['jump_btn_text'];
$pager_arr[]="".$this->config['jump_btn_text']."\n";
$pager_arr[]=$this->get_jumpscript($url);
}
$pager_arr[]="
$this->config["pager_index"]=$pager_index;
return implode($pager_arr);
}
/*
*処理が必要な URL を取得、設定の書き換えをサポート、さまざまな URLパラメータ
*/
private function get_url()
{
//URL 書き換えが許可されている場合
if($this->config["enable_urlrewriting"])
{
//呼び出し元のファイルが存在する URL を取得する
$file_path ="http://".$_SERVER["HTTP_HOST"].$_SERVER["PHP_SELF"];
//呼び出し元の URL が存在するネットワーク ディレクトリを取得します
$file_path=substr($file_path,0, strripos($file_path, "/"))."/";
//書き換えルールをディレクトリに直接追加して、新しい URL を形成します
$url=$file_path.$this->config["urlrewrite_pattern"];
}else{
// 現在呼び出しているページの絶対 URL を取得します
$url="http://".$_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"];
//ブラウザに渡されるページング パラメータ
$querystring_name= $this->config['querystring_name'];
//URL に php? 文字列が含まれている場合は、ページング パラメータを置き換える必要があります
if(strpos($url," php?"))
{
// page=xxx の単語がある場合
$pattern="/$querystring_name=[0-9]*/";
if(preg_match($pattern,$url))
{
//page=*** が含まれます。テキスト内の数字を {0} に置き換えます
$url=preg_replace($pattern,"$querystring_name={page}",$url); "&$querystring_name={page}";
}
}else{
//パラメータを直接追加してページの完全な URL を形成します
$url.="?$querystring_name={page}"; return $url;
}
/*
* get a タグの HTML
*$url: a タグの宛先 HTML
*$title: a タグのタイトル
**$attr: a タグに追加の属性を記述する必要はありません
*/
private static function get_a_html($url, $title,$attr="")
{
return "$titlen";
}
/ *
* Span タグの HTML を取得します
* $num: Span 内のテキスト、つまりページ番号
* $classname:span タグのクラス名
*/
private static function get_span_html($num,$classname)
{
return "$num< /span>n";
}
/*
* フォーマットされた URL
* $url 元の URL
* $page ページ番号
*/
プライベート静的関数 format_url($url,$page)
{
return preg_replace("/ {page}$/",$page,$url);
}
/*
*ページング設定ファイルを初期化します
*パラメータにキー値が含まれていない場合は、宣言された値がデフォルトで使用されます
* /
プライベート関数 init_config($config)
{
//値が存在するか、配列であるか、レコードが含まれているかを判断します
if(isset($config) &&is_array($config)&&count($config)>0) {
foreach($config as $key=>$val)
{
$this->config[$key]=$val;
}
}
/*
* ジャンプ関数スクリプトを構築するメソッド
*$url: ジャンプする必要がある URL
*/
private function get_jumpscript($url)
{
$scriptstr = "n";
return $scriptstr;
}
/*
* .net の format メソッドと同様の関数を php で構築します
* 使用法: format("hello,{0},{1},{2}", 'x0','x1','x2')
*/
プライベート関数 format() {
$args = func_get_args( );
if (count($args) == 0) { return;}
if (count($args) == 1) { return $args[0] }
$str = array_shift($args); $str = preg_replace_callback('/\{(0|[1-9]\d*)\}/', create_function('$match', '$args = '.var_export($args, true).'; return isset( $args[$match[1]]) ? $args[$match[1]] : $match[0];'), $str);
}
}
?
配列パラメータを使用して直接呼び出します
コードをコピーします
コードは次のとおりです:
$config1=array(
"record_count"=>703,
最後に、デモの写真を見てみましょう:

私は最近 PHP を学んだばかりなので、コード内に現れる不規則性、非効率性、冗長性、または設計上の問題についてアドバイスをお願いします。
デモソースコードのダウンロード

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

PHPは、電子商取引、コンテンツ管理システム、API開発で広く使用されています。 1)eコマース:ショッピングカート機能と支払い処理に使用。 2)コンテンツ管理システム:動的コンテンツの生成とユーザー管理に使用されます。 3)API開発:RESTFUL API開発とAPIセキュリティに使用されます。パフォーマンスの最適化とベストプラクティスを通じて、PHPアプリケーションの効率と保守性が向上します。

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。

PHPは依然として動的であり、現代のプログラミングの分野で重要な位置を占めています。 1)PHPのシンプルさと強力なコミュニティサポートにより、Web開発で広く使用されています。 2)その柔軟性と安定性により、Webフォーム、データベース操作、ファイル処理の処理において顕著になります。 3)PHPは、初心者や経験豊富な開発者に適した、常に進化し、最適化しています。

PHPは、特に迅速な開発や動的なコンテンツの処理に適していますが、データサイエンスとエンタープライズレベルのアプリケーションには良くありません。 Pythonと比較して、PHPはWeb開発においてより多くの利点がありますが、データサイエンスの分野ではPythonほど良くありません。 Javaと比較して、PHPはエンタープライズレベルのアプリケーションでより悪化しますが、Web開発により柔軟性があります。 JavaScriptと比較して、PHPはバックエンド開発により簡潔ですが、フロントエンド開発のJavaScriptほど良くありません。

PHPとPythonには独自の利点と短所があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1.PHPは、大規模なWebアプリケーションの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンスと機械学習の分野を支配しています。

PHPとPythonにはそれぞれ独自の利点があり、さまざまなシナリオに適しています。 1.PHPはWeb開発に適しており、組み込みのWebサーバーとRich Functionライブラリを提供します。 2。Pythonは、簡潔な構文と強力な標準ライブラリを備えたデータサイエンスと機械学習に適しています。選択するときは、プロジェクトの要件に基づいて決定する必要があります。
