Ajax PHP分页演示


Posted in PHP onJanuary 02, 2007

今天看默默讲解分页,想想好像原创区很久没人发帖了,就顺便把默默的那个扩展开来,来个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=dopage('result','$url?page=1');>首页</a> ";  
if($prepg) $pagenav.=" <a href=dopage('result','$url?page=$prepg');>前页</a> "; else $pagenav.=" 前页 ";  
if($nextpg) $pagenav.=" <a href=dopage('result','$url?page=$nextpg');>后页</a> "; else $pagenav.=" 后页 ";  
$pagenav.=" <a href=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=dopage('result','$url?page=1');>首页</a> ";  
if($prepg) $pagenav.=" <a href=dopage('result','$url?page=$prepg');>前页</a> "; else $pagenav.=" 前页 ";  
if($nextpg) $pagenav.=" <a href=dopage('result','$url?page=$nextpg');>后页</a> "; else $pagenav.=" 后页 ";  
$pagenav.=" <a href=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;//输出分页导航  
?> 
PHP 相关文章推荐
几种显示数据的方法的比较
Oct 09 PHP
获得Google PR值的PHP代码
Jan 28 PHP
php环境配置 php5 MySQL5 apache2 phpmyadmin安装与配置图文教程
Mar 16 PHP
php cookie的操作实现代码(登录)
Dec 29 PHP
PHP中return 和 exit 、break和contiue 区别与用法
Apr 09 PHP
浅析linux下apache服务器的配置和管理
Aug 10 PHP
PHP验证码函数代码(简单实用)
Sep 29 PHP
php中smarty区域循环的方法
Jun 11 PHP
PHP闭包函数传参及使用外部变量的方法
Mar 15 PHP
PHP 5.6.11 访问SQL Server2008R2的几种情况详解
Aug 08 PHP
PHP htmlentities()函数用法讲解
Feb 25 PHP
零基础php编程好学吗
Oct 11 PHP
windows下PHP APACHE MYSQ完整配置
Jan 02 #PHP
PHP Ajax实现页面无刷新发表评论
Jan 02 #PHP
PHP+AJAX实现无刷新注册(带用户名实时检测)
Jan 02 #PHP
新手学PHP之数据库操作详解及乱码解决!
Jan 02 #PHP
默默小谈PHP&amp;MYSQL分页原理及实现
Jan 02 #PHP
默默简单的写了一个模板引擎
Jan 02 #PHP
超强分页类2.0发布,支持自定义风格,默认4种显示模式
Jan 02 #PHP
You might like
php ob_flush,flush在ie中缓冲无效的解决方法
2010/05/09 PHP
php+flash+jQuery多图片上传源码分享
2020/07/27 PHP
php实现根据身份证获取精准年龄
2020/02/26 PHP
tbody元素支持嵌套的注意方法
2007/03/24 Javascript
仅用[]()+!等符号就足以实现几乎任意Javascript代码
2010/03/01 Javascript
jQuery $.data()方法使用注意细节
2012/12/31 Javascript
js实现拉伸拖动iframe的具体代码
2013/08/03 Javascript
Javascript基础教程之break和continue语句
2015/01/18 Javascript
Jquery动态替换div内容及动态展示的方法
2015/01/23 Javascript
Bootstrap自定义文件上传下载样式
2016/05/26 Javascript
浅谈React 属性和状态的一些总结
2016/11/21 Javascript
详谈$.data()的用法和作用
2017/02/13 Javascript
JS+HTML5实现获取手机验证码倒计时按钮
2018/08/08 Javascript
Node.js连接Sql Server 2008及数据层封装详解
2018/08/27 Javascript
用Vue编写抽象组件的方法
2019/05/06 Javascript
Javascript实现html转pdf高清版(提高分辨率)
2020/02/19 Javascript
vue实现lodop打印功能的示例
2020/11/11 Javascript
[31:33]2014 DOTA2国际邀请赛中国区预选赛 TongFu VS DT 第一场
2014/05/23 DOTA
python魔法方法-自定义序列详解
2016/07/21 Python
Python学习笔记之解析json的方法分析
2017/04/21 Python
关于Python数据结构中字典的心得
2017/12/04 Python
Python3使用正则表达式爬取内涵段子示例
2018/04/22 Python
python 读取txt,json和hdf5文件的实例
2018/06/05 Python
python 对多个csv文件分别进行处理的方法
2019/01/07 Python
用pycharm开发django项目示例代码
2019/06/13 Python
pygame实现贪吃蛇游戏(下)
2019/10/29 Python
python3实现elasticsearch批量更新数据
2019/12/03 Python
Django模板标签{% for %}循环,获取制定条数据实例
2020/05/14 Python
给ubuntu18安装python3.7的详细教程
2020/06/08 Python
如何基于Python和Flask编写Prometheus监控
2020/11/25 Python
浅谈Selenium+Webdriver 常用的元素定位方式
2021/01/13 Python
HTML5 canvas基本绘图之绘制线条
2016/06/27 HTML / CSS
软件售后服务方案
2014/05/29 职场文书
岗位聘任报告
2015/03/02 职场文书
Golang中channel的原理解读(推荐)
2021/10/16 Golang
Ubuntu18.04下QT开发Android无法连接设备问题解决实现
2022/06/01 Java/Android