开源中文网

您的位置: 首页 > 编程开发 > PHP > PHP程序设计 > 正文

PHP PEAR PAGER分页类中文帮助文档

来源:  作者:

  最近网上看到不少童鞋都在问PHP分页功能如何实现,确实PHP分页功能在PHP网站开发中是必不可少的,而PHP分页功能的实现方式也五花八门,今天和大家分享如何利用PEAR中的Pager分页类来实现PHP的分页功能,先奉上PEAR Pager分页类的中文帮助文档,以供大家参考。


准备工作

1、先在PHP运行环境中安装配置PEAR功能,再安装Pear Pager,版本version 2.4.8,我的PHP运行环境为PHP5

2、Pear Pager安装命令

pear install Pager

Pear Pager分页类中文帮助文档

概要

Pear Pager有一个进行各种参数配置的数组,可以对分页效果进行设置;Pear Pager也可以利用apache mod_rewrite对输出进行定制;Pear Pager有两种分页模式:Jumping和Sliding

Pear Pager分页类Jumping和Sliding分页模式间的区别

Jumping模式的分页逻辑说明

  假设我们总共需要数据的页面数量是15页,每个页面显示5个分页链接,即[1-5][6-10][11-15],Jumping分页模式下当你点击其他分页链接时,总是显示相同的5个分页链接,即

1
2
3
4
5
6
7
8
9
10
11
<?php
a)    {1} 2  3  4  5  =>   // 第一组: [1-5]
b) <=  1 {2} 3  4  5  =>
c) <=  1  2 {3} 4  5  =>
d) <=  1  2  3 {4} 5  =>
e) <=  1  2  3  4 {5} =>   // 当翻页至第5页,再点击下一页时,开始显示第二组分页数据
f) <= {6} 7  8  9 10  =>   // 第二组: [6-10]
g) <=  6 {7} 8  9 10  =>
h) <=  6  7 {8} 9 10  =>
i) <=  6  7  8 {9} 10 =>
?>

  通过上面的例子我们可以看到,当你点击到第一组的最后一个分页链接后,会开始显示第二组分页链接[6-10]

Sliding模式的分页逻辑说明

  与Jumping模式不同,Sliding模式是向前滑动的,分页效果有点类似于Google的分页效果,假设我们设定当翻页至第三页时开始滑动,效果如下

1
2
3
4
5
6
7
8
9
10
<?php
a)       {1} 2  3  4  5  => [15]
b) [1] <= 1 {2} 3  4  5  => [15]
c) [1] <= 1  2 {3} 4  5  => [15]  // 点击至第三页时,分页开始向前滑动
d) [1] <= 2  3 {4} 5  6  => [15]  // 区别在于当前页一直是处于这个窗口的正中间,一直保持不变
e) [1] <= 3  4 {5} 6  7  => [15]
f) [1] <= 4  5 {6} 7  8  => [15]
g) [1] <= 5  6 {7} 8  9  => [15]
h) [1] <= 6  7 {8} 9 10  => [15]
?>

注意事项

  这两种分页方式的区别在于delta参数代表的含义不同,Jumping模式,delta参数设定值代表一次显示多少分页数,而Sliding模式代表的是在当前分页之前和之后显示多少个分页数。

Pear Pager分页类配置数组选项说明

Pager::factory() – 创建一个分页实例(对象)

  factory和Pager分页类的构造函数功能一样,在使用时一般都是通过factory函数来建立分页实例,其需要一个关联数组作为参数,这个关联数组你可以理解为存储着Pager类对象的相关配置信息,现列出这个关联数组的相关配置选项

itemData [array]:存储需要进行分页的数据,默认值是NULL,因为一般都是采用数据库来存储数据的。

totalItems [integer]:记录需要分页的记录总数(如itemData没有提供,可单独使用)

perPage [integer]:每页显示多少条数据记录

delta [integer]:在当前页之前和之后显示多少个分页,Jumping和Sliding之前这个参数是有区别的,下面会看到。

mode [string]:设定分页的模式,即”Jumping” 或者 “Sliding”

httpMethod [string]:HTTP的提交方式,即’GET’或者’POST’,默认值为GET

formID [string]:指定使用POST方式的FORM表单ID,默认值为空

importQuery [boolean]:默认值为true,即判断是否导入提交的数据

currentPage [integer]:初始化当前页,比如你想默认显示第二页,可设定currentPage为2

expanded [boolean]:默认值为TRUE,显示分页数的计算方式为2*delta+1,非常巧妙,当你将这个值设定为false时,Jumping和Sliding两种分页模式的delta值代表的是不同的含义

linkClass [string]:分页链接的CSS样式名称

urlVar [string]:设定分页链接中page值的变量名称,默认值为pageID,比如你设定urlVar的值为pageNum,则默认链接

1
www.leapsoul.cn/pageID=1

将更改为

1
www.leapsoul.cn/pageNum=1

path [string]:页面的URL地址,不包括页面名称,即www.leapsoul.cn/test.php中的www.leapsoul.cn

fileName [string]:页面名称, 如果append == TRUE,%d将被替换成当前分页ID

fixFileName [boolean]:如果设定为FALSE,则fileName将不会被覆盖,默认值为TRUE

append [boolean]:当append值为TRUE,那么pageID将以GET方式体现在URL上,当值为FALSE,则会根据fileName的指定来显示分页,你可以把它理解为,当append的值为FALSE时,可以使用apache的mod_rewrite功能。默认值为TRUE。如何利用apache mod_rewrite实现伪静态

altFirst [string]:第一页链接上的ALT文字,默认显示first page,如果你想显示具体的页数,你可以使用%d,比如’第%d页’

altPrev [string]:前一页分页链接上的ALT文字,默认显示previous page,可根据需要改成各种提示符

altNext [string]:后一页分页链接上的ALT文字,默认显示next page,可根据需要改成各种提示符

altLast [string]:最后一页分页链接的ALT文字,默认显示last page,如果你想显示具体的页数,可以使用%d,比如’第%d页’

altPage [string]:分页ID之前的提示文字,默认值是page,你可以使用%d,比如设置为’第%d页’。

prevImg [string]:设定用来替代<<(向前翻页)的其他符号,比如<img/>,或者其他的,如<<prev

nextImg [string]:设定用来替代<<(向后翻页)的其他符号,比如<img/>,或者其他的,如next>>

separator [string]:用来分隔分页数字的符号,比如<img/>,逗号等等,默认值为空

spacesBeforeSeparator [integer]:分隔符之前的空格数

spacesAfterSeparator [integer]:分隔符之后的空格数

firstLinkTitle [string]:<link rel=”first”>标签中的titile值,默认first page

nextLinkTitle [string]:<link rel=”next”>标签中的titile值,默认next page

prevLinkTitle [string]:<link rel=”previous”>标签中的titile值,默认previous page

lastLinkTitle [string]:<link rel=”last”>标签中的titile值,默认last page

curPageLinkClassName [string]:当前分页链接的CSS样式名称

curPageSpanPre [string]:当前页ID链接之前的文字,默认为空

curPageSpanPost [string]:当前页ID链接之后的文字,默认为空

firstPagePre [string]:第一个分页ID之前使用的字符,比如<img/>, “{”, 空的字符串等

firstPageText [string]:替代第一个分页ID所使用的符号,默认为空

firstPagePost [string]:第一个分页ID之后所使用的符号,可以是<img/>,”}”,空的字符串等

lastPagePre [string]:类似firstPagePre,使用在最后的分页ID上

lastPageText [string]:类似 firstPageText,使用在最后的分页ID上

lastPagePost [string]:类似 firstPagePost,使用在最后的分页ID上

clearIfVoid [boolean]:如果只有一页,不显示分页的连接,返回一个空的字符串,默认值为TRUE

extraVars [array]:需要添加至URL链接中的额外URL变量

excludeVars [array]:需要从URL链接中去除的URL变量

useSessions [boolean]:如果为TRUE,则每页的记录数存储在$_SESSION[$_sessionVar]变量中,默认值为FALSE

closeSession [boolean]:完成读写数据操作后是否关闭SESSION,默认值为FALSE

sessionVar [string]:每页的SESSION变量名,当在一个页面中存在超过一个分页实例时有用

showAllText [string]:当通过getPerPageSelectBox()产生select box时使用的文字

pearErrorMode [constant]:raiseError()中的PEAR_ERROR模式,默认值为PEAR_ERROR_RETURN

注意的事项

使用fileName时,append ==FALSE (默认为TRUE)

(如果itemData已设置,totalItems会被覆盖)

返回值说明

返回一个Pager分页实例,如果失败,则返回一个PEAR_Error对象

Pear Pager分页类函数说明

Pager::setOptions() - 此函数用来当一个分页实例或对象已创建完毕后,可以改变或者设置这个Pager分页对象的配置,此函数的参数和factory()函数的参数一样,都为一个关联数组。

返回值说明当成功时返回 PAGER_OK常量

Pager::build() - 此函数用来在调用setOptions()函数后产生或刷新链接和已经分页的数据,切忌,在使用setOptions函数后一定要使用build函数来产生或者刷新链接和已分页的数据。

Pager::getCurrentPageID() - 返回当前页ID,即当前页数,类型为整型

Pager::getLinks() –返回当前页所对应的链接,是一个关联数组

参数说明$pageID,默认为NULL,可选,如果你指定具体的pageID,则指定页的链接将替代当前页的连接

返回值说明:包换链接的关联数组,数组结构如下

- back

- pages (single pages numbered)

- next

- first

- last

- all (single pages + back/next)

- linktags (HTML head links)

Pager::getNextPageID() – 返回下一页的ID,如果当前页为最后一页,则函数返回FALSE,其他情况则返回下一页的ID.

返回值说明:下一页ID或者FALSE

Pager::getOffsetByPageId() – 返回指定页的记录范围,比如你指定返回第二页的记录返回,即pageID=2,而每一页最少有10条记录,则返回(11,20),如果在调用时没有指定参数,则pageID设定为当前页

参数说明:integer $pageid

返回值说明:返回一个数组

Pager::getPageData() - 以数组形式返回当前页的数据,参数为$pageID,默认返回当前页的数据

Pager::getPageIdByOffset() – 根据给定的记录范围返回页面ID,这个方法只有在Jumping模式下可以使用

参数说明:integer $index

Pager::getPageRangeByPageId() - 根据页面ID,以数组形式返回其所在的页面返回,比如,在Jumping模式下,你设定pageID=3,delta=10,则其返回(1,10),因为3在1-10之内,当你设定pageID=11则,将返回(11,20),在Sliding模式下,当你给定pageID=5,delta=2,则返回(3,7),当调用时没有参数,则默认pageID设置为当前页

Pager::getPageSelectBox() – 返回一个SELECT菜单,用来选择显示哪个页面

参数说明

$params:数组,主要有两个key:optionText:用来设定每个选项的文字,你可以使用’%d’来显示页面ID;

autoSubmit:设置为TURE,则在选择时自动会提交表单,也就是显示指定页

$extraAttributes(HTML标签属性),将会插入<select>标签中

Pager::getPreviousPageID() – 返回前一页的ID,如果当前页为第一页,则返回FALSE

Pager::getPerPageSelectBox() – 返回一个SELECT菜单形式字符串,用来选择每页应该显示多少记录数

调用形式:array Pager::getPerPageSelectBox ( integer $start = 5 , integer $end = 30 , integer $step = 5 ,boolean $showAllData = false , string $optionText = ‘%d’ )

参数说明

$start:每页显示的记录数(可选)

$end:每页显示的最大记录数(可选)

$step:两个选项键之间以多少间隔递增(可选)

$showAllData:如果为TURE,则相当于totalItems(可选)

$extraParams:数组有三个key,optionText,attributes(HTML标签属性,将会插入<select>标签中),

checkMaxLimit,如果为TURE,则Pager检查如果$end比$totalItems大,则不显示多于的select选项

Pager::isFirstPage() - 判断当前页是否第一页,TRUE or FALSE

Pager::isLastPage() - 判断当前页是否最后第一页,TRUE or FALSE

Pager::isLastPageComplete() - 判断是否到达最后一页,TRUE or FALSE

Pager::numItems() - 返回总记录数

Pager::numPages() - 返回总页数

Pear Pager分页类代码实例

1、Jumping和Sliding分页模式代码实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php 
require_once 'Pager.php'; 
$params = array( 
    'mode'       => 'Jumping', 
    'perPage'    => 3, 
    'altPrev'   => '前一页',
    'altNext'   => '后一页',
    'altPage'   => '第%d页',
    'prevImg'   => '前一页',
    'nextImg'   => '后一页',
    'separator'   => ',',
    'spacesBeforeSeparator'   => 1,
    'curPageSpanPre'   => '第',
    'curPageSpanPost'   => '页',
    'firstPagePre'   => '[',
    'delta'      => 5, 
    'itemData'   => array('www.leapsoul.cn','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z') 
); 

$pager = & Pager::factory($params); 
$data  = $pager->getPageData(); 
$links = $pager->getLinks(); 

echo '当前页输出的数据结构:<br/> ' ; 
echo "<pre>"; 
print_r($data); 
echo "</pre>"; 

echo "分页链接:<br/><br/>"; 
echo $links['all'].'<br/><br/>';
echo $pager->linkTags;
?>

分页效果如下

 

Pear Pager分页类Jumping和Sliding分页效果

Pear Pager分页类Jumping和Sliding分页效果


二、Pear Pager getPageSelectBox()函数代码实例

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?php
require_once 'Pager.php';
$params = array(
    'mode'       => 'Jumping',
    'perPage'    => 3,
    'delta'      => 2,
    'itemData'   => array('www.leapsoul.cn','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z')
);

$pager = & Pager::factory($params);

$selectBoxParams = array(

'optionText' => 'page %d',

'autoSubmit' => true,

);

$data  = $pager->getPageData(); 
$links = $pager->getLinks(); 

echo '当前页输出的数据结构:<br/> ' ; 
echo "<pre>"; 
print_r($data); 
echo "</pre>"; 

echo "分页链接:<br/><br/>";

$selectBox = $pager->getPageSelectBox();

echo '<form action="' . htmlspecialchars($_SERVER['PHP_SELF']) . '" method="GET">';

echo $selectBox;

echo '<input type="submit" value="submit" />';

echo '</form>';
?>

分页效果如下

Pear Pager getPageSelectBox()函数分页效果

Pear Pager getPageSelectBox()函数分页效果


  从上图可以看到总共分为九页,当选择一页并提交FORM表单后会显示指定页的数据。

 

三、Pear Pager getPerPageSelectBox()函数代码实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php 
require_once 'Pager.php';
$params = array(
    'mode'       => 'Jumping',
    'perPage'    => 3,
    'delta'      => 2,
    'itemData'   => array('www.leapsoul.cn','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z')

);

$pager = & Pager::factory($params);

$data  = $pager->getPageData(); 
$links = $pager->getLinks(); 

echo '当前页输出的数据结构:<br/> ' ; 
echo "<pre>"; 
print_r($data); 
echo "</pre>"; 

echo "分页链接:<br/><br/>";

$selectBox = $pager->getPerPageSelectBox();

echo '<form action="' . htmlspecialchars($_SERVER['PHP_SELF']) . '" method="GET">';

echo $selectBox;

echo '<input type="submit" value="submit" />';

echo '</form>';
?>

分页效果如下

Pear Pager getPerPageSelectBox()函数分页效果

Pear Pager getPerPageSelectBox()函数分页效果


从上图可以看到,默认一页显示5个数据,你可以根据需要一页显示5,10,15,20,30个数据

 

  至此PEAR Pager分页类的中文帮助文档就介绍完毕了,通过上面的Pear Pager分页实例,我们可以看到通过合理组合各种函数功能可以达到各种分页效果,更多分页实例,比如伪静态的分页实例,请点击这里查看,此Pear Pager分页类中文帮助文档原文翻译来自这里,有翻译不周到的地方欢迎交流指出。

  PHP网站开发教程-leapsoul.cn版权所有,转载时请以链接形式注明原始出处及本声明,谢谢。

Tags:
相关文章列表:
关于开源中文网 - 联系我们 - 广告服务 - 网站地图 - 版权声明