俗话说:“一个工人要想把工作做好,必须先把工具磨快。”今天我们就用PHP来实现分页。那么我们的第一个任务就是构建PHP的工作环境。
环境准备
使用PHP技术,最好的合作伙伴是AMP(Apache、MySQL、PHP)。现在有很多集成环境,比如WAMP、XAMPP、phpnow等等。但是今天我要手动构建一个PHP工作环境。
街头流氓
我们首先需要从Apache官网下载Apache服务器。最好下载msi版本,因为我们不需要手动配置各种环境。
Apache下载地址:ApacheServer的一个msi版本,是快速构建PHP服务器环境的首选。
关系型数据库
MySQL作为数据库领域知名的开源项目,也被Oracle收购了,不知道以后会不会收费。但目前来看,MySQL是PHP开发的最佳选择。不用说,请附上下载地址。
MySQL下载地址
请记住在安装过程中记住用户名和密码。
服务器端编程语言(Professional Hypertext Preprocessor的缩写)
有人说PHP不是一种语言,而是一个框架,一个连接到MySQL的客户端实现。我仔细想了想,似乎有些道理。但是如果我们这样说,有很多语言不是语言。作为一个平民英雄,众所周知php取得了很大的进步。php的下载地址附在下面,不要单独找。
PHP的下载地址:PHP的msi版本,不用手动配置环境就可以快速搭建
作业环境
安装好以上三个软件后,就可以正式开始搭建环境了。目前我们需要知道的是,我们的工作目录在apache的htdocs文件夹下,而htdocs作为一个虚拟目录是由Apache配置文件维护的,我们以后会慢慢接触到。
请记住,它位于apache安装目录下的htdocs文件夹中。
数据库准备
虽然环境设置好了,如果要做分页。首先要有数据。“聪明的女人离不开米饭”。让我们准备下面的数据。
数据库建设
建立数据库语句创建数据库my _ database _ name这里,只需使用mysql安装附带的MySQL数据库。也省了点麻烦。
制造手表
数据仓库还在建,现在我们需要“分房”,也就是数据存储的地方、表格。
create table table _ name();在这里,我们也用自己的数据库表来表示懒惰。详情如下:
mysql使用MySQL database changedmysql desc innodb _ table _ stats;-------|字段|类型| Null |键|默认值|额外|----|数据库_名称| varchar(64) | NO | PRI | NULL | |表_名称| varchar(64)| NO | PRI | Null | | last _ update | TIMESTAMP | NO | | CURRENT _ TIMESTAMP | on update CURRENT _ TIMESTAMP | n _ rows | big int(20)无符号| NO | | Null | | | clustered _ index _ size | big int(20)无符号| NO | | NULL | | | Sum _ of _ other _ index _ size | big int(20)无符号| no | | null | | -。
为了方便演示,我们需要预先存储一些数据。使用批量导入还是手动添加并不重要。核心或
插入table_name()值();
例如,我们存储的数据如下:
关系型数据库从innodb_table_stats中选择*;-| database _ name | table _ name | last _ update | n _ row | clustered _ index _ size | sum _ of _ other _ index _ size |-| fams | admin | 2016-07-19 14:02 | 3 | 1 | 0 | | fams | assets _ in | 2016-07-14 14:42336044 | 2 | 1 | 3 | | fams | assets _ out | 2016狗| 2016-08-11 15:25:50 | 4 | 1 | 0 | | fams |固定_资产| 2016-07-14 15:09 | 6 | 1 | 2 | | fams | sub _ class | 2016-07-14 14:38336051 | 8 | 1 | 1 | | fams | user | 2016-016 2016-08-08 08:26:56 | 2 | 1 | 0 | | privilegesystem | role _ privilege | 2016拓展准备
如果是非中规模集成电路(中等规模集成的缩写)版本的安装的话,我们需要手动的开启服务器端编程语言(专业超文本预处理器的缩写)的拓展,这样才能使用关系型数据库的一些函数来操作数据库。
php.ini
该文件位于服务器端编程语言(专业超文本预处理器的缩写)的安装目录。我们需要把下面代码前面的分号去掉即可。
[PHP _ MYSQL]扩展名=PHP _ MySQL。dll[PHP _ MYSQLI]扩展名=PHP _ MySQL Li . dll
在服务器端编程语言(专业超文本预处理器的缩写)的初始化设置文件的后缀名文件中,注释是;
分页原理
"万事俱备只欠东风",现在就来说说分页的核心思想。
那就是当前页,页面大小,总记录数。这三个通过总记录数和页面大小,我们就可以计算出总的页数。然后根据当前页来实现对应的显示。
总记录数
//获取总的记录数$sql_total_records='从innodb_table_stats中选择计数(*);$ total _ records _ result=MySQL _ query($ SQL _ total _ records);$ total _ records=MySQL _ fetch _ row($ total _ records _ result);"回声"总的记录数位: '.$total_records[0].br ';当前页
//通过得到方式获得客户端访问的页码$ current _ page _ number=isset($ _ GET[' page _ number '])?$ _ GET[' page _ number ']:1;if($ current _ page _ number 1){ $ current _ page _ number=1;} if($ current _ page _ number $ total _ pages){ $ current _ page _ number=$ total _ pages;}回声要访问的页码为:'.$当前_页码分页核心
//获取到了要访问的页面以及页面大小,下面开始分页$ begin _ position=($ current _ page _ number-1)* $ page _ size;$sql='从innodb_table_stats限制中选择$ begin _ position,$ page _ size ';$ result=MySQL _ query($ SQL);就这样我们就可以拿到自己想要的结果集了。接下来的就是如何在页面上进行展示而已。
页面展示
//处理结果集echo ' Table border=' # CCF solid 1px ' thmysql固定资产表/th ';echo ' trtdDbName/tdtdtdtdtdtablename/tdtdtdtdlast _ update/tdtdtdtdn _ Nows/tdtdtdtdclustered _ Index _ Size/tdtdtdtdsum _ od _ Other _ Index _ Size/TD/tr ';while(($ row=MySQL _ fetch _ row($ result)){ echo ' tr ';回声td ' .$row[0],"/TD ';回声td ' .$row[1],"/TD ';回声td ' .$row[2],"/TD ';回声td ' .$row[3],"/TD ';回声td ' .$row[4],"/TD ';回声td ' .$row[5],"/TD ';echo '/tr ';} echo '/table ';//循环显示总页数?phpecho 'a href='SlicePage.php?页码=1 '首页/a ';for($ I=1;$ i=$ total _ pages$i ){ echo 'a href=' ./SlicePage.php?页码=' .我。第一美元.页/a ';}echo 'a href='SlicePage.php?页码=' .($current_page_number-1).''上一页/a ';echo 'a href='SlicePage.php?页码=' .($current_page_number 1).''下一页/a ';echo 'a href='SlicePage.php?页码=' .($total_pages).''尾页/a ';分页实现
了解了上面的内容之后,下面来看一下这个完整的例子吧。
代码SlicePage.php
meta charset='utf-8 '?php/解决中文乱码,发现不能奏效,则考虑关系型数据库客户端乱码情况标题('内容类型=文本/html;charset=utf-8 ');$ host=' localhost $ username=' root $ password=' MySQL $ dbname=' MySQL//开始获取数据库连接$conn=mysql_connect($host,$username,$password)或die(MySQL _ error());//手动更改客户端编码MySQL _ query(' set name utf8 ');//选择使用哪一个数据库MySQL _ select _ db($ db name);//获取总的记录数$sql_total_records='从innodb_table_stats中选择计数(*);$ total _ records _ result=MySQL _ query($ SQL _ total _ records);$ total _ records=MySQL _ fetch _ row($ total _ records _ result);"回声"总的记录数位: '.$total_records[0].br ';//获得总页数,一般来说页面大小事固定的,所以这里暂且定为一页5个数据$ page _ size=3;$ total _ pages=ceil($ total _ records[0]/$ page _ size);"回声"总页数为: '.$ total _ pages//通过得到方式获得客户端访问的页码$ current _ page _ number=isset($ _ GET[' page _ number '])?$ _ GET[' page _ number ']:1;if($ current _ page _ number 1){ $ current _ page _ number=1;} if($ current _ page _ number $ total _ pages){ $ current _ page _ number=$ total _ pages;}回声要访问的页码为:'.$ current _ page _ number//获取到了要访问的页面以及页面大小,下面开始分页$ begin _ position=($ current _ page _ number-1)* $ page _ size;$sql='从innodb_table_stats限制中选择$ begin _ position,$ page _ size ';$ result=MySQL _ query($ SQL);//处理结果集echo ' Table border=' # CCF solid 1px ' thmysql固定资产表/th ';echo ' trtdDbName/tdtdtdtdtdtablename/tdtdtdtdlast _ update/tdtdtdtdn _ Nows/tdtdtdtdclustered _ Index _ Size/tdtdtdtdsum _ od _ Other _ Index _ Size/TD/tr ';while(($ row=MySQL _ fetch _ row($ result)){ echo ' tr ';回声td ' .$row[0],"/TD ';回声td ' .$row[1],"/TD ';回声td ' .$row[2],"/TD ';回声td ' .$row[3],"/TD ';回声td ' .$row[4],"/TD ';回声td ' .$row[5],"/TD ';echo '/tr ';} echo '/table ';//循环显示总页数?phpecho 'a href='SlicePage.php?页码=1 '首页/a ';for($ I=1;$ i=$ total _ pages$i ){ echo 'a href=' ./SlicePage.php?页码=' .我。第一美元.页/a ';}echo 'a href='SlicePage.php?页码=' .($current_page_number-1).''上一页/a ';echo 'a href='SlicePage.php?页码=' .($current_page_number 1).''下一页/a ';echo 'a href='SlicePage.php?页码=' .($total_pages).''尾页/a ';//释放数据连接资源MySQL _ free _ result($ result);MySQL _ close($ conn);结果初始页为:
点击页码
下一页
总结
分页是一个很实用的技术,相比较于爪哇的实现,PHP实现起来灵活性还是很高的。解放了繁琐的面向对象的编程,在思路清晰的时候确实能给人以美感。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。