仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 951|回复: 19
打印 上一主题 下一主题

[学习教程] PHP编程:PEAR探奇之PEAR::Pager

[复制链接]
乐观 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-3 23:57:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
不断巩固,摸透大部分PHP常用函数,并可理解OOP,MYSQL优化,以及模板     在页面上显示大批数据,是WEB项目中很罕见的一个作法,但限于屏幕的巨细,为了便于用户浏览,咱们凡是需求将数据分页显示,所以分页功效是大部分项目不成短少的。PEAR::Pager是一个功效壮大的分页类,利用十分便利。

  体系需求:PHP4.3.* /PHP5,PEAR::Pager

  PEAR::Pager有两种分页显示形式,一是Jumping,二是Sliding。二者有甚么区分,咱们来看两个例子:
Jumping.php

<?php
require_once 'Pager/Pager.php';
$params = array(
    'mode'       => 'Jumping',
    'perPage'    => 3,
    'delta'      => 5,
    'itemData'   => array('a','b','c','d','e','z','ty','xc','fg','fg','jk','hj','ty','xc','e','z','ty','xc','fg','fg','jk','hj','ty','xc')
);
echo "<BR>以后分页形式:".$params['mode'];
echo "<BR>每页显示数据条数:".$params['perPage'];
echo "<BR>显示页数:".$params['delta'];
echo "<BR>具体数据数组:";
print_r($params['itemData']);

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

echo "<P>最初后果:";
echo $links['all'];
echo $pager->linkTags;
echo '<P>以后页的数据: ' ;
echo "<pre>";
print_r($data);
echo "</pre>";
echo "其它类办法失掉的数据:<P>";
echo 'getCurrentPageID()...: ';
var_dump($pager->getCurrentPageID());  
echo "<BR>";
echo 'getNextPageID()......: ';  
var_dump($pager->getNextPageID());  
echo "<BR>";
echo 'getPreviousPageID()..: ';  
var_dump($pager->getPreviousPageID());
echo "<BR>";
echo 'numItems()...........: ';
var_dump($pager->numItems());  
echo "<BR>";
echo 'numPages()...........: ';
var_dump($pager->numPages());
echo "<BR>";
echo 'isFirstPage()........: ';
var_dump($pager->isFirstPage());
echo "<BR>";
echo 'isLastPage().........: ';
var_dump($pager->isLastPage());
echo "<BR>";
echo 'isLastPageComplete().: ';
var_dump($pager->isLastPageComplete());
echo "<BR>";
echo '$pager->range........: ';
var_dump($pager->range); echo "<BR>";
?>

  运转了局以下图:






Sliding.php

<?php
require_once 'Pager/Pager.php';

$month = 'september';
$params = array(
    'mode'      => 'Sliding',
    'append'    => false,
    'urlVar'    => 'num',
    'path'      => 'http://localhost/' . $month,
    'fileName'  => 'art%d.html',  //%d将被交换成以后页的数字
    'itemData'  => array('a','b','c','d','e','z','ty','xc','fg','fg','jk','hj','ty','xc','e','z','ty','xc','fg','fg','jk','hj','ty','xc'),
    'perPage'   => 3
);

echo "<BR>以后分页形式:".$params['mode'];
echo "<BR>每页显示数据条数:".$params['perPage'];
echo "<BR>链接指向途径:".$params['path'];
echo "<BR>链接指向文件名:".$params['fileName'];
echo "<BR>具体数据数组:";
print_r($params['itemData']);


$pager = & Pager::factory($params);
$data  = $pager->getPageData();
echo "<P>最初后果:";
echo $pager->links;
echo '<P>以后页的数据: ' ;
echo "<pre>";
echo 'Data for current page: '; print_r($data);
echo "</pre>";
echo "其它类办法失掉的数据:<P>";
echo 'getCurrentPageID()...: ';
var_dump($pager->getCurrentPageID());  
echo "<BR>";
echo 'getNextPageID()......: ';  
var_dump($pager->getNextPageID());  
echo "<BR>";
echo 'getPreviousPageID()..: ';  
var_dump($pager->getPreviousPageID());
echo "<BR>";
echo 'numItems()...........: ';
var_dump($pager->numItems());  
echo "<BR>";
echo 'numPages()...........: ';
var_dump($pager->numPages());
echo "<BR>";
echo 'isFirstPage()........: ';
var_dump($pager->isFirstPage());
echo "<BR>";
echo 'isLastPage().........: ';
var_dump($pager->isLastPage());
echo "<BR>";
echo 'isLastPageComplete().: ';
var_dump($pager->isLastPageComplete());
echo "<BR>";
echo '$pager->range........: ';
var_dump($pager->range); echo "<BR>";
?>
运转了局以下图:





  运转以上代码,可以发明,Jumping是腾跃式行进,一次翻几页,而Sliding是逐页地行进。
  在例子中可以看到PEAR::Pager供应了良多类办法,可以前往咱们所需求的数据,如以后页ID,下一页ID,以后页上数据条数等等。
上面将一切类办法的感化列出,供参考:
Pager::Pager() C 机关函数 参数为二维数组 详见下面的示例
Pager::factory()  -- 创立一个Pager对象
Pager::getCurrentPageID()    前往以后页的ID
Pager::getLinks()  前往某个页所对应的链接 参数为页面的ID 参数为空则前往以后页的链接
Pager::getNextPageID()   前往下一页的ID
Pager::getOffsetByPageId() 前往纪录局限 
例如以后页为1,每页显示10条,则前往(1,10)
如以后页为2,每页显示8条,则前往(8,16)

Pager::getPageData() 以数组模式前往以后页数据 
Pager::getPageIdByOffset() 依据纪录局限前往页面ID
本办法仅当分页形式为Jumping时无效
Pager::getPageRangeByPageId() 前往某个页面地点的纪录局限
例如形式为Jumping时,假如pageId=3 , delta=10,则前往(1,10),假如pageId=3 , delta=10,则依然前往(1,10),由于1,3都在10的局限以内。假如pageId =14,则前往(10,20),
由于14落于10,20之间。
Pager::getPreviousPageID()   失掉前一页的ID
Pager::getperpageselectbox()  前往一个XHTML的Select标签字符串
可用于直接跳转到某个页面
Pager::isFirstPage()  判别以后页是不是第一页
Pager::isLastPage()  判别以后页是不是最初第一页
Pager::isLastPageComplete()  判别是不是抵达最初一页
Pager::numItems()   前往总纪录数
Pager::numPages()   前往总页数

其它功效及用法请参看PEAR::Pager文档:
培训的第四阶段,就是应用PHP语言开发实际的程序。以结合实际的项目开发来进行学习,效果真的很好,在学习完之后就开始练习,能比较容易掌握所学的知识,这是学校的学习所没法比的。
莫相离 该用户已被删除
沙发
发表于 2015-2-4 07:44:49 | 只看该作者
为了以后维护的方便最好是代码上都加上注释,“予人方便,自己方便”。此外开发文档什么的最好都弄齐全。我觉得这是程序员必备的素质。虽然会消耗点很多的时间。但是确实是非常有必要的。
海妖 该用户已被删除
板凳
发表于 2015-2-9 18:48:39 | 只看该作者
装在C盘下面可以利用windows的ghost功能可以还原回来(顺便当做是重转啦),当然啦我的编译目录要放在别的盘下,不然自己的劳动成果就悲剧啦。
只想知道 该用户已被删除
地板
发表于 2015-2-11 01:54:19 | 只看该作者
首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。
再现理想 该用户已被删除
5#
发表于 2015-2-22 11:41:07 | 只看该作者
不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。
爱飞 该用户已被删除
6#
发表于 2015-3-9 20:21:34 | 只看该作者
其实没啥难的,多练习,练习写程序,真正的实践比看100遍都有用。不过要熟悉引擎
精灵巫婆 该用户已被删除
7#
发表于 2015-3-17 00:26:35 | 只看该作者
要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。
山那边是海 该用户已被删除
8#
发表于 2015-3-18 14:49:54 | 只看该作者
多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。
第二个灵魂 该用户已被删除
9#
发表于 2015-3-19 23:50:49 | 只看该作者
php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会)
admin 该用户已被删除
10#
发表于 2015-3-20 17:24:45 | 只看该作者
不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。
变相怪杰 该用户已被删除
11#
发表于 2015-3-29 16:49:24 | 只看该作者
没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。
再见西城 该用户已被删除
12#
发表于 2015-3-31 05:47:32 | 只看该作者
本文当是我的笔记啦,遇到的问题随时填充
乐观 该用户已被删除
13#
 楼主| 发表于 2015-4-4 15:48:33 | 只看该作者
学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql
深爱那片海 该用户已被删除
14#
发表于 2015-4-10 08:28:24 | 只看该作者
再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。
金色的骷髅 该用户已被删除
15#
发表于 2015-4-11 16:47:40 | 只看该作者
为了以后维护的方便最好是代码上都加上注释,“予人方便,自己方便”。此外开发文档什么的最好都弄齐全。我觉得这是程序员必备的素质。虽然会消耗点很多的时间。但是确实是非常有必要的。
透明 该用户已被删除
16#
发表于 2015-4-13 17:11:09 | 只看该作者
至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。
冷月葬花魂 该用户已被删除
17#
发表于 2015-4-15 18:24:24 | 只看该作者
爱上php,他也会爱上你。
蒙在股里 该用户已被删除
18#
发表于 2015-4-25 03:35:42 | 只看该作者
实践是检验自己会不会的真理。
小妖女 该用户已被删除
19#
发表于 2015-5-3 02:03:03 | 只看该作者
建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。
柔情似水 该用户已被删除
20#
发表于 2015-5-4 15:29:30 | 只看该作者
我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-14 13:09

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表