分页:

  1. limit 偏移量,长度;
  2. limit 0,7; 第一页
  3. limit 7,7; 第二页
  4. limit 14,7; 第三页
  5. 每页信息条数:7
  6. 信息总条数:select count(*) from table
  7. 信息总页数:ceil向上取整(总条数/每页条数)
  1. 分页类具体使用

  1. <?php
  2. class Pagination {
  3. private $total; //数据表中总记录数
  4. private $listRows; //每页显示行数
  5. private $limit; //mysql 数据库的limit
  6. private $uri; //分页信息前面的uri地址
  7. private $pageNum; //页数
  8. private $config = array('header' => "个记录", "prev" => "【上一页】", "next" => "【下一页】", "first" => "【首 页】", "last" => "【尾 页】");
  9. private $listNum = 8;
  10. /*
  11. * $total 当前信息总条数
  12. * $listRows 每页显示的条数
  13. * $pa 下面的page
  14. http://网址/index.php?page=5
  15. */
  16. public function __construct($total, $listRows = 10, $pa = "") {
  17. $this->total = $total;
  18. $this->listRows = $listRows;
  19. $this->uri = $this->getUri($pa);
  20. $this->page = !empty($_GET["page"]) ? $_GET["page"] : 1;//不传入page,则默认显示首页
  21. $this->pageNum = ceil($this->total / $this->listRows);
  22. $this->limit = $this->setLimit();
  23. }
  24. //设置每页显示的条数
  25. private function setLimit() {
  26. return "Limit " . ($this->page - 1) * $this->listRows . ", {$this->listRows}";
  27. }
  28. //获得URL地址
  29. private function getUri($pa) {
  30. $url = $_SERVER["REQUEST_URI"] . (strpos($_SERVER["REQUEST_URI"], '?') ? '' : "?") . $pa;
  31. $parse = parse_url($url);
  32. if (isset($parse["query"])) {
  33. parse_str($parse['query'], $params);
  34. unset($params["page"]);
  35. $url = $parse['path'] . '?' . http_build_query($params);
  36. }
  37. return $url;
  38. }
  39. //魔术方法,
  40. public function __get($args) {
  41. if ($args == "limit")
  42. return $this->limit;
  43. else
  44. return null;
  45. }
  46. //页面开始的条数
  47. private function start() {
  48. if ($this->total == 0)
  49. return 0;
  50. else
  51. return ($this->page - 1) * $this->listRows + 1;
  52. }
  53. //页面结束的条数
  54. private function end() {
  55. return min($this->page * $this->listRows, $this->total);
  56. }
  57. /*设置首页*/
  58. private function first() {
  59. $html = "";
  60. if ($this->page == 1)
  61. $html.='&nbsp;'.$this->config["first"].'&nbsp;';
  62. else
  63. $html.="&nbsp;<a href='javascript:void(0)' onclick='showPage(\"{$this->uri}&page=1\")'>{$this->config["first"]}</a>&nbsp;";
  64. //$html.="&nbsp;<a href='{$this->uri}&page=1'>{$this->config["first"]}</a>&nbsp;";
  65. return $html;
  66. }
  67. /*设置上一页*/
  68. private function prev() {
  69. $html = "";
  70. if ($this->page == 1)
  71. $html.='&nbsp;'.$this->config["prev"].'&nbsp;';
  72. else
  73. $html.="&nbsp;<a href='javascript:void(0)' onclick='showPage(\"{$this->uri}&page=" . ($this->page - 1) . "\")'>{$this->config["prev"]}</a>&nbsp;";
  74. //$html.="&nbsp;<a href='{$this->uri}&page=".($this->page-1)."'>{$this->config["prev"]}</a>&nbsp;";
  75. return $html;
  76. }
  77. //页码列表【首页】【2】【3】…………【尾页】
  78. private function pageList() {
  79. $linkPage = "";
  80. $inum = floor($this->listNum / 2);
  81. for ($i = $inum; $i >= 1; $i--) {
  82. $page = $this->page - $i;
  83. if ($page < 1)
  84. continue;
  85. $linkPage.="&nbsp;<a href='javascript:void(0)' onclick='showPage(\"{$this->uri}&page={$page}\")'>{$page}</a>&nbsp;";
  86. }
  87. $linkPage.="&nbsp;{$this->page}&nbsp;";
  88. for ($i = 1; $i <= $inum; $i++) {
  89. $page = $this->page + $i;
  90. if ($page <= $this->pageNum)
  91. $linkPage.="&nbsp;<a href='javascript:void(0)' onclick='showPage(\"{$this->uri}&page={$page}\")'>{$page}</a>&nbsp;";
  92. else
  93. break;
  94. }
  95. return $linkPage;
  96. }
  97. /*设置下一页*/
  98. private function next() {
  99. $html = "";
  100. if ($this->page == $this->pageNum)
  101. $html.='&nbsp;'.$this->config["next"].'&nbsp;';
  102. else
  103. $html.="&nbsp;<a href='javascript:void(0)' onclick='showPage(\"{$this->uri}&page=" . ($this->page + 1) . "\")'>{$this->config["next"]}</a>&nbsp;";
  104. //$html.="&nbsp;<a href='{$this->uri}&page=".($this->page + 1)."'>{$this->config["next"]}</a>&nbsp;";
  105. return $html;
  106. }
  107. /*设置尾页*/
  108. private function last() {
  109. $html = "";
  110. if ($this->page == $this->pageNum)
  111. $html.='&nbsp;'.$this->config["last"].'&nbsp;';
  112. else
  113. $html.="&nbsp;<a href='javascript:void(0)' onclick='showPage(\"{$this->uri}&page=" . ($this->pageNum) . "\")'>{$this->config["last"]}</a>&nbsp;";
  114. //$html.="&nbsp;<a href='{$this->uri}&page=.(this->pageNum).'>{$this->config["last"]}</a>&nbsp;";
  115. return $html;
  116. }
  117. /*设置页面跳转*/
  118. private function goPage() {
  119. return
  120. '&nbsp;<input type="text" onkeydown="javascript:if(event.keyCode==13){var page=(this.value>' . $this->pageNum . ')?' . $this->pageNum . ':this.value;showPage(\'' . $this->uri . '&page=\'+page+\'\')}" value="' . $this->page . '" style="width:25px">
  121. <input type="button" value="GO" onclick="javascript:var page=(this.previousSibling.value>' . $this->pageNum . ')?' . $this->pageNum . ':this.previousSibling.value;showPage(\'' . $this->uri . '&page=\'+page+\'\')">&nbsp;';
  122. }
  123. //页面列表配置选项
  124. function fpage($display = array(0, 1, 2, 3, 4, 5, 6, 7, 8)) {
  125. $html[0] = "&nbsp;共有<b>{$this->total}</b>{$this->config["header"]}&nbsp;";
  126. $html[1] = "&nbsp;每页显示<b>" . ($this->end() - $this->start() + 1) . "</b>条,本页<b>{$this->start()}-{$this->end()}</b>条&nbsp;";
  127. $html[2] = "&nbsp;<b>{$this->page}/{$this->pageNum}</b>页&nbsp;";
  128. $html[3] = $this->first();
  129. $html[4] = $this->prev();
  130. $html[5] = $this->pageList();
  131. $html[6] = $this->next();
  132. $html[7] = $this->last();
  133. $html[8] = $this->goPage();
  134. $fpage = '';
  135. foreach ($display as $index) {
  136. $fpage.=$html[$index];
  137. }
  138. return $fpage;
  139. }
  140. }

2 数据显示

  1. <?php
  2. //链接数据库
  3. //获得具体信息
  4. //分页显示
  5. header("content-type:text/html;charset=utf-8");
  6. $link = mysql_connect('localhost','root','111111');
  7. mysql_select_db('shop', $link);
  8. mysql_query("set names utf8");
  9. $css = <<<eof
  10. <style type="text/css">
  11. table {border:1px solid black; width:700px; margin:auto; border-collapse:collapse;}
  12. td {border:1px solid black; }
  13. </style>
  14. eof;
  15. echo $css;
  16. echo "
  17. <table>
  18. <tr><td>序号</td><td>名称</td><td>数量</td><td>价格</td><td>时间</td></tr>
  19. ";
  20. //1 引入分页类
  21. include "./Pagination.php";
  22. //2. 获得信息总条数
  23. $sql = "select * from sw_goods";
  24. $qry = mysql_query($sql);
  25. $total = mysql_num_rows($qry);
  26. $per = 7;
  27. //3. 实例化分页类对象
  28. $page_obj = new Pagination($total,$per);
  29. //4. 拼装sql语句,获得每页信息
  30. //利用page_obj实现limit的灵活设置
  31. //$page_obj -> limit;
  32. $sqla = "select * from sw_goods ".$page_obj->limit;
  33. $qrya = mysql_query($sqla);
  34. //5. 获得页面列表
  35. $pagelist = $page_obj -> fpage(array(3,4,5,6,7,8));
  36. $i=1;
  37. while($rsta = mysql_fetch_assoc($qrya)){
  38. echo "<tr>";
  39. echo "<td>".$i++."</td>";
  40. echo "<td>".$rsta['goods_name']."</td>";
  41. echo "<td>".$rsta['goods_number']."</td>";
  42. echo "<td>".$rsta['goods_price']."</td>";
  43. echo "<td>".date("Y-m-d H:i:s",$rsta['goods_create_time'])."</td>";
  44. echo "</tr>";
  45. }
  46. echo "<tr><td colspan=5>".$pagelist."</td></tr>";
  47. echo "</table>";

3 ajax无刷新分页实现

open(‘get’,’http://网址/index.php?page=2’)

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html>
  3. <head>
  4. <title>新建网页</title>
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  6. <meta name="description" content="" />
  7. <meta name="keywords" content="" />
  8. <script type="text/javascript">
  9. //获得分页信息ajax函数
  10. function showPage(myurl){
  11. var xhr = new XMLHttpRequest();
  12. xhr.onreadystatechange = function(){
  13. if(xhr.readyState==4){
  14. var rst = document.getElementById("result");
  15. rst.innerHTML = xhr.responseText;
  16. }
  17. }
  18. xhr.open("get",myurl);
  19. xhr.send(null);
  20. }
  21. window.onload = function(){
  22. showPage("./data1.php"); //获得分页信息
  23. //showPage("./data.php?page=2");
  24. }
  25. </script>
  26. <style type="text/css">
  27. </style>
  28. </head>
  29. <body>
  30. <h2>ajax无刷新分页效果</h2>
  31. <div id="result"></div>
  32. </body>
  33. </html>
  34. <script type="text/javascript">
  35. document.write(new Date()+"<br />");
  36. document.write(new Date()+"<br />");
  37. document.write(new Date()+"<br />");
  38. document.write(new Date()+"<br />");
  39. </script>

版权声明:本文为小平果原创文章,转载请注明:http://blog.csdn.net/i10630226

javascript项目实战---ajax实现无刷新分页的更多相关文章

  1. Ajax 实现无刷新分页

    Ajax 实现无刷新分页

  2. 在Thinkphp中使用AJAX实现无刷新分页

    在Thinkphp目录的Lib\ORG\Util\目录里新建AjaxPage.class.php,写入一下内容: <?php // +------------------------------ ...

  3. ajax实现无刷新分页效果

    基于jquery.pagination.js实现的无刷新加载分页数据效果. 简介与说明 * 该插件为Ajax分页插件,一次性加载数据,故分页切换时无刷新与延迟.如果数据量较大,加载会比较慢. * 分页 ...

  4. Ajax做无刷新分页

    1.主页面代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www ...

  5. knockout Ajax异步无刷新分页 Demo +mvc+bootstrap

    最近工作中web客户端需要用到knockout,在此记录下一些Demo,以后用到的时候查找起来方便.也希望给新入门的knockout使用者一点经验.knockout官方文档.这儿是一个使用knocko ...

  6. thinkphp ajax 无刷新分页效果的实现

    思路:先做出传统分页效果,然后重新复制一份Page.class.php类,对它进行修改,把js中的函数传到page类中,把上一页.下一页.首页.尾页.链接页中的url地址改成js控制的函数,模板页面中 ...

  7. 学习笔记之AJAX无刷新分页

    利用AJAX实现无刷新分页技术原理: 其主要是利用AJAX的异步处理机制,实现数据的异步传递,它隐藏了客户端向服务端请求数据的状态,在客户端表现为无刷新的显示状态. 实现分页的步骤: 1.客服端点击页 ...

  8. jquery ajax php+mysql 无刷新分页 详细实例

    最近在接触jquery和ajax,当前项目也会用到分页,为了用户体验更好一些,就准备用无刷新分页,这个demo很适合新手学习查看,写的比较清晰,话不多说,直接上代码吧. 首先是html页面,index ...

  9. 关于Ajax无刷新分页技术的一些研究 c#

    关于Ajax无刷新分页技术的一些研究 c# 小弟新手,求大神有更好的解决方案,指教下~ 以前做项目,用过GridView的刷新分页,也用过EasyUI的封装好的分页技术,最近在老项目的基础上加新功能, ...

随机推荐

  1. 安卓笔记--- intent传递自定义类

    <span style="font-family: Arial, Helvetica, sans-serif;">eat.setOnClickListener(new ...

  2. HBase rest

    HBase Rest 是建立在HBase java 客户端基础之上的,提供的web 服务.它存在的目的是给开发者一个更多的选择. 1.启动rest 服务 (1)hbase rest start 用默认 ...

  3. iOS中判断照片和相机权限

    1.照片权限判断 在iOS6之后,app中使用照片(即自带相册)需要用户权限验证,所以我们可以做一个权限判断给出友好的提示或者界面效果. 相册判断需要导入 <AssetsLibrary/Asse ...

  4. SharePoint 调查添加图片支持

    前言:今天,碰到一个有趣的问题,就是SharePoint调查里面,添加对于图片的支持,众所周知,SharePoint的调查就支持那么几种字段类型的问题,当然,我们可以开发实现,不过,这个不是我们今天介 ...

  5. 字符编辑技术C语言实现

    #include<string.h> #include<ctype.h> #include<stdio.h> /*插入函数 ccode待插入的字符 anystrin ...

  6. 巨高兴,偶的文章 “如何在服务器上配置ODBC来访问本机DB2for Windows服务器”被推荐至CSDN博客首页

    非常高兴,偶的文章 "如何在服务器上配置ODBC来访问本机DB2for Windows服务器"被推荐至CSDN博客首页,截图留念.                  文章被推荐在C ...

  7. 云技术:负载均衡SLB

    什么是SLB? SLB是Server Load Balance(负载均衡)的简称,XX云计算有限公司提供的负载均衡服务,通过设置虚拟服务IP,将位于同一机房的多台云服务器资源虚拟成一个高性能.高可用的 ...

  8. Demo1

    <!DOCTYPE html> <html lang="zh"> <header> <meta charset="utf-8&q ...

  9. mysql统计类似SQL语句查询次数

    mysql统计类似SQL语句查询次数 vc-mysql-sniffer 工具抓取的sql分析. 1.先用shell脚本把所有enter符号替换为null,再根据语句前后的字符分隔语句 grep -Ev ...

  10. 聊聊Unity的Gamma校正以及线性工作流

    0x00 前言的前言 这篇小文其实是在清明节前后起的头,不过后来一度搁笔.一直到这周末才又想起来起的这个头还没有写完,所以还是直接用一个月前的开头,再将过程和结尾补齐. 0x01 前言 结束了在南方一 ...