分页是网站常用的一项功能,如果有一个良好的分页类(函数),可以帮开发者节省不少开发时间。
1 分页要与SQL无关。为什么分页必须与SQL无关呢?很显然,有一定开发经验的朋友,至少都在使用数据库代理类。我们不应该在分页类中global或传递数据库类,至于直接把数据库连接放进去,那更要不得。另外请看第5点。
2 分页要与html及样式分离。与html分离是显而易见的需要的,首先,就算是同一个网站,也会需要不同风格的分页,甚至有些用的还是图片。其次,可以应付不同编码格式。另外,与html和样式分离,即相当于PHP的模板技术一处道理,美工可以修改出自己想要的效果。
3 要考虑变量值问题,并非所有分页都是数字的。比如有些人分页是page=pn123,甚至是page=p123nfadfafdaf。分页类要提供这方面的处理。
4 web协议不仅仅限于http。很多分页类内部就把协议定死了http了,这是不可取的。
仅仅上面最基本的四点,现在所能看到的所谓分页类中,能做到其中两个的,基本上没有。
好吧。我们开始。
5 分页不仅限于数据库分页。有些是对内容的分页,比如把一篇长达上万字的内容进行分页,这样如果把SQL写到类里面的,就更要不得了,一点用也没有。
BluePage是一个通用的分页类,它能帮助你更快地完成分页任务。
先看使用例子: http://www.bluessoft.com/project/bluepage/example.php
使用例子1:
<?php
include ( "lib/BluePage.class.php" ) ;
$pBP = new BluePage ;
$intCount = 1000 ; // 假设记录总数为1000
$intShowNum = 10 ; // 每页显示10
$aPDatas = $pBP->get( $intCount , $intShowNum ) ;
$strHtml = $pBP->getHTML( $aPDatas ) ; //在适当位置输出或赋值给一个模板变量
?> |
效果图:
使用例子2:
<?php
include ( "lib/BluePage.class.php" ) ;
$pBP = new BluePage ;
$intCount = 1000 ; // 假设记录总数为1000
$intShowNum = 10 ; // 每页显示10
$aPDatas = $pBP->get( $intCount , $intShowNum ) ;
//print_r($aPDatas); //如不记得返回,打印出来看看
?> |
使用例子3:
<?php
include ( "lib/BluePage.class.php" ) ;
$pBP = new BluePage ;
$intCount = 1000 ; // 假设记录总数为1000
$intShowNum = 10 ; // 每页显示10
$aPDatas = $pBP->get( $intCount , $intShowNum ) ;
//第二个参数指定配置文件
$strHtml = $pBP->getHTML( $aPDatas , "myBPDiy.inc.php") ;
?> |
输出控制:
<?php
include ( "lib/BluePage.class.php" ) ;
$pBP = new BluePage ;
$intCount = 1000 ; // 假设记录总数为1000
$intShowNum = 10 ; // 每页显示10
$aPDatas = $pBP->get( $intCount , $intShowNum ) ;
// f 首页
// pg 上一组页码
// p 上一页
// bar 分页条
// ng 下一组页码
// n 下一页
// m 总页数
// sl 下拉选页
// i Input表单
$pBP->_order = ''m|sl'' ; //只输出总页数与下拉选页
$strHtml = $pBP->getHTML( $aPDatas ) ;
?> |
使用例子5
<?php
include ( "lib/BluePage.class.php" ) ;
$pBP = new BluePage ;
$intCount = 1000 ; // 假设记录总数为1000
$intShowNum = 10 ; // 每页显示10
$pBP->_getlink = false ; // 取消取得链接
$pBP->_getqs = false ; // 取消取得Query String
//返回分页数字(省资源)
$aPDatas = $pBP->get( $intCount, $intShowNum );
//print_r($aPDatas); //打印出来看看
//只要最大页,上一页,与下一页和当前页以及offset返回(最省资源)
$aPDatas = $pBP->get( $intCount, $intShowNum , 0 );
//print_r($aPDatas); //打印出来看看
?> |
取得offset
<?php
include ( "lib/BluePage.class.php" ) ;
$pBP = new BluePage ;
$intCount = 1000 ; // 假设记录总数为1000
$intShowNum = 10 ; // 每页显示10
$aPDatas = $pBP->get( $intCount, $intShowNum );
$offset = $aPDatas[''offset''] ;
?> |
|