php跳转 原理,php分页原理与页面跳转实例

// filename: pager.class.php

// 分页类,这个类仅仅用于处理数据结构,不负责处理显示的工作

class pager

{

var $pagesize; //每页的数量

var $currentpageid; //当前的页数

var $nextpageid; //下一页

var $previouspageid; //上一页

var $numpages; //总页数

var $numitems; //总记录数

var $isfirstpage; //是否第一页

var $islastpage; //是否最后一页

var $sql; //sql查询语句

function pager($option)

{

global $db;

$this->_setoptions($option);

// 总条数

if ( !isset($this->numitems) )

{

$res = $db->query($this->sql);

$this->numitems = $res->numrows();

}

// 总页数

if ( $this->numitems > 0 )

{

if ( $this->numitems < $this->pagesize ){ $this->numpages = 1; }

if ( $this->numitems % $this->pagesize )

{

$this->numpages= (int)($this->numitems / $this->pagesize) + 1;

}

else

{

$this->numpages = $this->numitems / $this->pagesize;

}

}

else

{

$this->numpages = 0;

}

switch ( $this->currentpageid )

{

case $this->numpages == 1:

$this->isfirstpage = true;

$this->islastpage = true;

break;

case 1:

$this->isfirstpage = true;

$this->islastpage = false;

break;

case $this->numpages:

$this->isfirstpage = false;

$this->islastpage = true;

break;

default:

$this->isfirstpage = false;

$this->islastpage = false;

}

if ( $this->numpages > 1 )

{

if ( !$this->islastpage ) { $this->nextpageid = $this->currentpageid + 1; }

if ( !$this->isfirstpage ) { $this->previouspageid = $this->currentpageid - 1; }

}

return true;

}

/***

*

* 返回结果集的数据库连接

* 在结果集比较大的时候可以直接使用这个方法获得数据库连接,然后在类之外遍历,这样开销较小

* 如果结果集不是很大,可以直接使用getpagedata的方式获取二维数组格式的结果

* getpagedata方法也是调用本方法来获取结果的

*

***/

function getdatalink()

{

if ( $this->numitems )

{

global $db;

$pageid = $this->currentpageid;

$from = ($pageid - 1)*$this->pagesize;

$count = $this->pagesize;

$link = $db->limitquery($this->sql, $from, $count); //使用pear db::limitquery方法保证数据库兼容性

return $link;

}

else

{

return false;

}

}

/***

*

* 以二维数组的格式返回结果集

*

***/

function getpagedata()

{

if ( $this->numitems )

{

if ( $res = $this->getdatalink() )

{

if ( $res->numrows() )

{

while ( $row = $res->fetchrow() )

{

$result[] = $row;

}

}

else

{

$result = array();

}

return $result;

}

else

{

return false;

}

}

else

{

return false;

}

}

function _setoptions($option)

{

$allow_options = array(

'pagesize',

'currentpageid',

'sql',

'numitems'

);

foreach ( $option as $key => $value )

{

if ( in_array($key, $allow_options) && ($value != null) )

{

$this->$key = $value;

}

}

return true;

}

}

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值