分享
 
 
 

如何 PHP + MYSQL 对数据库内数据实现分页显示

王朝mysql·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

如何 PHP + MYSQL 对数据库内数据实现分页显示

很多PHP的初学者,都对于WEB页面的分页显示比较困惑,其实分页显示的原理非常简单,今天又有人在QQ上问我这个问题。由于顺手写了这一小记,便于众兄弟朋友翻阅。

问题:我的数据库结构如下

Create database book_list (

id int unsigned not null auto_increment,

name varchar(50) not null,

author varchar(50) not null,

primary key (id)

)

id: 为书籍的ID言标识,主键

name:书籍名称

author:书书籍作者

本例数据表的比较简单,主要是方便于解释。

现在我们需要这样分页显示这些数据,要求:数据表中已经有 11 条记录,每页显示数据为 5 条,分多页显示。

根据要求现在分析一下,

第一页显示 0 - 4 条记录

第二页显示 5 - 9 条记录

第三页显示 10 - 14 条记录

实际上可以得出如下结论,每次都需要从 $posion 条显示,显示数为 $pageSize ,在mysql中有这样一条SQL语句:

SELECT *

FROM book_list

WHERE 1

LIMIT 0, 5

意思是从第 0 条记录开始,读取 5 条记录。我们可以这一语句的特点来构建我们的函数,其实每次显示时就是要确定 $posion 即可了。实现代码如下:

$pageNO = 3; //确实显示第三页

$posion = ($pageNO - 1) * $pageSize; //计算从第几条记录读取

//然后构建如下SQL语句

$sql = “SELECT * FROM book_list WHERE 1 LIMIT $posion , $pageSize”;

即可以直接读出要显示的那一页所有数据。

那么下面即给一个简化版的分页类,可以对任何的数据表进行分页显示的。以便抛砖引玉.

PHP:

class Page {

var $tableName; //操作的表

var $pageSize; //页大小, 默认为10页

var $pageNO; //当前页码即需要显示的页号

var $pageNum; //页数统计

var $order_field; //排序的字段

var $order_type; //排序的方法

//构造函数,实现附加功能

// $t 为操作的表名

function Page( $t ) {

if ( $t == '' ) {

echo " Table name is incorrect ! ";

return FALSE;

}

$this->tableName = $t;

$this->pageSize = 10;

$this->pageNO = 1;

$this->pageNum = NULL;

$this->order_field = '1';

$this->order_type = 'DESC'

}

//设置页大小

function Set_PageSize( $p = 10 ) {

$this->pageSize = $p;

return TRUE;

}

//设置当前页码

function Set_PageNo( $p ) {

$this->PageNo = $p;

return TRUE;

}

//获得总页数

// $t 为具体的表

function Get_PageNum() {

global $db; //引用一个全局的$db操作类对象

$sql = "SELECT count(*) AS num

FROM $this->tableName";

$result = $db->Query( $sql );

$obj = $db->FetchObject( $result );

return $this->pageNum = $obj->num;

}

//获得当前页码

function Get_PageNo() {

return $this->pageNo;

}

//获得当前分页大小

function Get_PageSize() {

return $this->pageSize;

}

//获得需要显示的页的起启行号

function Get_Posion() {

return $posion = ( $this->pageNO - 1 ) * $this->pageSize;

}

//读取数据表的数据

// $f 为需要读取的字段列表

// $c 为select语句的条件

//

// 结果将返回到数组内

//

// $data[0] = array (

// fieldname => value

// .

// .

// .

// )

//

function Get_Page( $f = '*', $c = 1 ) {

global $db //引用一个全局的$db操作类对象

//获得起启行号

$posion = $this->Get_Posion();

$sql = "SELECT $f

FROM $this->tableName

WHERE $c

ORDER BY $this->order_field $this->order_type

LIMIT $posion , $this->pageSize";

$result = $db->Query( $sql );

$data = array();

$i = 1;

while ( $arr = $db->FetchArray( $result ) ) {

foreach ( $arr as $key => $var )

$data[$i][$key] = $var;

$i++;

}

return $data;

}

}

类调用示例

PHP:

$page = new Page( 'book_list' );

//设定页大小为15页

$page->Set_PageSize(15);

//设定显示的页为第2页

$page->Set_PageNo(2);

//读取页数据

//读取书名和作者两个字段

//条件是作者一定要是stangly的所有的记录

$data = $page->Get_Page( "name, author", "author='stangly'" );

echo "当前显示第".$page->Get_PageNo()."页数据";

foreach ( $data as $key => $var ) {

echo "书名: $key";

echo "作者: $var";

}

备注:本程序没有经过详细测试,可能会存在有BUG,还望您指出一二。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有