-
-
/** - ** 一般的な PHP ページング クラス。 (Google スタイルを模倣)
- ** レコードの総数とページごとの表示数の 2 つのパラメーターを指定するだけです。 (詳細な説明書は添付されています。)
- ** URLを指定する必要はありません、リンクはプログラムによって生成されます。検索結果のページングに便利です。
- ** フォームは GET メソッドを使用して送信されます。これにより、クエリや削除などの操作中に URL パラメータが失われないことが保証されます。
- **/
- class Pager{
- //IE アドレスバーアドレス
- var $url
- //レコードの総数
- var $countall; ;
- //総ページ数
- var $page;
- //ページ番号リンク
- var $backstr;
- //最後のページ、次のページのリンク
- ;
- //現在のページ番号
- var $pg;
- //各ページに表示されるレコード数
- var $countlist;
- //このクラスをインスタンス化するときに自動的に実行されるコンストラクターfunction
- 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 " 下一页 尾页";
- }
- } bbs.it-home.org
- //処理url中$pg的メソッド、自動生成用pg=x
- function replacepg($url,$flag,$i){
- if ($flag == 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{
- $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 を返す;
- }
- }
- ?>
-
复制代
|