私が PHP で書いた美しいページング クラス

WBOY
リリース: 2016-06-23 13:31:30
オリジナル
1030 人が閲覧しました

私が書いたページングクラスは完全ではなく、検証されていない部分もありますが、ページングの効果は記事の下部で確認できます。データベースにリンクするコードを除いて、その他はすべて貼り付けられています。学習用 ~

  1 <?php  2 /**  3  * Created by PhpStorm.  4  * User: Caoxt  5  * Date: 15-7-3  6  * Time: 上午10:03  7  */  8 class page {  9     public $pageSize;  //每页显示的文章条数 10     public $showPage;  //页数条显示的条数 11     public $count;     //文章总条数 12     public $page;      //当前页 13     public $mergyStr; //存储页码的变量 14     public $skip;    //跳转页开关,默认为false关闭 15  16     //初始化参数 17     public function __construct($count, $pageSize = 10, $showPage = 5, $currentPage = 1, $skip = false) { 18         $this->pageSize = $pageSize; 19         $this->showPage = $showPage; 20         $this->count    = $count; 21         $this->page     = $this->checkPage($currentPage); 22         $this->mergyStr = ''; 23         $this->skip     = $skip; 24     } 25  26     //检查传递的$page的合法性 27     public function checkPage($currentPage) { 28          if($currentPage < 1 || empty($currentPage)) { 29              $currentPage = 1; 30          } 31         if($currentPage > $this->totalPages()) { 32             $currentPage = $this->totalPages(); 33         } 34         return $currentPage; 35     } 36  37     //计算偏移量 38     public function pageOffset() { 39         return ($this->showPage-1)/2; 40     } 41  42     //计算总页数 43     public function totalPages() { 44         return ceil($this->count/$this->pageSize); 45     } 46  47     //获取页面URL 48     public function getPageUrl() { 49         $CurrentUrl = $_SERVER["REQUEST_URI"]; 50         $arrUrl     = parse_url($CurrentUrl); 51         $urlQuery   = $arrUrl["query"]; 52  53         if($urlQuery){ 54             //print_r($this->page); 55             $urlQuery  = preg_replace("/(^|&)page=/" . $this->page, "", $urlQuery); 56             $CurrentUrl = str_replace($arrUrl["query"], $urlQuery, $CurrentUrl); 57  58             if($urlQuery){ 59                 $CurrentUrl.="&page"; 60             } 61             else $CurrentUrl.="page"; 62  63         } else { 64             $CurrentUrl.="?page"; 65         } 66  67         return $CurrentUrl; 68     } 69  70     //页码显示行 71     public function GetPagerContent() { 72         $start = 1; 73         $end   = $this->totalPages(); 74         $this->mergyStr .= "<div class='page'>"; 75         if($this->page > 1) { 76             $this->mergyStr .= " <a href='".$this->getPageUrl()."="."1'>首页</a>"; 77             $this->mergyStr  .= " <a href='".$this->getPageUrl()."=".($this->page-1)."'>上一页</a>"; 78         }else{ 79             $this->mergyStr .= " <span class='disable'>首页</span>"; 80             $this->mergyStr  .= " <span class='disable'>上一页</span>"; 81         } 82  83         if($this->totalPages() > $this->showPage) { 84             if($this->page > $this->pageoffset()+1) { 85                 $this->mergyStr .= "..."; 86             } 87  88             if($this->page > $this->pageoffset()) { 89                 $start = $this->page-$this->pageoffset(); 90                 $end = $this->totalPages() > $this->page+$this->pageoffset() ? $this->page+$this->pageoffset() : $this->totalPages(); 91             } 92             else{ 93                 $start = 1; 94                 $end = $this->totalPages() > $this->showPage ? $this->showPage : $this->totalPages(); 95             } 96  97             if($this->page + $this->pageoffset() > $this->totalPages()) { 98                 $start = $start - ($this->page + $this->pageoffset() - $end); 99             }100 101         }102 103         for($i=$start; $i<=$end; $i++) {104             if($i == $this->page) {105                 $this->mergyStr .= "<span class='current'>{$i}</span>";106             }else{107                 $this->mergyStr .= " <a href='".$this->getPageUrl()."=".$i."'>{$i}</a>";108             }109 110         }111 112         if($this->totalPages() > $this->showPage && $this->totalPages() > $this->page + $this->pageoffset()) {113             $this->mergyStr  .= "...";114         }115 116         if($this->page < $this->totalPages()) {117             $this->mergyStr .= " <a href='".$this->getPageUrl()."=".($this->page+1)."'>下一页</a>";118             $this->mergyStr .= " <a href='".$this->getPageUrl()."=".$this->totalPages()."'>尾页</a>";119         }else{120             $this->mergyStr .= " <span class='disable'>下一页</span>";121             $this->mergyStr  .= " <span class='disable'>尾页</span>";122         }123 124         $this->mergyStr .= " 共{$this->totalPages()}页";125 126         //显示跳转框127         if($this->skip == true) {128             $this->mergyStr .= $this->skipNumPage();129         }130 131         $this->mergyStr .= "</div>";132 133         print_r($this->mergyStr);134     }135 136     //跳转页137     public function skipNumPage() {138         $this->mergyStr .= "<form action='' method='get'>";139         $this->mergyStr .= "第<input type='text' name='page' style='width:30px; height:25px; border: 1px solid #aaaadd;'>页";140         $this->mergyStr .= "<input type='submit' value='查询' style='border: 1px solid #aaaadd; text-decoration: none; padding:4px 10px 4px 10px; ' >";141         $this->mergyStr .= "</form>";142     }143 144 }
ログイン後にコピー

上記はクラス ファイルのすべてのコードです。以下は呼び出し例です:

<?php//数据库链接,不写了//每页显示条数$pageSize = 10;//页码行显示的条数$showPage = 5;//当前页$page = isset($_GET['page']) ? $_GET['page'] : 1;//当前页显示的文章$sql = "select * from follow_trade_1 order by `follow_trade_id` asc limit ".($page-1)*$pageSize.",{$pageSize}";$query = mysql_query($sql);//计算总条数$sql_count = mysql_query("select count(*) from follow_trade_1");$query_count = mysql_fetch_row($sql_count);$count = $query_count[0];//实例化分页类require("page.php");$p = new page($count, $pageSize, $showPage, $page, true);//table里的文章数据echo "<table border='1' style='width:400px;'>";echo "<tr><td>follow_trade_id</td><td>follow_id</td></tr>";while($rs = mysql_fetch_assoc($query)) {    echo "<tr><td>{$rs['follow_trade_id']}</td><td>{$rs['follow_id']}</td></tr>";}echo "</table>";//读取分页条$p->GetPagerContent();
ログイン後にコピー

スタイル CSS:

<style>    div.page{text-align: left; margin-top: 10px;}    div.page a{border: 1px solid #aaaadd; text-decoration: none; padding:2px 10px 2px 10px; margin: 2px;}    div.page span.current{border: 1px solid #000099; background-color: #000099; padding: 4px 10px 4px 10px; margin: 2px; color: #fff; font-weight: bold;}    div.page span.disable{border: 1px solid #eee; padding: 2px 5px 2px 5px; margin: 2px; color: #ddd;}    div.page form{display: inline;}</style>
ログイン後にコピー

効果は図に示すとおりです:

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート