用了adodb有段时间了,发现还没有对adodb还很不了解,今天特地看了下adodb的分页函数,在此记录下,遗漏或不对的地方希望看到这个文章的朋友们能够指正和讨论。
在adodb中,声明一个对象($obj_db)后,我们就可以通过对象来调用pageExecute函数($obj_db->pageExecute($sql,$pagesize,$currentpage,$inputarr, $secs2cache)),一般情况下,都只使用到了前三个参数,后面两个参数都有默认值,可以在需要时传值使用。
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
pageExecute函数:在pageExecute函数里,通过判断全局变量$ADODB_INCLUDED_LIB是否设定,没有设定则包含adodb-lib.inc.php文件。
global
$ADODB_INCLUDED_LIB
;
if
(
empty
(
$ADODB_INCLUDED_LIB
))
include_once
(ADODB_DIR
.
'
/adodb-lib.inc.php
'
);
判断类成员pageExecuteCountRows,选择调用不同的函数。
//adodb的默认设置 $pageExecuteCountRows = true;
if
(
$this
->
pageExecuteCountRows)
$rs
=&
_adodb_pageexecute_all_rows(
$this
,
$sql
,
$nrows
,
$page
,
$inputarr
,
$secs2cache
);
else
$rs
=&
_adodb_pageexecute_no_last_page(
$this
,
$sql
,
$nrows
,
$page
,
$inputarr
,
$secs2cache
);
在这里就说_adodb_pageexecute_all_rows函数吧。在_adodb_pageexecute_all_rows 里调用_adodb_getcount函数,返回影响的记录条数,通过ceil计算总共页数。
$qryRecs
=
false
;
//
count records for no offset
$qryRecs
=
_adodb_getcount(
$zthis
,
$sql
,
$inputarr
,
$secs2cache
);
$lastpageno
=
(int)
ceil
(
$qryRecs
/
$nrows
);
$zthis
->
_maxRecordCount
=
$qryRecs
;
设置一系列变量后,
//
a page number greater than the last page number.
if
(
$page
>=
$lastpageno
) {
$page
=
$lastpageno
;
$atlastpage
=
true
;
}
//
If page number <= 1, then we are at the first page
if
(
empty
(
$page
)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)