一个简单的PHP分页类
2017-03-23 13:45
615 查看
PHP分页类代码:
应用实例:
<?php /** * Created by PhpStorm. * User: hongqiang * Date: 2017/1/5 * Time: 9:38 * * 1. 总数 * 2. 每页显示多少条 * * */ //分页类 class Page{ private $total; //总记录数 private $nums; //每页显示的条数 private $pages; //总页数 private $cpage; //当前页 private $url; //当前url public function __construct($total, $nums) { $this->total = $total; $this->nums = $nums; $this->pages = $this->getPages(); $this->url = $this->setUrl(); //获取当前页 $this->cpage = !empty($_GET['page']) ? $_GET['page'] : $this->pages; } //获取URL private function setUrl(){ $url = $_SERVER['REQUEST_URI']; //获取当前url带参数的 //判断是都有问号,有?说明有参数 if (strstr($url, "?")){ //使用parse_url函数将URL分成path和query两个部分 $arr = parse_url($url); //如果有query下标在,说明有参数 if (isset($arr['query'])){ //使用parse_str函数将参数$page=5$page=6变成$output['page']=5 $output['page']=6 parse_str($arr['query'], $output); } //删去数组中的下标是page的 unset($output['page']); //再使用http_build_query将关联数组变成参数字符串 $url = $arr['path'].'?'.http_build_query($output); }else{ $url .= "?"; } return $url; } //获取页数 private function getPages(){ return ceil($this->total/$this->nums); //ceil函数为进1取整 ceil(3.1)=4 } private function first(){ //如果当前页是第一页,则不显示这些 if ($this->cpage > 1){ $prev = $this->cpage - 1; return '<a href="'.$this->url.'&page=1">首页</a> <a href="'.$this->url.'&page='.$prev.'">上一页</a>'; }else{ return ""; } } private function flist(){ $list = ""; $num = 4; //当前页之前的列表 for ($i=$num; $i>=1; $i--){ $page = $this->cpage - $i; if ($page >= 1){ $list .= ' <a href="'.$this->url.'&page='.$page.'">'.$page.'</a> '; }else{ continue; } } //当前页 $list .= ' '; $list .= $this->cpage; $list .= ' '; //当前页之后的列表 for ($i=1; $i<=$num; $i++){ $pag 4000 e = $this->cpage + $i; //如果在页数之内的显示 if ($page <= $this->pages){ $list .= ' <a href="'.$this->url.'&page='.$page.'">'.$page.'</a> '; }else { break; } } return $list; } private function last(){ if ($this->cpage < $this->pages){ $next = $this->cpage + 1; return '<a href="'.$this->url.'&page='.$next.'">下一页</a> <a href="'.$this->url.'&page='.$this->pages.'">末页</a>'; }else{ return ""; } } //从多少条开始 public function start(){ return ($this->cpage - 1)*$this->nums + 1; } //从多少条结束 private function end(){ return min($this->cpage*$this->nums, $this->total); } //当前页显示的记录数 private function currnum(){ return $this->end()-$this->start()+1; } //调用这条方法就可以使用分页 function fpage(){ $arr = func_get_args(); //获取所有的参数 $fpage=""; $list[0] = " 总{$this->total}条记录 "; $list[1] = " 本页显示".$this->currnum()."条记录 "; $list[2] = " 从".$this->start()."-".$this->end()."条 "; $list[3] = " {$this->cpage}/{$this->pages} "; $list[4] = " ".$this->first()." "; $list[5] = " ".$this->flist()." "; $list[6] = " ".$this->last()." "; if (count($arr) < 1){ $arr = array(0, 1, 2, 3, 4, 5, 6); } foreach ($arr as $n){ $fpage .= $list[$n]; } return $fpage; } } ?>
应用实例:
<?php /** * Created by PhpStorm. * User: hongqiang * Date: 2017/1/5 * Time: 9:37 */ header("content-type:text/html; charset=utf-8"); session_start(); include ("connect_db.php"); include ("page.class.php"); if ($_SESSION['permission'] == null){ header("Location::error.html"); exit; } //链接数据库 $conn = db_connect(); $sql = "select count(*) as total from upfiles"; $result = $conn -> query($sql); $data = mysqli_fetch_array($result); //创建分页对象 $page = new Page($data['total'], 10); //执行sql $sql = "select file_id, file_name, file_path, file_owner, file_time, file_classification, file_discription, file_size from upfiles ORDER BY file_id limit {$page->start()},10"; $result = $conn -> query($sql); ?> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html" charset="utf-8" /> <link rel="stylesheet" type="text/css" href="style.css" /> <title></title> </head> <body> <div align="center"> <br /> <div> <br /> <font face="Georgia, Times New Roman, Times, serif" size="4" color="#A4B8F2"> You are here: Fetal ECG Data </font> </div> <br /> <hr width="50%" id="hr_home"/> <br /><br /> <table border="2" width="80%" align="center" cellspacing="2px" cellpadding="2px"> <tr> <th id="form1_D">ID</th> <th id="form1_D">NAME</th> <th id="form1_D">PATH</th> <th id="form1_D">OWNER</th> <th id="form1_D">TIME</th> <th id="form1_D">CATEGORY</th> <th id="form1_D">DISCRIPTION</th> <th id="form1_D">SIZE</th> </tr> <?php while($row = mysqli_fetch_array($result, MYSQLI_NUM)){ ?> <tr> <td id="form2_1"><?php echo $row[0]; ?></td> <td id="form2_1"><a href='detail.php?id=<?php echo $row[0]; ?>'><?php echo $row[1]; ?></a></td> <td id="form2_1"><?php echo $row[2]; ?></td> <td id="form2_1"><?php echo $row[3]; ?></ aafe td> <td id="form2_1"><?php echo $row[4]; ?></td> <td id="form2_1"><?php echo $row[5]; ?></td> <td id="form2_1"><?php echo $row[6]; ?></td> <td id="form2_1"><?php echo $row[7]; ?></td> </tr> <?php } ?> <tr><td colspan="8" align="right" id="form2_1"><?php echo $page->fpage(); ?></td></tr> </table> </div> </body> </html>
相关文章推荐
- 用PHP写的一个简单的分页类 2.0版
- 一个简单且很好用的php分页类
- 用PHP写的一个简单的分页类 1.0版
- 一个简单的php分页类代码(转载)
- 一个简单、纯洁的PHP分页类
- php做一个简单的分页类
- php的一个简单分页类
- 用PHP写的一个简单的分页类 1.0版
- 一个简单的PHP分页类
- 朋友写的一个简单的php音乐添加程序。
- 用PHP+MySQL写了一个简单的留言板
- 一个简单的PHP&MYSQL留言板源码第1/2页
- 自己做的一个简单的用户管理(PHP)!
- php的一个简单例子
- 做一个简单的PHP测试页来测试是否正常
- 一个简单的PHP分页代码
- 一个简单的php实现的MySQL数据浏览器
- 一个简单的PHP投票程序源码
- PHP实现一个简单的无刷新聊天室
- 一个简单的PHP入门源程序