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 相关文章推荐
php email邮箱正则
Oct 08 PHP
php强制下载类型的实现代码
Apr 21 PHP
PHP中定义数组常量(array常量)的方法
Nov 17 PHP
php继承中方法重载(覆盖)的应用场合
Feb 09 PHP
Windows7下的php环境配置教程
Feb 28 PHP
php通过exif_read_data函数获取图片的exif信息
May 21 PHP
php常量详细解析
Oct 27 PHP
PHP内核探索之解释器的执行过程
Dec 22 PHP
微信支付开发交易通知实例
Jul 12 PHP
详解PHP归并排序的实现
Oct 18 PHP
PHP防止图片盗用(盗链)的方法小结
Nov 11 PHP
PHP中error_reporting函数用法详细介绍
Jun 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服务器实现多session并发运行
2006/10/09 PHP
ThinkPHP CURD方法之table方法详解
2014/06/18 PHP
ThinkPHP V2.2说明文档没有说明的那些事实例小结
2015/07/01 PHP
header与缓冲区之间的深层次分析
2016/07/30 PHP
nodejs的require模块(文件模块/核心模块)及路径介绍
2013/01/14 NodeJs
JavaScript中获取样式的原生方法小结
2014/10/08 Javascript
JavaScript中点击事件的写法
2016/06/28 Javascript
jQuery实现div横向拖拽排序的简单实例
2016/07/13 Javascript
基于对象合并功能的实现示例
2017/10/10 Javascript
AngularJS动态添加数据并删除的实例
2018/02/27 Javascript
layui中的switch开关实现方法
2019/09/03 Javascript
javascript实现的图片预览和上传功能示例【兼容IE 9】
2020/05/01 Javascript
浅谈javascript事件环微任务和宏任务队列原理
2020/09/12 Javascript
用JavaScript实现贪吃蛇游戏
2020/10/23 Javascript
python使用自定义user-agent抓取网页的方法
2015/04/15 Python
Python使用Scrapy爬取妹子图
2015/05/28 Python
Python之列表的插入&amp;替换修改方法
2018/06/28 Python
python向字符串中添加元素的实例方法
2019/06/28 Python
Django组件content-type使用方法详解
2019/07/19 Python
在python里创建一个任务(Task)实例
2020/04/25 Python
opencv 实现特定颜色线条提取与定位操作
2020/06/02 Python
基于Python实现粒子滤波效果
2020/12/01 Python
关于HTML5的22个初级技巧(图文教程)
2012/06/21 HTML / CSS
DHC美国官网:日本通信销售第一的化妆品品牌
2017/11/12 全球购物
黄色火烈鸟:De Gele Flamingo
2019/03/18 全球购物
瑞典最大的儿童用品网上商店:pinkorblue.se
2021/03/09 全球购物
班会关于环保演讲稿
2013/12/29 职场文书
客服服务心得体会
2013/12/30 职场文书
二年级数学教学反思
2014/01/21 职场文书
网络编辑职责
2014/03/01 职场文书
超市优秀员工事迹材料
2014/05/01 职场文书
电子商务专业自荐信
2014/06/02 职场文书
综治工作汇报材料
2014/10/27 职场文书
优秀教师推荐材料
2014/12/16 职场文书
2015年暑期社会实践总结
2015/07/13 职场文书
开网店计划分析
2019/07/30 职场文书