<table cellspacing="0" cellpadding="0"><tr><td class="t_f" id="postmessage_52451"> 私は個人的に、汎用性の高い PHP で書かれた簡単なページング クラスを学びました。 <div class="blockcode"> <div id="code_CT2"><ol><?php<li>/**<li>* シンプルなページングクラス<li>* @author:phpprince<li>* @QQ: 8923052<li>* @date: 2014-04-22 21:08:35<li>*/<li>class Page{<li> protected $url; //アドレス<li> protected $allnum; //現在のページ番号<li> protected $pagesize; // 各ページに表示されるレコードの数<li> protected $postfix; // Suffix<li> protected $style; // 3 つの表示スタイルがあり、1 2 3 はそれぞれ最初の 5 つと最後の 4 つを意味します。最初の 3 つと最後の 3 つ、最初の 4 つ Post 4<li> <li> public function __construct($url,$allnum,$current,$pagesize=10,$postfix='',$style=1){<li> $this-> ;url=$url;<li> $this-> ;allnum=$allnum;<li> $this->current=$current;<li> $this->pagesize=$pagesize;</li> <li> $this->postfix=$postfix; </li> <li> $this->style=$style; </li> <li> }</li> <li> </li> <li> //総ページ数を取得</li> <li> protected function maxPageNum(){</li> <li> $max=ceil($this->allnum/$this->pagesize) ;</li> <li> //ページ数オーバー修正</li> <li> if($this ->current>$max){</li> <li> $this->current=$max;</li> <li> }</li> <li> if($this->current $this->current=1;</li> <li> }</li> <li> return $ max;</li> <li> }</li> <li> </li> <li> //最初のページのリンクの完全な HTML を取得する str</li> <li> protected function firstUrl(){</li> <li> if($this->current!= 1)</li> <li> {</li> <li> return '<span id="firstpage"> ;<a href="'.$this->getUrl(1).'" title="最初のページを表示">ホームページ</a> ;</span>';</li> <li> }else{</li> <li> return '<span id="firstpage"><a>ホームページ</a></span>';</li> <li> }</li> <li> }</li> <li> </li> <li> //Get前のページのリンクの完全な HTML str</li> <li> protected function prevUrl() {</li> <li> if($this->current<=1){<li> $fullurl='<span id="prevpage"><a>previous page</a></span>';</li> <li> }else{</li> <li> $fullurl=$this->url.($this->current-1).$this->postfix;</li> <li> $fullurl=' <span id="prevpage" title="1 ページで表示"><a href="'.$fullurl.'">前のページ</a></span>';</li> <li> }</li> <li> return $fullurl;</li> <li> }</li> <li> </li> <li> //次の 1 ページのリンクを取得します html str</li> <li> protected function nextUrl(){</li> <li> if($this->current>=$this->maxPageNum()){</li> <li> $fullurl=' <span id="nextpage">< ;a>次のページ</a></span>';</li> <li> }else{</li> <li> $fullurl=$this->url.($this->current+ 1).$this->postfix ;</li> <li> $fullurl='<span id="nextpage" title="次のページを表示"><a href="'.$fullurl.'">次のページ< /a></span>';</li> <li> }</li> <li> return $fullurl;</li> <li> }</li> <li> </li> <li> //最後のページのリンクの完全な HTML を取得します str</li> <li> protected function lastUrl(){</li> <li> if($this->current> =$this->maxPageNum( )){</li> <li> $fullurl='<span id="lastpage"><a>lastpage</a></span>';</li> <li> }else{</li> <li> $fullurl= $this->url .$this->maxPageNum().$this->postfix;</li> <li> $fullurl='<span id="lastpage" title="最後のページ"><a href=" '.$fullurl. '">最後のページ</a></span>';</li> <li> }</li> <li> return $fullurl;</li> <li> }</li> <li> </li> <li> //指定されたページ番号の完全な URL を取得します</li> <li> protected function getUrl($ pageno){</li> <li> return $this- >url.$pageno.$this->postfix;</li> <li> }</li> <li> </li> <li> //表示スタイルを指定</li> <li> protected function getStyle(){</li> <li> switch($this->style){ </li> <li> ケース 1:</li> <li> $before=5 ;</li> <li> $after=4;</li> <li> ブレーク;</li> <li> ケース 2:</li> <li> $before=3;</li> <li> $after=3;</li> <li> ブレーク;</li> <li> ケース 3:</li> <li> $before=4;</li> <li> $ after=4;</li> <li>break;</li> <li>default :</li> <li> $before=5;</li> <li> $after=4;</li> <li> }</li> <li> </li> <li> return array($before,$after);</li> <li> }</li> <li> </li> <li> //中間URLを取得する 1 2 3 4 5 ⑥ 7 8 9 10</li> <li> protected function getMiddelUrl (){</li> <li> $max=$this->maxPageNum(); //現在のページのオーバーラン問題を修正するために、最初に合計ページを取得します</li> <li> $current=$this->current ; //次のページ番号範囲が正しいことを確認するには、現在のページ番号が有効である必要があります</li> <li> //現在のスタイルを取得します</li> <li> list($before,$after)=$this->getStyle();</li> <li> $startno= $current-$before; //開始ページ番号</li> <li> $endno= $current+$after; //出力が常に要件を満たすようにするには、開始ページが増加する場合は、終了ページも増加する必要があります。 、その逆も同様です。 </li> <li> while($endno>$ max||$startno<1){<li> if($endno>$max){ //終了ページ番号が範囲外です</li> <li> $endno--;</li> <li> if( $startno>1){</li> <li> $startno--;</li> <li> }</li> <li> }</li> <li> if($startno $startno++;</li> <li> if($endno $endno++;</li> <li> }</li> <li> }</li> <li> }</li> <li> $str=''; //HTML 全体を保存するには str</li> <li> for($i=$startno;$i<=$endno;$i++){<li> $currenturl=$this->getUrl($i);</li> <li> if($i! =$current) {</li> <li> $str.="<a href='{$currenturl}'>{$i}</a>";</li> <li> }else{</li> <li> $str.='<span id= "current"> ;<a>'.$i.'</a></span>';</li> <li> }</li> <li> }</li> <li> return $str;</li> <li> }</li> <li> </li> <li> // 完全なページング HTML 文字列を返します</li> <li> public function getPageStr() {</li> <li> $str='<div id="pagelist">'.$this->firstUrl().$this->prevUrl();</li> <li> $str.=$this-> getMiddelUrl(); </li> <li> $str.=$this->nextUrl().$this->lastUrl().'<span id="allpagesize">total'.$this->maxPageNum(). 'ページ'。$this->allnum.'bar</span></div>';</li> <li> return $str;</li> <li> }</li> <li>}</li> <li>?></li> </ol></div> <em onclick="copycode($('code_CT2'));"> コードをコピーします</em> </div> <img src="http://img.it-home.org/data/attachment/forum/2015pic/25222231_UZcj.png" alt="自分で書いた簡単なユニバーサル ページング クラス" > </td></tr></table> <div id="comment_52451" class="cm"> </div> <div id="post_rate_div_52451"></div> <br><br>