首页 >后端开发 >php教程 >【代码】PHP 分页种

【代码】PHP 分页种

WBOY
WBOY原创
2016-06-13 11:38:063437浏览

【代码】PHP 分页类

下面是我自己写的分页类,可做简单的修改
[php]
<?php/*** @name Pager's class* @author Refer* @copyright www.phpcq.com* @version Alpha 1.0* @todo 下拉菜单分页---From表单传&#20540;...可以根据自己的情况(采用GET传&#20540;)**/class Pager{/*** startRow** @var Int*/public $startRow;/*** 页面的总数** @var Int*/public $pageTotal;/***翻页&#20540;** @var Int*/public $offset;/*** 每页所显示记录数** @var Int*/public $pageSize;/*** get参数** @var Int*/public $get;/*** post参数** @var Int*/public $post;/*** 构造函数--初始化翻页类 (PS:^_^不错的php学习交流群:276167802,验证:csl,有兴趣的话可以加入进来一起讨论)** @param Int $total* @param Int $pageSize*/public function __construct($total,$pageSize){$this->get = (int)$_GET['startRow'];$this->post = (int)$_POST['pageNums'];$this->pageSize = $pageSize;$this->pageTotal = ceil($total / $pageSize);switch ($_GET['method']){default:$this->startRow = 1;$this->offset = 0;break;case 'first':$this->first();break;case 'previous':$this->previous();break;case 'next':$this->next();break;case 'last':$this->last();break;}}/*** 首页方法**/public function first(){$this->startRow = 1;$this->offset = ($this->startRow - 1) * $this->pageSize;}/*** 上一页方法**/public function previous(){$this->startRow = $this->get - 1;if ($this->startRow < 1) {$this->startRow = 1;}$this->offset = ($this->startRow - 1) * $this->pageSize;}/*** 下一页方法**/public function next(){$this->startRow = $this->get + 1;if ($this->startRow > $this->pageTotal) {$this->startRow = $this->pageTotal;}$this->offset = ($this->startRow - 1) * $this->pageSize;}/*** 最后页方法**/public function last(){$this->startRow = $this->pageTotal;$this->offset = ($this->startRow - 1) * $this->pageSize;}/*** 下拉菜单翻页** @return Int*/public function numPages(){if ($this->post) {$pageNums = "<option>$this->post</option>";$this->startRow = $this->post;$this->offset = ($this->post - 1) * $this->pageSize;}for ($i = 1; $i <= $this->pageTotal;$i++){if ($i != $this->post) {$pageNums .= "<option>$i</option>";}}return $pageNums;}/*** 当前是第几页** @return Int*/public function noncePage(){if ($this->post) {return $this->startRow = $this->post;} else {return $this->startRow = $this->startRow;}}}


调用方法:
[php]
$total = $total->total();//总记录$pageSize = 15;//每页显示的记录$pager = new Pager($total,$pageSize);if ($pager->post){$startRow = $pager->noncePage();}$startRow = $pager->startRow;$pager->numPages();$article->query("SELECT * FROM `categories` as c,`articles` as n WHERE c.id = n.pidORDER BY n.id DESC LIMIT $pager->offset,$pageSize");while ($article->fetchArray()) {$article->data['content'] = mb_substr(strip_tags($article->data['content']),0,40,'utf-8');$articleIndex[] = $article->data;}$article->free();} else {header("location:?act=login");}$view->view->assign('startRow',$startRow);//caption$view->view->assign('total',$total);//caption$view->view->assign('pageNums',$pager->numPages());//pageNums$view->view->assign('noncePage',$pager->noncePage());//pageNums$view->view->assign('pageTotal',$pager->pageTotal);//pageTotal

模板页面:
[php]
<!--{if $pageTotal > 1}--><form action="" method="post"><div id="projectpages" class="fontpage">Pager:<select name="pageNums" onchange="javascript:submit();" style="height:20px;"><!--{$numPages}--></select><a href="?act=blog&method=first&startRow=<!--{$startRow}-->">First</a><a href="?act=blog&method=previous&startRow=<!--{$startRow}-->">Previous</a><a href="?act=blog&method=next&startRow=<!--{$startRow}-->">Next</a><a href="?act=blog&method=last&startRow=<!--{$startRow}-->">Last</a></div></form><!--{/if}-->

本文出自 “清源教育” 博客,转载请注明此处,谢谢!
声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn