我们已经了解了如何进行数据查询,今天我们来学习下如何对数据进行分页以及显示。
南沙网站制作公司哪家好,找创新互联!从网页设计、网站建设、微信开发、APP开发、响应式网站设计等网站项目制作,到程序开发,运营维护。创新互联从2013年成立到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联。
获取分页类
ThinkPHP提供了数据分页的扩展类库Page,可以在下载,或者下载官方的完整扩展包()里面也已经包含分页扩展类了。把解压后的Page.class.php放入ThinkPHP/Extend/Library/ORG/Util/(如果没有请手动创建)目录下面。
当然,扩展类库的位置其实比较随意,你也可以放入项目的类库目录下面,区别只是在于你导入路径的不同而已。
分页查询
分页类需要和查询相结合,我们可以使用ThinkPHP自带的limit方法或者page方法,目的就是为了获取当前分页的数据(也有先获取完整数据然后前端分页显示的方法,不在本文描述内容中,也不建议)。使用limit方法或者page方法是和数据库类型无关的。
我们首先在数据库里面创建一个think_data数据表用于测试:
CREATE TABLE IF NOT EXISTS `think_data` (
`id` smallint(4) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL,
`content` varchar(255) NOT NULL,
`create_time` int(11) unsigned NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;
复制代码
要使用分页查询,一般来说需要进行两次查询,即第一次查询得到满足条件的总数据量,然后第二次查询当前分页的数据,这样做的作用是告诉分页类当前的数据总数,以便计算生成的总页数(如果你的显示只是需要上下翻页的话,其实总数查询可以省略或者进行缓存)。
一个标准的分页使用示例如下:
$Data = M('Data'); // 实例化Data数据对象
import('ORG.Util.Page');// 导入分页类
$count = $Data-where($map)-count();// 查询满足要求的总记录数 $map表示查询条件
$Page = new Page($count);// 实例化分页类 传入总记录数
$show = $Page-show();// 分页显示输出
// 进行分页数据查询
$list = $Data-where($map)-order('create_time')-limit($Page-firstRow.','.$Page-listRows)-select();
$this-assign('list',$list);// 赋值数据集
$this-assign('page',$show);// 赋值分页输出
$this-display(); // 输出模板
复制代码
如果没有任何数据的话,分页显示为空白。所以在进行测试之前,请确保你的数据表里面有一定的数据,否则可能看不到分页的效果。如果使用page方法查询的话,则可以改成:
$Data = M('Data'); // 实例化Data数据对象
import('ORG.Util.Page');// 导入分页类
$count = $Data-where($map)-count();// 查询满足要求的总记录数
$Page = new Page($count);// 实例化分页类 传入总记录数
// 进行分页数据查询 注意page方法的参数的前面部分是当前的页数使用 $_GET[p]获取
$nowPage = isset($_GET['p'])?$_GET['p']:1;
$list = $Data-where($map)-order('create_time')-page($nowPage.','.$Page-listRows)-select();
$show = $Page-show();// 分页显示输出
$this-assign('page',$show);// 赋值分页输出
$this-assign('list',$list);// 赋值数据集
$this-display(); // 输出模板
复制代码
然后,我们在模板中添加分页输出变量即可:
table cellpadding=3 cellspacing=5
volist name="list" id="vo"
tr
td [ {$vo.create_time|date='Y-m-d H:i:s',###} ] {$vo.title} /td
/tr
/volist
tr
/tr
/table
div class="result page"{$page}/div
复制代码
可以看到分页输出只需要采用{$page}变量在模板中输出即可。
分页设置
设置分页变量
默认情况下,分页传值的变量是p,生成的分页跳转地址可能类似于:
复制代码
我们可以配置VAR_PAGE配置参数来改变:
'VAR_PAGE'='page'
复制代码
则分页地址变成:
复制代码
设置每页记录数
默认的情况下,分页显示每页会显示20条数据,如果你希望改变每页显示的数据量的话,实例化分页类的时候可以传人第二个参数即可:
$Page = new Page($count,5);// 实例化分页类 传入总记录数并且每页显示5条记录
复制代码
由于查询方法中我们使用了$Page-listRows属性,所以无需更改,但如果你是直接在查询方法中使用数字请记得一起更改。
下面是官方的分页示例的显示效果:
传入分页条件
默认情况下,分页类会自动获取当前页面的POST(优先)或者GET变量作为分页跳转的传值,如果需要指定传入当前分页跳转的参数,就可以通过设置parameter属性,parameter属性支持2种方式传值:字符串和数组。字符串采用var1=val1var2=val2...的格式,例如:
foreach($map as $key=$val) {
$Page-parameter .= "$key=".urlencode($val).'';
}
复制代码
或者直接传入数组:
$Page-parameter = array_map('urlencode',$map);
复制代码
由于内部调用了U函数,分页类最终生成的分页跳转链接会根据当前的URL设置自动生成和当前URL模式一致的地址,所以无需担心分页链接的参数影响URL地址。
分页路由支持
如果你的分页跳转链接地址采用了路由,那么可以通过设置url参数,例如,假设我们的分页URL地址格式是:
复制代码
这样的URL路由地址,那么我们就可以设置
$Page-url = 'data/index';
复制代码
设置后,分页类的链接地址会自动生成上面的URL格式地址。
注意,url参数和parameter 同时使用的话,后者无效。
设置显示的页数
可以在实例化分页类之后,进行相关属性的设置。默认情况下,页面显示的页数是5,我们可以修改:
$Page-rollPage = 3;
复制代码
这样,页面上只能同时看到3个分页
分页显示定制
上面讲的是分页的参数设置,下面讲下如何对分页显示效果(包括样式)进行设置。默认的分页效果可能不能满足所有的要求,分页类提供了一个setConfig方法来修改默认的一些设置。例如:
$page-setConfig('header','个会员');
复制代码
setConfig方法支持的属性包括:
header 头部描述信息,默认值 “条记录”
prev 上一页描述信息,默认值是“上一页”
next 下一页描述信息,默认值是“下一页”
first 第一页描述信息,默认值是“第一页”
last 最后一页描述信息,默认值是“最后一页”
theme 分页主题描述信息,包括了上面所有元素的组合 ,设置该属性可以改变分页的各个单元的显示位置,默认值是
"%totalRow% %header% %nowPage%/%totalPage% 页 %upPage% %downPage% %first% %prePage% %linkPage% %nextPage% %end%"
通过setConfig设置以上属性可以完美的定制出你的分页显示风格。
?php
class Page {
private $total; //数据表中总记录数
private $listRows; //每页显示行数
private $limit;
private $uri;
private $pageNum; //页数
private $config=array('header'="个记录", "prev"="上一页", "next"="下一页", "first"="首 页", "last"="尾 页");
private $listNum=8;
/*
* $total
* $listRows
*/
public function __construct($total, $listRows=10, $pa=""){
$this-total=$total;
$this-listRows=$listRows;
$this-uri=$this-getUri($pa);
$this-page=!empty($_GET["page"]) ? $_GET["page"] : 1;
$this-pageNum=ceil($this-total/$this-listRows);
$this-limit=$this-setLimit();
}
private function setLimit(){
return "Limit ".($this-page-1)*$this-listRows.", {$this-listRows}";
}
private function getUri($pa){
$url=$_SERVER["REQUEST_URI"].(strpos($_SERVER["REQUEST_URI"], '?')?'':"?").$pa;
$parse=parse_url($url);
if(isset($parse["query"])){
parse_str($parse['query'],$params);
unset($params["page"]);
$url=$parse['path'].'?'.http_build_query($params);
}
return $url;
}
private function __get($args){
if($args=="limit")
return $this-limit;
else
return null;
}
private function start(){
if($this-total==0)
return 0;
else
return ($this-page-1)*$this-listRows+1;
}
private function end(){
return min($this-page*$this-listRows,$this-total);
}
private function first(){
if($this-page==1)
$html.='';
else
$html.="nbsp;nbsp;a href='javascript:setPage(\"{$this-uri}page=1\")'{$this-config["first"]}/anbsp;nbsp;";
return $html;
}
private function prev(){
if($this-page==1)
$html.='';
else
$html.="nbsp;nbsp;a href='javascript:setPage(\"{$this-uri}page=".($this-page-1)."\")'{$this-config["prev"]}/anbsp;nbsp;";
return $html;
}
private function pageList(){
$linkPage="";
$inum=floor($this-listNum/2);
for($i=$inum; $i=1; $i--){
$page=$this-page-$i;
if($page1)
continue;
$linkPage.="nbsp;a href='javascript:setPage(\"{$this-uri}page={$page}\")'{$page}/anbsp;";
}
$linkPage.="nbsp;{$this-page}nbsp;";
for($i=1; $i=$inum; $i++){
$page=$this-page+$i;
if($page=$this-pageNum)
$linkPage.="nbsp;a href='javascript:setPage(\"{$this-uri}page={$page}\")'{$page}/anbsp;";
else
break;
}
return $linkPage;
}
private function next(){
if($this-page==$this-pageNum)
$html.='';
else
$html.="nbsp;nbsp;a href='javascript:setPage(\"{$this-uri}page=".($this-page+1)."\")'{$this-config["next"]}/anbsp;nbsp;";
return $html;
}
private function last(){
if($this-page==$this-pageNum)
$html.='';
else
$html.="nbsp;nbsp;a href='javascript:setPage(\"{$this-uri}page=".($this-pageNum)."\")'{$this-config["last"]}/anbsp;nbsp;";
return $html;
}
private function goPage(){
return 'nbsp;nbsp;input type="text" onkeydown="javascript:if(event.keyCode==13){var page=(this.value'.$this-pageNum.')?'.$this-pageNum.':this.value;setPage(\''.$this-uri.'page=\'+page+\'\')}" value="'.$this-page.'" style="width:25px"input type="button" value="GO" onclick="javascript:var page=(this.previousSibling.value'.$this-pageNum.')?'.$this-pageNum.':this.previousSibling.value;setPage(\''.$this-uri.'page=\'+page+\'\')"nbsp;nbsp;';
}
function fpage($display=array(0,1,2,3,4,5,6,7,8)){
$html[0]="nbsp;nbsp;共有b{$this-total}/b{$this-config["header"]}nbsp;nbsp;";
$html[1]="nbsp;nbsp;每页显示b".($this-end()-$this-start()+1)."/b条,本页b{$this-start()}-{$this-end()}/b条nbsp;nbsp;";
$html[2]="nbsp;nbsp;b{$this-page}/{$this-pageNum}/b页nbsp;nbsp;";
$html[3]=$this-first();
$html[4]=$this-prev();
$html[5]=$this-pageList();
$html[6]=$this-next();
$html[7]=$this-last();
$html[8]=$this-goPage();
$fpage='';
foreach($display as $index){
$fpage.=$html[$index];
}
return $fpage;
}
}
PHP代码如下:
/*
Author:默默
Date :2006-12-03
*/
$page=isset($_GET['page'])?intval($_GET['page']):1; //这句就是获取page=18中的page的值,假如不存在page,那么页数就是1。
$num=10; //每页显示10条数据
$db=mysql_connect("host","name","pass"); //创建数据库连接
$select=mysql_select_db("db",$db); //选择要操作的数据库
/*
首先咱们要获取数据库中到底有多少数据,才能判断具体要分多少页,具体的公式就是
总数据数除以每页显示的条数,有余进一。
也就是说10/3=3.3333=4 有余数就要进一。
*/
$total=mysql_num_rows(mysql_query("select id from table")); //查询数据的总数,id是数据库中的一个自动赋值的字段
$pagenum=ceil($total/$num); //获得总页数
//假如传入的页数参数大于总页数,则显示错误信息
If($page$pagenum || $page == 0){
Echo "Error : Can Not Found The page .";
Exit;
}
$offset=($page-1)*$num; //获取limit的第一个参数的值,假如第一页则为(1-1)*10=0,第二页为(2-1)*10=10。
$info=mysql_query("select name from table limit $offset,$num"); //获取相应页数所需要显示的数据,name是数据里的一个字段
While($it=mysql_fetch_array($info)){
Echo $it['name']."
";
} //显示数据
For($i=1;$i=$pagenum;$i++){
$show=($i!=$page)?"$i":"$i";
Echo $show." ";
}
/*显示分页信息,假如是当页则显示粗体的数字,其余的页数则为超连接,假如当前为第三页则显示如下
1 2 3 4 5 6
*/
?
1、前言
分页显示是一种非常常见的浏览和显示大量数据的方法,属于web编程中最常处理的事件之一。对于web编程的老手来说,编写这种代码实在是和呼吸一样自然,但是对于初学者来说,常常对这个问题摸不着头绪,因此特地撰写此文对这个问题进行详细的讲解,力求让看完这篇文章的朋友在看完以后对于分页显示的原理和实现方法有所了解。本文适合初学者阅读,所有示例代码均使用php编写。
2、原理
所谓分页显示,也就是将数据库中的结果集人为的分成一段一段的来显示,这里需要两个初始的参数:
每页多少条记录($PageSize)?
当前是第几页($CurrentPageID)?
现在只要再给我一个结果集,我就可以显示某段特定的结果出来。
至于其他的参数,比如:上一页($PreviousPageID)、下一页($NextPageID)、总页数($numPages)等等,都可以根据前边这几个东西得到。
以mysql数据库为例,如果要从表内截取某段内容,sql语句可以用:select * from table limit offset, rows。看看下面一组sql语句,尝试一下发现其中的规率。
前10条记录:select * from table limit 0,10
第11至20条记录:select * from table limit 10,10
第21至30条记录:select * from table limit 20,10
……
这一组sql语句其实就是当$PageSize=10的时候取表内每一页数据的sql语句,我们可以总结出这样一个模板:
select * from table limit ($CurrentPageID - 1) * $PageSize, $PageSize
拿这个模板代入对应的值和上边那一组sql语句对照一下看看是不是那么回事。搞定了最重要的如何获取数据的问题以后,剩下的就仅仅是传递参数,构造合适的sql语句然后使用php从数据库内获取数据并显示了。以下我将用具体代码加以说明。
3、简单代码
请详细阅读以下代码,自己调试运行一次,最好把它修改一次,加上自己的功能,比如搜索等等。
?php
// 建立数据库连接
$link = mysql_connect("localhost", "mysql_user", "mysql_password")
or die("Could not connect: " . mysql_error());
// 获取当前页数
if( isset($_GET['page']) ){
$page = intval( $_GET['page'] );
}
else{
$page = 1;
}
// 每页数量
$PageSize = 10;
// 获取总数据量
$sql = "select count(*) as amount from table";
$result = mysql_query($sql);
$row = mysql_fetch_row($result);
$amount = $row['amount'];
// 记算总共有多少页
if( $amount ){
if( $amount $page_size ) //如果总数据量小于$PageSize,那么只有一页
if( $amount % $page_size ){ //取总数据量除以每页数的余数
$page_count = (int)($amount / $page_size) + 1; //如果有余数,则页数等于总数据量除以每页数的结果取整再加一
}else{
$page_count = $amount / $page_size; //如果没有余数,则页数等于总数据量除以每页数的结果
}
}
else{
$page_count = 0;
}
// 翻页链接
$page_string = '';
if( $page == 1 ){
$page_string .= '第一页|上一页|';
}
else{
$page_string .= 'a href="/?page=1";第一页/a|a href="/?page='."($page-1).'上一页/a|';
}
if( ($page == $page_count) || ($page_count == 0) ){
$page_string .= '下一页|尾页';
}
else{
$page_string .= 'a href="/?page='."($page+1).'下一页/a|a href="/?page='."$page_count.'尾页/a';
}
// 获取数据,以二维数组格式返回结果
if( $amount ){
$sql = "select * from table order by id desc limit ". ($page-1)*$page_size .", $page_size";
$result = mysql_query($sql);
while ( $row = mysql_fetch_row($result) ){
$rowset[] = $row;
}
}else{
$rowset = array();
}
// 没有包含显示结果的代码,那不在讨论范围,只要用foreach就可以很简单的用得到的二维数组来显示结果
?
4、OO风格代码
以下代码中的数据库连接是使用的pear db类进行处理
?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 )
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 )
if ( !$this-isFirstPage )
}
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;
}
}
?
?php
// FileName: test_pager.php
// 这是一段简单的示例代码,前边省略了使用pear db类建立数据库连接的代码
require "Pager.class.php";
if ( isset($_GET['page']) )
{
$page = (int)$_GET['page'];
}
else
{
$page = 1;
}
$sql = "select * from table order by id";
$pager_option = array(
"sql" = $sql,
"PageSize" = 10,
"CurrentPageID" = $page
);
if ( isset($_GET['numItems']) )
{
$pager_option['numItems'] = (int)$_GET['numItems'];
}
$pager = @new Pager($pager_option);
$data = $pager-getPageData();
if ( $pager-isFirstPage )
{
$turnover = "首页|上一页|";
}
else
{
$turnover = "a href='?page=1numItems=".$pager-numItems."'首页/a|a href="/?page=".$pager-PreviousPageID."numItems=".$pager-numItems."'上一页/a|";
}
if ( $pager-isLastPage )
{
$turnover .= "下一页|尾页";
}
else
{
$turnover .= "a href="/?page=".$pager-NextPageID."numItems=".$pager-numItems."'下一页/a|a href="/?page=".$pager-numPages."numItems=".$pager-numItems."'尾页/a";
}
?
需要说明的地方有两个:
这个类仅仅处理数据,并不负责处理显示,因为我觉得将数据的处理和结果的显示都放到一个类里边实在是有些勉强。显示的时候情况和要求多变,不如自己根据类给出的结果处理,更好的方法是根据这个Pager类继承一个自己的子类来显示不同的分页,比如显示用户分页列表可以:
?php
Class MemberPager extends Pager
{
function showMemberList()
{
global $db;
$data = $this-getPageData();
// 显示结果的代码
// ......
}
}
/// 调用
if ( isset($_GET['page']) )
{
$page = (int)$_GET['page'];
}
else
{
$page = 1;
}
$sql = "select * from members order by id";
$pager_option = array(
"sql" = $sql,
"PageSize" = 10,
"CurrentPageID" = $page
);
if ( isset($_GET['numItems']) )
{
$pager_option['numItems'] = (int)$_GET['numItems'];
}
$pager = @new MemberPager($pager_option);
$pager-showMemberList();
?
第二个需要说明的地方就是不同数据库的兼容性,在不同的数据库里截获一段结果的写法是不一样的。
mysql: select * from table limit offset, rows
pgsql: select * from table limit m offset n
......
所以要在类里边获取结果的时候需要使用pear db类的limitQuery方法。
ok,写完收功,希望花时间看完这些文字的你不觉得是浪费了时间。
回答者
另外,虚机团上产品团购,超级便宜
html
head
title分页显示/title
/head
script language="javascript"
function confirmDel()
{
var confirm=window.confirm("您确定要删除吗?");
if(confirm)
return true;
else
return false;
}
/script
body bgcolor="cce8cf"
center
table border="1" width="90%" cellspacing="1"
tr bgcolor="yellow"
td用户ID/td
td用户名/td
td密码/td
td性别/td
td年龄/td
td电子邮件/td
td操作/td
/tr
?php
error_reporting(0);
//设置页大小,即每页显示几条数据
$pagesize=10;
//设置第一页
$page=1;
//数据库初始化操作
$link=mysql_connect("localhost","root","root");//连接数据库
$db=mysql_select_db("HibernateDemo",$link);//选择数据库
$sql="select count(*) from userinfo";//构造sql语句
$res=mysql_query($sql);//执行查询操作,结果为总记录数
$row=mysql_fetch_array($res);//取出一条记录
$rows=$row[0];//取出总记录数
//判断一共多少页
$pages=intval($rows/$pagesize);//取整数页,总页数
if($rows%$pagesize)
$pages=$pages+1;//如果还有余数的话,那么就再加一页来显示剩余的记录
//获取用户请求,即用户提交要去哪一页
$page=$_GET["ToPage"];
//整理用户输入
if($page=0)
{
$page=1;//因为开始的时候没$page有值,所以是0,所以就让$page=1,这样后面的
//$page也就是1,见第97行
}
if($page=$pages)
{
$page=$pages;
}
session_start();
echo "div align='right' top='0'a href='logout.php'注销".$_SESSION['username']."/a/div";
echo "当前第".$page."页,每页10个记录,总".$rows."条记录,一共".$pages."页";//显示页数信息
//计算偏移量
$offset=$pagesize*($page-1);
//构造sql语句
$sqlx="select * from userinfo limit 10 offset ".$offset;
$result=mysql_query($sqlx);//执行查询操作
$ok=mysql_fetch_array($result);
while($ok)
{
?
tr
td bgcolor="#DEB887"?php echo $ok[0] ?/td
td?php echo $ok[1] ?/td
td?php echo $ok[2] ?/td
td?php echo $ok[3]==male?"男":"女" ?/td
td?php echo $ok[4] ?/td
td?php echo $ok[5] ?/td
tda href="updateInfo.php?userid=?php echo $ok[0] ?"修改/a
a href="deleteInfo.php?userid=?php echo $ok[0] ?"
onclick="return confirmDel();"删除/a
/td
/tr
?php
$ok=mysql_fetch_array($result);
}
?
/table
table
?php
//判断当前是否是第一页,不是,则显示'第一页'和'上一页'
if($page!=1)
{
?
tr
td align="center"
a href="pageSelect.php?ToPage=1"第一页/a
a href="pageSelect.php?ToPage=?php echo ($page-1) ?"上一页/a
/td
?php
}
//如果不是最后一页,则显示‘最后一页’和‘下一页’
if($page!=$pages)
{
?
td align="center" colspan="6"
a href="pageSelect.php?ToPage=?php echo ($page+1) ?"下一页/a
a href="pageSelect.php?ToPage=?php echo ($pages) ?"最后一页/a
/td
?php
}
?
table
form action="pageSelect.php" method="get" name="form1"
tr
td colspan="6" align="center"
input type="text" value="?php echo ($page) ?" name="ToPage"
size="3" /
a href="javascript:window.document.form1.submit();"GO/a
/td
/tr
/form
/table
/center
/body
/html
原理:
1.设定每页显示数
$num = 15;
2.获取数据总数计算总页数
3.通过get方法获取页码,无获取值页码为1,超过最大页数为最大页面数
$page = $_GET['page'] ? $_GET['page'] : 1;
4.通过页码来计算当前显示起始记录
$start = $page*$num-1;
5.通过sql语句查询
query("select * from tablename limit $start,$num");
然后输出就行了
页面上可以循环输出1~总页数 这些数字来实现翻页,也可以用其他方法
比较方便的方法是,可以去找一个分页类