+ -
当前位置:首页 → 问答吧 → Ajax+PHP分页演示,带源码下载!!

Ajax+PHP分页演示,带源码下载!!

时间:2006-12-04

来源:互联网

今天看默默讲解分页,想想好像原创区很久没人发帖了,就顺便把默默的那个扩展开来,来个PHP+AJAX分页演示吧,好的,说来就来,首先我们依然是基本的AJAX开发框架:
复制内容到剪贴板
代码:
var http_request=false;
  function send_request(url){//初始化,指定处理函数,发送请求的函数
    http_request=false;
    //开始初始化XMLHttpRequest对象
    if(window.XMLHttpRequest){//Mozilla浏览器
     http_request=new XMLHttpRequest();
     if(http_request.overrideMimeType){//设置MIME类别
       http_request.overrideMimeType("text/xml");
     }
    }
    else if(window.ActiveXObject){//IE浏览器
     try{
      http_request=new ActiveXObject("Msxml2.XMLHttp");
     }catch(e){
      try{
      http_request=new ActiveXobject("Microsoft.XMLHttp");
      }catch(e){}
     }
    }
    if(!http_request){//异常,创建对象实例失败
     window.alert("创建XMLHttp对象失败!");
     return false;
    }
    http_request.onreadystatechange=processrequest;
    //确定发送请求方式,URL,及是否同步执行下段代码
    http_request.open("GET",url,true);
    http_request.send(null);
  }
  //处理返回信息的函数
  function processrequest(){
   if(http_request.readyState==4){//判断对象状态
     if(http_request.status==200){//信息已成功返回,开始处理信息
      document.getElementById(reobj).innerHTML=http_request.responseText;
     }
     else{//页面不正常
      alert("您所请求的页面不正常!");
     }
   }
  }
  function dopage(obj,url){
   document.getElementById(obj).innerHTML="正在读取数据...";
   send_request(url);
   reobj=obj;
   }
内容我放在一个div中显示,当翻页动作产生时,利用AJAX更新DIV达到翻页效果这是内容显示页面代码:
复制内容到剪贴板
代码:
<?php
header("Content-type: text/html;charset=GBK");//输出编码,避免中文乱码
?>
<html>
<head>
<title>ajax分页演示</title>
<script language="javascript" src="ajaxpg.js"></script>
</head>
<body>
<div id="result">
<?php
$page=isset($_GET['page'])?intval($_GET['page']):1;        //这句就是获取page=18中的page的值,假如不存在page,那么页数就是1。
$num=10;                                      //每页显示10条数据

$db=mysql_connect("localhost","root","7529639");           //创建数据库连接
mysql_select_db("cr_download");                 //选择要操作的数据库

/*
首先咱们要获取数据库中到底有多少数据,才能判断具体要分多少页,具体的公式就是
总数据库除以每页显示的条数,有余进一。
也就是说10/3=3.3333=4 有余数就要进一。
*/

$result=mysql_query("select * from cr_userinfo");
$total=mysql_num_rows($result); //查询所有的数据

$url='test.php';//获取本页URL

//页码计算
$pagenum=ceil($total/$num);                                    //获得总页数,也是最后一页
$page=min($pagenum,$page);//获得首页
$prepg=$page-1;//上一页
$nextpg=($page==$pagenum ? 0 : $page+1);//下一页
$offset=($page-1)*$num;                                        //获取limit的第一个参数的值,假如第一页则为(1-1)*10=0,第二页为(2-1)*10=10。

//开始分页导航条代码:
$pagenav="显示第 <B>".($total?($offset+1):0)."</B>-<B>".min($offset+10,$total)."</B> 条记录,共 $total 条记录 ";

//如果只有一页则跳出函数:
if($pagenum<=1) return false;

$pagenav.=" <a href=javascript:dopage('result','$url?page=1');>首页</a> ";
if($prepg) $pagenav.=" <a href=javascript:dopage('result','$url?page=$prepg');>前页</a> "; else $pagenav.=" 前页 ";
if($nextpg) $pagenav.=" <a href=javascript:dopage('result','$url?page=$nextpg');>后页</a> "; else $pagenav.=" 后页 ";
$pagenav.=" <a href=javascript:dopage('result','$url?page=$pagenum');>尾页</a> ";
$pagenav.="</select> 页,共 $pagenum 页";

//假如传入的页数参数大于总页数,则显示错误信息
If($page>$pagenum){
       Echo "Error : Can Not Found The page ".$page;
       Exit;
}

$info=mysql_query("select * from cr_userinfo limit $offset,$num");   //获取相应页数所需要显示的数据
While($it=mysql_fetch_array($info)){
       Echo $it['username'];
       echo "<br>";
}                                                              //显示数据
  echo"<br>";
  echo $pagenav;//输出分页导航

?>
</div>
</body>
</html>
翻页的关键就在于翻页时调用dopage()函数,接着利用回调信息来更新div中的内容。服务器端核心代码:
复制内容到剪贴板
代码:
<?php
header("Content-type: text/html;charset=GBK");//输出编码,避免中文乱码
$page=isset($_GET['page'])?intval($_GET['page']):1;        //这句就是获取page=18中的page的值,假如不存在page,那么页数就是1。
$num=10;                                      //每页显示10条数据

$db=mysql_connect("localhost","root","7529639");           //创建数据库连接
mysql_select_db("cr_download");                 //选择要操作的数据库

/*
首先咱们要获取数据库中到底有多少数据,才能判断具体要分多少页,具体的公式就是
总数据库除以每页显示的条数,有余进一。
也就是说10/3=3.3333=4 有余数就要进一。
*/

$result=mysql_query("select * from cr_userinfo");
$total=mysql_num_rows($result); //查询所有的数据

$url='test.php';//获取本页URL

//页码计算
$pagenum=ceil($total/$num);                                    //获得总页数,也是最后一页
$page=min($pagenum,$page);//获得首页
$prepg=$page-1;//上一页
$nextpg=($page==$pagenum ? 0 : $page+1);//下一页
$offset=($page-1)*$num;                                        //获取limit的第一个参数的值,假如第一页则为(1-1)*10=0,第二页为(2-1)*10=10。

//开始分页导航条代码:
$pagenav="显示第 <B>".($total?($offset+1):0)."</B>-<B>".min($offset+10,$total)."</B> 条记录,共 $total 条记录 ";

//如果只有一页则跳出函数:
if($pagenum<=1) return false;

$pagenav.=" <a href=javascript:dopage('result','$url?page=1');>首页</a> ";
if($prepg) $pagenav.=" <a href=javascript:dopage('result','$url?page=$prepg');>前页</a> "; else $pagenav.=" 前页 ";
if($nextpg) $pagenav.=" <a href=javascript:dopage('result','$url?page=$nextpg');>后页</a> "; else $pagenav.=" 后页 ";
$pagenav.=" <a href=javascript:dopage('result','$url?page=$pagenum');>尾页</a> ";
$pagenav.="</select> 页,共 $pagenum 页";

//假如传入的页数参数大于总页数,则显示错误信息
If($page>$pagenum){
       Echo "Error : Can Not Found The page ".$page;
       Exit;
}

$info=mysql_query("select * from cr_userinfo limit $offset,$num");   //获取相应页数所需要显示的数据
While($it=mysql_fetch_array($info)){
       Echo $it['username'];
       echo "<br>";
}                                                              //显示数据
  echo"<br>";
  echo $pagenav;//输出分页导航
  
?>
怎么样?很好理解吧?这次提供源码下载,大家自己再试试看~~~,最后依然是看看效果图:^_^
2.jpg (2.42 KB)

2006-12-3 19:42

开始翻页

3.jpg (16.46 KB)

2006-12-3 19:42

翻页完成

ajaxpage.rar (3.29 KB)

2006-12-3 19:42, 下载次数: 4249

源代码

作者: leehui1983   发布时间: 2006-12-03

谢谢了,还没有学Ajax,下一步学习

作者: 王洋姜   发布时间: 2006-12-03

学习ajax好象还得学点DHTML……

作者: Nickboy   发布时间: 2006-12-03

又一篇好实例,支持楼主继续发贴~

作者: sufing0x1   发布时间: 2006-12-04

想问一下,JS是不是有一个函数是设置停顿的,是S???(1) 的格式,具体的我忘记了~

记得有人说过,是在AJAX中的,说是为了让你能看得清效果特意加上去了。希望有人知道~

作者: sufing0x1   发布时间: 2006-12-04

怎么用来

作者: 唐员外   发布时间: 2006-12-04

停顿,不太清楚呢,谁知道就跟吧

作者: leehui1983   发布时间: 2006-12-04

没人顶啊,太打击原创积极性了,自己顶起

作者: leehui1983   发布时间: 2006-12-05

作者: fengyun   发布时间: 2006-12-05

作者: �����i�i   发布时间: 2006-12-11

斑竹给个精华吧!!!:lol

作者: leehui1983   发布时间: 2006-12-15

感谢楼主给我们带来这么好的东西

作者: bighead   发布时间: 2006-12-21

不错啊

作者: geluli   发布时间: 2006-12-21

看来大家喜欢这个呢,呵呵,争取以后改进个

作者: leehui1983   发布时间: 2006-12-21

good!

作者: yemao   发布时间: 2007-01-09

这个分页比较不错的,js代码可以自己下载。
http://www.douwo.cn/pai.php

作者: 风卷残云   发布时间: 2007-01-14

不错也收藏了,谢谢楼主

作者: maoli0366   发布时间: 2007-01-14


不好用呀!

作者: 特蓝克斯   发布时间: 2007-01-14

很不错的代码!!!

作者: pan_ivan   发布时间: 2007-01-19

飞过...

作者: Poon   发布时间: 2007-01-19

:) :)

作者: kenus   发布时间: 2007-02-07

顶,我喜欢ajax

作者: caicaiphper   发布时间: 2007-02-08

很好,喜欢

作者: pierochang   发布时间: 2007-02-15

很好,喜欢

作者: pierochang   发布时间: 2007-02-15

佩服!

作者: cxc0378   发布时间: 2007-02-15

up

作者: yyb   发布时间: 2007-03-02

顶一下!谢谢楼主的共享!

作者: louis75168611   发布时间: 2007-03-26

支持了

作者: xidear   发布时间: 2007-04-27

顶起

作者: scz2011   发布时间: 2007-04-28

顶起

作者: heixiake   发布时间: 2007-05-03

这个不太会啊
学习了~

作者: fly1983   发布时间: 2007-05-07

下面的分页链接可以不用每次都刷新吧 只是不刷新不知道能否处理好上下页的关系

作者: gozone   发布时间: 2007-05-09

在性能上有所提高吗?

为什么不把查询的数据用XML传递。

作者: cqx2004   发布时间: 2007-05-15

谢谢您了!
大侠~

作者: 木�^   发布时间: 2007-05-15

收藏了:@

作者: yiqieqie   发布时间: 2007-05-21

作者: rednetcn   发布时间: 2007-06-05

settimeout(),还有个interval是重复执行。

作者: jacuro   发布时间: 2007-06-05

顶啊,辉老大,搞点开源的东西发到我网站哈

作者: dzjzmj   发布时间: 2007-06-05

支持.收藏.

作者: hurrayboy   发布时间: 2007-06-28

非常感谢.我正在挖掘ajax这样的实例.

作者: yanglish   发布时间: 2007-07-03

我只知道JAVASCRIPT页的名称,后2个页面叫什么名啊,

作者: acbad79   发布时间: 2007-07-12

收藏了好久了,今天派上用场了.谢谢楼主了.

不过在建立conn时时,最好加上 mysql_query("SET NAMES gbk"); 否者容易乱码.

[ 本帖最后由 poppub 于 2007-8-24 16:31 编辑 ]

作者: poppub   发布时间: 2007-08-24

我来顶・・・・・:lol
下次..我也带点原创撒..要不也太对不起观众了

作者: 疯子-斯   发布时间: 2007-08-27

这个应该不难啊  和正常分页没什么区别 无非是下一页等位置 用ajax 做处理
在传递参数上的改变  ajax 应用都一样 很简单的

作者: makang1223   发布时间: 2007-09-11

支持

作者: yuanjing_119   发布时间: 2007-09-12

高手啊啊啊

作者: ylhp   发布时间: 2007-09-14

辛苦了,谢谢你!!!!

作者: lin_chaoqi   发布时间: 2007-09-18

只看得懂一点....算法大致了解了.呵`还要多加油学习!

作者: waterzhz   发布时间: 2007-09-20

楼主,报告一个小问题!在IE下测试,一切正常!

但是在进行如下操作,就会浏览器报错 错误: 'reobj' 未定义

打开测试页,翻到下一页,然后刷新浏览器,再往下翻页的时候,浏览器就报错了!

作者: oklilei   发布时间: 2007-10-11

我想知道详细的工程

作者: cgp2008   发布时间: 2007-10-12

好东西 收藏!学习。

作者: likai321   发布时间: 2007-10-13

一切尽在不言中!

作者: likai321   发布时间: 2007-10-15

dfdsf

作者: heixiake   发布时间: 2007-11-24

先下了,往后再学!

作者: rebill   发布时间: 2007-11-24

:victory: :victory:

作者: lxydyx   发布时间: 2008-01-16

如果用户把javascript禁用了,那么ajax就不能用了。
但是我们总得让用户能够分页显示吧,那最后您的代码是不是就不能用了。
?????????????????

作者: [email protected]   发布时间: 2008-02-23

谢谢分享!

作者: learsu   发布时间: 2008-02-25

作者: luzhou   发布时间: 2008-02-25

作者: ct_174880859   发布时间: 2008-02-27

我的回答怎么没有人理呀,真是的。小弟想弄的完美点。

作者: [email protected]   发布时间: 2008-02-27

支持一下

作者: sdltrados   发布时间: 2008-04-03

请问怎么使用啊~!~!~!

作者: idea2002   发布时间: 2008-04-14

作者: 马一鸣   发布时间: 2008-05-08

学习学习了

作者: atree1984   发布时间: 2008-05-12

昵称: wydycrtd  时间: 2008-5-16 23:33
支持一下!!!

作者: wydycrtd   发布时间: 2008-05-16


大力支持

[ 本帖最后由 ufo 于 2008-5-28 08:43 编辑 ]

作者: huaganshang   发布时间: 2008-05-26

曾经做过asp+ajax的分页,不过是取巧的行为:就是在服务端生成数据列表以及上下页链接,然后利用XMLHttpRequest获取整个数据,dom写入div容器中,这是一种设计方式,当加载第一页时就是直接包含后台文件;
还有一种设计方式就是:设计前台的js分页链接,当触发事件的时候向服务端加载对应的数据,这个数据使用xml或者json封装,然后在客户端用js解析,再利用dom写入div,ajax存在的问题还有导航与刷新问题,老实说,利用hash解决刷新问题一点也不好,因为加载慢点的话,可能数据加载不上来,导航是用iframe框架。

作者: ufo   发布时间: 2008-05-28

作者: FreeLiver   发布时间: 2008-06-09



    

作者: wlxm007   发布时间: 2008-06-10

为了防止$page获取值过小,可以加上if($page<=1) $page=1;

//如果只有一页则跳出函数:
if($pagenum<=1) return false;      这一句很容易让开始调试的人只看到一片空白

始终显示有链接的首页和尾页也有点晕,再判断一下
if($page!=1) $pagenav.=" <a href=javascript:dopage('result','$url?page=1');>首页</a> "; else $pagenav.=" 首页 ";
//$pagenav.=" <a href=javascript:dopage('result','$url?page=1');>首页</a> ";

if($page!=$pagenum) $pagenav.=" <a href=javascript:dopage('result','$url?page=$pagenum');>尾页</a> "; else $pagenav.=" 尾页 ";
//$pagenav.=" <a href=javascript:dopage('result','$url?page=$pagenum');>尾页</a> ";

作者: cybmm   发布时间: 2008-06-24

支持一下..�砜纯

作者: onlyfu   发布时间: 2008-06-24

作者: hklcf   发布时间: 2008-06-26

太烂了

作者: simore   发布时间: 2008-07-02

http_request.onreadystatechange=processrequest;
    //确定发送请求方式,URL,及是否同步执行下段代码
    http_request.open("GET",url,true);
    http_request.send(null);
  里面得   url    怎么添啊?

作者: yeahdwb   发布时间: 2008-07-08

楼主,报告一个小问题!在IE下测试,一切正常!

但是在进行如下操作,就会浏览器报错 错误: 'reobj' 未定义

打开测试页,翻到下一页,然后刷新浏览器,再往下翻页的时候,浏览器就报错了!

作者: 87786880   发布时间: 2008-07-13

学学。。ajax好东西啊!

作者: 87786880   发布时间: 2008-07-13

作者: 105644107   发布时间: 2008-07-16

实在太爱你了,辉老大。

作者: syweiyan   发布时间: 2008-07-21

好像下不下来

作者: rebill   发布时间: 2008-07-21

谁已经下过了,发个到我邮箱,感谢了。[email protected]

作者: ty   发布时间: 2009-05-20

很好呀。。。

作者: ouhui818   发布时间: 2010-05-22