分页实现是网站应用最常用的功能，需要注意的是，要和网站的url模式相一致，且不丢失其他GET参数。再次就是要可以配置你的分页主题。这里我整理了一个分页类，调用非常简单，demo如下：场景：写了一个微信精选的文摘，有分页功能，URL模式就是普通模式"?a=bc&page=2",若你的程序是PATHINTO模式的，实例化Page类时配置一下$urlmode=1就可以生成形如"./a/bc/page/2"的URL。分页类首要知道你的总数和每页的个数就可以了。话不多说，直接看代码加注释应用代码摘取：require './DMysqli.php';//数据库类 $dbconfig = array('hostname'=>SAE_MYSQL_HOST_M,'username'=>SAE_MYSQL_USER,'password'=>SAE_MYSQL_PASS,'database'=>SAE_MYSQL_DB,'hostport'=>SAE_MYSQL_PORT,'tablePrefix'=>'wx_'); $dmysqli = new DMysqli($dbconfig); header('Content-type: text/html; charset=utf-8'); require 'Util/page.class.php';//引入Page分页类 $sql = 'select count(*) from wx_article'; $count = $dmysqli->query($sql);//总数 $totalRow = intval(current($count[0])); $Page = new Page($totalRow,10);//实例化分页类：配置总数、每页个数 $sql = 'select * from wx_article ORDER BY posttime,id desc LIMIT $Page->firstRow'.','.'$Page->listRows';//取出当前页的数据，关键在sql语句的limit语法 $res = $dmysqli->query($sql); /* //分页语种自定义 $Page->setConfig('header','items'); $Page->setConfig('prev','Prev Page'); $Page->setConfig('next','Next Page'); $Page->setConfig('first','First Page'); $Page->setConfig('last','Last Page'); $Page->setConfig('theme',' %totalRow% %header% %nowPage%/%totalPage% Page %upPage% %downPage% %first% %prePage% %linkPage% %nextPage% %end%'); */ $show = $Page->show();//分页类可以生成分页字符串，然后赋值给变量，在模版里输出就好了！ include('template/index.html'); Page类源码如下：class Page { // 分页栏每页显示的页数 public $rollPage = 4; // 页数跳转时要带的参数 public $parameter; // 当url模式为PATHINFO时，此配置项有效 public $depr = '/'; // 分页URL地址 public $url = ''; // 默认列表每页显示行数 public $listRows = 20; // 起始行数 public $firstRow; // 分页总页面数 protected $totalPages; // 总行数 protected $totalRows; // 当前页数 protected $nowPage; // 分页的栏的总页数 protected $coolPages; // 分页显示定制 protected $config = array ( 'header' => '条', 'prev' => '上一页', 'next' => '下一页', 'first' => '第一页', 'last' => '最后一页', 'theme' => ' %totalRow% %header% %nowPage%/%totalPage% 页 %upPage% %downPage% %first% %prePage% %linkPage% %nextPage% %end%' ); // 默认分页变量名 protected $varPage; // url模式:0 普通模式 1 PATHINFO模式 protected $urlmode; /** * 架构函数 * * @access public * @param array $totalRows * 总的记录数 * @param array $listRows * 每页显示记录数 * @param array $parameter * 分页跳转的参数 * */ public function __construct($totalRows, $listRows = '', $parameter = '', $url = '', $urlmode = 0) { $this->totalRows = $totalRows; $this->parameter = $parameter; $this->varPage = 'page'; if (! empty ( $listRows )) { $this->listRows = intval ( $listRows ); } $this->totalPages = ceil ( $this->totalRows / $this->listRows ); // 总页数 $this->coolPages = ceil ( $this->totalPages / $this->rollPage ); $this->nowPage = ! empty ( $_GET [$this->varPage] ) ? intval ( $_GET [$this->varPage] ) : 1; if (! empty ( $this->totalPages ) && $this->nowPage > $this->totalPages) { $this->nowPage = $this->totalPages; } $this->firstRow = $this->listRows * ($this->nowPage - 1); $this->urlmode = $urlmode; } public function setConfig($name, $value) { if (isset ( $this->config [$name] )) { $this->config [$name] = $value; } } /** * 分页显示输出 * * @access public * */ public function show() { if (0 == $this->totalRows) return ''; $p = $this->varPage; $nowCoolPage = ceil ( $this->nowPage / $this->rollPage ); // 分析分页参数 if ($this->parameter && is_string ( $this->parameter )) { parse_str ( $this->parameter, $parameter ); } elseif (empty ( $this->parameter )) { // unset($_GET[C('VAR_URL_PARAMS')]); if (empty ( $_GET )) { $parameter = array (); } else { $parameter = $_GET; } } $parameter [$p] = '__PAGE__'; if ($this->urlmode == 0) { // 普通模式URL转换 $url = "?" . http_build_query ( $parameter ); } else { // PATHINFO模式或者兼容URL模式 $url = ".$this->depr"; if (! empty ( $parameter )) { // 添加参数 foreach ( $parameter as $var => $val ) { if ('' !== trim ( $val )) $url .= $var . $this->depr . urlencode ( $val ); } } } // 上下翻页字符串 $upRow = $this->nowPage - 1; $downRow = $this->nowPage + 1; if ($upRow > 0) { $upPage = "" . $this->config ['prev'] . ""; } else { $upPage = ''; } if ($downRow <= $this->totalPages) { $downPage = "" . $this->config ['next'] . ""; } else { $downPage = ''; } unset ( $upPage ); unset ( $downPage ); // << < > >> if ($nowCoolPage == 1) { $theFirst = ''; $prePage = ''; } else { $preRow = $this->nowPage - $this->rollPage; $prePage = "上" . $this->rollPage . "页"; $theFirst = "" . $this->config ['first'] . ""; } if ($nowCoolPage == $this->coolPages) { $nextPage = ''; $theEnd = ''; } else { $nextRow = $this->nowPage + $this->rollPage; $theEndRow = $this->totalPages; $nextPage = "下" . $this->rollPage . "页"; $theEnd = "" . $this->config ['last'] . ""; } // 1 2 3 4 5 $linkPage = ""; for($i = 1; $i <= $this->rollPage; $i ++) { $page = ($nowCoolPage - 1) * $this->rollPage + $i; if ($page != $this->nowPage) { if ($page <= $this->totalPages) { $linkPage .= " " . $page . " "; } else { break; } } else { if ($this->totalPages != 1) { $linkPage .= " " . $page . ""; } } } $pageStr = str_replace ( array ( '%header%', '%nowPage%', '%totalRow%', '%totalPage%', '%upPage%', '%downPage%', '%first%', '%prePage%', '%linkPage%', '%nextPage%', '%end%' ), array ( $this->config ['header'], $this->nowPage, $this->totalRows, $this->totalPages, $upPage, $downPage, $theFirst, $prePage, $linkPage, $nextPage, $theEnd ), $this->config ['theme'] ); return $pageStr; } }