Heim > Artikel > Backend-Entwicklung > php 自己写的好看的分页类
自己写的一个分页类 ,不是很完整,个别没有做验证,但可以使用,分页效果见文章底部。除了链接数据库的代码没有粘贴上来,其他的都粘贴了。供学习使用~
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>
效果如图所示: