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
PHP静态类
Nov 25 PHP
加强版phplib的DB类
Mar 31 PHP
PHP url 加密解密函数代码
Aug 26 PHP
PHP中使用数组实现堆栈数据结构的代码
Feb 05 PHP
redis 队列操作的例子(php)
Apr 12 PHP
PHP中header和session_start前不能有输出原因分析
Jan 11 PHP
解决File size limit exceeded 错误的方法
Jun 14 PHP
解析php如何将日志写进syslog
Jun 28 PHP
php 魔术方法详解
Nov 11 PHP
thinkphp5 模型实例化获得数据对象的教程
Oct 18 PHP
Thinkphp 框架扩展之应用模式实现方法分析
Apr 27 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
解析yii数据库的增删查改
2013/06/20 PHP
PHP Callable强制指定回调类型的方法
2016/08/30 PHP
windows系统php环境安装swoole具体步骤
2021/03/04 PHP
JQuery 选项卡效果(JS与HTML的分离)
2010/04/01 Javascript
js将当前时间格式转换成时间搓(自写)
2013/09/26 Javascript
ECMAScript中函数function类型
2015/06/03 Javascript
浅谈JavaScript中的字符编码转换问题
2015/07/07 Javascript
举例讲解JavaScript中关于对象操作的相关知识
2015/11/16 Javascript
jQuery中on绑定事件后引发的事件冒泡问题如何解决
2016/05/25 Javascript
基于JS代码实现当鼠标悬停表格上显示这一格的全部内容
2016/06/12 Javascript
VUEJS实战之修复错误并且美化时间(2)
2016/06/13 Javascript
js与applet相互调用的方法
2016/06/22 Javascript
echarts3 使用总结(绘制各种图表,地图)
2017/01/05 Javascript
Vue全家桶实践项目总结(推荐)
2017/11/04 Javascript
vue左右侧联动滚动的实现代码
2018/06/06 Javascript
vue用Object.defineProperty手写一个简单的双向绑定的示例
2018/07/09 Javascript
vue 使用插槽分发内容操作示例【单个插槽、具名插槽、作用域插槽】
2020/03/06 Javascript
javascript设计模式 ? 访问者模式原理与用法实例分析
2020/04/26 Javascript
对vue生命周期的深入理解
2020/12/03 Vue.js
python 生成不重复的随机数的代码
2011/05/15 Python
python实现根据图标提取分类应用程序实例
2014/09/28 Python
python嵌套函数使用外部函数变量的方法(Python2和Python3)
2016/01/31 Python
Python 包含汉字的文件读写之每行末尾加上特定字符
2016/12/12 Python
python实现美团订单推送到测试环境,提供便利操作示例
2019/08/09 Python
美国礼品卡商城: Gift Card Mall
2017/08/25 全球购物
美国最大的高尔夫发球时间预订网站:TeeOff.com
2018/03/28 全球购物
Rodd & Gunn澳大利亚官网:新西兰男装品牌
2018/09/25 全球购物
自然健康的概念:Natural Healthy Concepts
2020/01/26 全球购物
个人自荐信
2013/12/05 职场文书
庆六一宣传标语
2014/10/08 职场文书
教师师德师风整改措施
2014/10/24 职场文书
经理助理岗位职责
2015/02/02 职场文书
建国大业电影观后感
2015/06/01 职场文书
病假证明模板
2015/06/19 职场文书
请假条应该怎么写?
2019/06/24 职场文书
Java8中Stream的一些神操作
2021/11/02 Java/Android