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 相关文章推荐
如何给phpadmin一个保护
Oct 09 PHP
如何对PHP程序中的常见漏洞进行攻击(上)
Oct 09 PHP
php中目录,文件操作详谈
Mar 19 PHP
php中require和require_once的区别说明
Feb 27 PHP
PHP使用ob_start生成html页面的方法
Nov 07 PHP
php实现utf-8转unicode函数分享
Jan 06 PHP
thinkPHP中验证码的简单使用方法
Dec 26 PHP
PHP判断JSON对象是否存在的方法(推荐)
Jul 06 PHP
PHP中的use关键字及文件的加载详解
Nov 28 PHP
PHP字符串逆序排列实现方法小结【strrev函数,二分法,循环法,递归法】
Jan 13 PHP
php格式文件打开的四种方法
Feb 24 PHP
PHP解决高并发问题
Apr 01 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使用PHPMailer发送邮件的简单使用方法
2013/11/12 PHP
四个PHP非常实用的功能
2015/09/29 PHP
php中通用的excel导出方法实例
2017/12/30 PHP
Laravel5.5 实现后台管理登录的方法(自定义用户表登录)
2019/09/30 PHP
DIV始终居中的js代码
2014/02/17 Javascript
JS小游戏之宇宙战机源码详解
2014/09/25 Javascript
JavaScript检测原始值、引用值、属性
2016/06/20 Javascript
Vue动态实现评分效果
2017/05/24 Javascript
详解基于Vue+Koa的pm2配置
2017/10/24 Javascript
Angular中点击li标签实现更改颜色的核心代码
2017/12/08 Javascript
jQuery实现的两种简单弹窗效果示例
2018/04/18 jQuery
vue解决弹出蒙层滑动穿透问题的方法
2018/09/22 Javascript
浅谈webpack devtool里的7种SourceMap模式
2019/01/14 Javascript
微信小程序自定义可滑动顶部TabBar选项卡实现页面切换功能示例
2019/05/14 Javascript
[00:36]DOTA2勇士令状莱恩声望物品——冥晶之厄展示
2018/05/25 DOTA
Python抓取电影天堂电影信息的代码
2016/04/07 Python
Python去除、替换字符串空格的处理方法
2018/04/01 Python
解决python3读取Python2存储的pickle文件问题
2018/10/25 Python
Django文件存储 默认存储系统解析
2019/08/02 Python
python装饰器相当于函数的调用方式
2019/12/27 Python
python PyAUtoGUI库实现自动化控制鼠标键盘
2020/09/09 Python
python中Array和DataFrame相互转换的实例讲解
2021/02/03 Python
Nike意大利官网:Nike.com IT
2020/01/19 全球购物
读书活动实施方案
2014/03/10 职场文书
cf战队收人广告词
2014/03/14 职场文书
母亲节感恩活动记录
2014/03/16 职场文书
让世界充满爱演讲稿
2014/05/24 职场文书
私人房屋买卖协议书
2014/10/04 职场文书
五年级上册复习计划
2015/01/19 职场文书
初中重阳节活动总结
2015/05/05 职场文书
企业投资意向书
2015/05/09 职场文书
秋收起义观后感
2015/06/11 职场文书
2016见义勇为事迹材料汇总
2016/03/01 职场文书
springboot拦截器无法注入redisTemplate的解决方法
2021/06/27 Java/Android
MySQL去除密码登录告警的方法
2022/04/20 MySQL
使用refresh_token实现无感刷新页面
2022/04/26 Javascript