Heim >Backend-Entwicklung >PHP-Tutorial >php 自己写的好看的分页类

php 自己写的好看的分页类

WBOY
WBOYOriginal
2016-06-23 13:31:301059Durchsuche

自己写的一个分页类 ,不是很完整,个别没有做验证,但可以使用,分页效果见文章底部。除了链接数据库的代码没有粘贴上来,其他的都粘贴了。供学习使用~

  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>

效果如图所示:

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn