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 相关文章推荐
操作Oracle的php类
Oct 09 PHP
PHP has encountered an Access Violation
Jan 15 PHP
php利用反射实现插件机制的方法
Mar 14 PHP
php实现的验证码文件类实例
Jun 18 PHP
PHP扩展开发教程(总结)
Nov 04 PHP
变量在 PHP7 内部的实现(二)
Dec 21 PHP
Zend Framework生成验证码并实现验证码验证功能(附demo源码下载)
Mar 22 PHP
Yii2实现ajax上传图片插件用法
Apr 28 PHP
PHP实现的简单分页类及用法示例
May 06 PHP
使用ThinkPHP的自动完成实现无限级分类实例详解
Sep 02 PHP
Laravel项目中timeAgo字段语言转换的改善方法示例
Sep 16 PHP
php快速导入大量数据的实例方法
Sep 23 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
一个多文件上传的例子(原创)
2006/10/09 PHP
php中的数组操作函数整理
2008/08/18 PHP
ThinkPHP 表单自动验证运用示例
2014/10/13 PHP
PHP编写RESTful接口的方法
2016/02/21 PHP
浅谈PHP中try{}catch{}的使用方法
2016/12/09 PHP
jquery中实现标签切换效果的代码
2011/03/01 Javascript
Jquery实现点击切换图片并隐藏显示内容(2种方法实现)
2013/04/11 Javascript
四种参数传递的形式——URL,超链接,js,form表单
2015/07/24 Javascript
javascript日期格式化方法小结
2015/12/17 Javascript
jQuery 如何给Carousel插件添加新的功能
2016/04/18 Javascript
JQuery 在文档中查找指定name的元素并移除的实现方法
2016/05/19 Javascript
jQuery插件EasyUI设置datagrid的checkbox为禁用状态的方法
2016/08/05 Javascript
jquery中$.fn和图片滚动效果实现的必备知识总结
2017/04/21 jQuery
Easyui在treegrid添加控件的实现方法
2017/06/23 Javascript
Vuex提升学习篇
2018/01/11 Javascript
Typescript 中的 interface 和 type 到底有什么区别详解
2019/06/18 Javascript
Vue执行方法,方法获取data值,设置data值,方法传值操作
2020/08/05 Javascript
js屏蔽F12审查元素,禁止修改页面代码等实现代码
2020/10/02 Javascript
[56:46]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 VP vs Effect
2018/04/01 DOTA
Pyramid Mako模板引入helper对象的步骤方法
2013/11/27 Python
Python实现约瑟夫环问题的方法
2016/05/03 Python
python书籍信息爬虫实例
2018/03/19 Python
python射线法判断检测点是否位于区域外接矩形内
2019/06/28 Python
Django后台admin的使用详解
2019/07/08 Python
Python如何急速下载第三方库详解
2020/11/02 Python
基于 Python 实践感知器分类算法
2021/01/07 Python
Pytorch之扩充tensor的操作
2021/03/04 Python
HTML5中的新元素介绍
2008/10/17 HTML / CSS
家庭睡衣和家庭用品:Little Blue House
2018/03/18 全球购物
授权委托书格式模板
2014/04/03 职场文书
物价局领导班子四风问题整改措施
2014/10/26 职场文书
2014年教师教学工作总结
2014/11/08 职场文书
幸福来敲门观后感
2015/06/04 职场文书
送给小学生的暑假礼物!小学生必背99首古诗
2019/07/02 职场文书
WordPress多语言翻译插件 - WPML使用教程
2021/04/01 PHP
MySql重置root密码 --skip-grant-tables
2022/04/11 MySQL