php+ajax实现无刷新分页


Posted in PHP onNovember 18, 2015

本文实例讲述了php+ajax实现无刷新分页实现方法。分享给大家供大家参考。具体如下:

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

php+ajax实现无刷新分页

<?php

class Pagination {

  private $total; //数据表中总记录数
  private $listRows; //每页显示行数
  private $limit; //mysql 数据库的limit
  private $uri; //分页信息前面的uri地址
  private $pageNum; //页数
  private $config = array('header' => "个记录", "prev" => "【上一页】", "next" => "【下一页】", "first" => "【首 页】", "last" => "【尾 页】");
  private $listNum = 8;

  /*
   * $total 当前信息总条数
   * $listRows 每页显示的条数
   * $pa 下面的page
    http://网址/index.php?page=5
   */

  public function __construct($total, $listRows = 10, $pa = "") {
    $this->total = $total;
    $this->listRows = $listRows;
    $this->uri = $this->getUri($pa);
    $this->page = !empty($_GET["page"]) ? $_GET["page"] : 1;//不传入page,则默认显示首页
    $this->pageNum = ceil($this->total / $this->listRows);
    $this->limit = $this->setLimit();
  }

  //设置每页显示的条数
  private function setLimit() {
    return "Limit " . ($this->page - 1) * $this->listRows . ", {$this->listRows}";
  }

  //获得URL地址
  private function getUri($pa) {
    $url = $_SERVER["REQUEST_URI"] . (strpos($_SERVER["REQUEST_URI"], '?') ? '' : "?") . $pa;

    $parse = parse_url($url);



    if (isset($parse["query"])) {
      parse_str($parse['query'], $params);
      unset($params["page"]);
      $url = $parse['path'] . '?' . http_build_query($params);
    }

    return $url;
  }

  //魔术方法,
  public function __get($args) {
    if ($args == "limit")
      return $this->limit;
    else
      return null;
  }

  //页面开始的条数
  private function start() {
    if ($this->total == 0)
      return 0;
    else
      return ($this->page - 1) * $this->listRows + 1;
  }

  //页面结束的条数
  private function end() {
    return min($this->page * $this->listRows, $this->total);
  }

  /*设置首页*/
  private function first() {
    $html = "";
    if ($this->page == 1)
      $html.=' '.$this->config["first"].' ';
    else
      $html.=" <a href='javascript:void(0)' onclick='showPage(\"{$this->uri}&page=1\")'>{$this->config["first"]}</a> ";
      //$html.=" <a href='{$this->uri}&page=1'>{$this->config["first"]}</a> ";

    return $html;
  }

  /*设置上一页*/
  private function prev() {
    $html = "";
    if ($this->page == 1)
      $html.=' '.$this->config["prev"].' ';
    else
      $html.=" <a href='javascript:void(0)' onclick='showPage(\"{$this->uri}&page=" . ($this->page - 1) . "\")'>{$this->config["prev"]}</a> ";
      //$html.=" <a href='{$this->uri}&page=".($this->page-1)."'>{$this->config["prev"]}</a> ";

    return $html;
  }

  //页码列表【首页】【2】【3】…………【尾页】
  private function pageList() {
    $linkPage = "";

    $inum = floor($this->listNum / 2);

    for ($i = $inum; $i >= 1; $i--) {
      $page = $this->page - $i;

      if ($page < 1)
        continue;

      $linkPage.=" <a href='javascript:void(0)' onclick='showPage(\"{$this->uri}&page={$page}\")'>{$page}</a> ";
    }

    $linkPage.=" {$this->page} ";


    for ($i = 1; $i <= $inum; $i++) {
      $page = $this->page + $i;
      if ($page <= $this->pageNum)
        $linkPage.=" <a href='javascript:void(0)' onclick='showPage(\"{$this->uri}&page={$page}\")'>{$page}</a> ";
      else
        break;
    }

    return $linkPage;
  }

  /*设置下一页*/ 
  private function next() {
    $html = "";
    if ($this->page == $this->pageNum)
      $html.=' '.$this->config["next"].' ';
    else
      $html.=" <a href='javascript:void(0)' onclick='showPage(\"{$this->uri}&page=" . ($this->page + 1) . "\")'>{$this->config["next"]}</a> ";
      //$html.=" <a href='{$this->uri}&page=".($this->page + 1)."'>{$this->config["next"]}</a> ";

    return $html;
  }

  /*设置尾页*/
  private function last() {
    $html = "";
    if ($this->page == $this->pageNum)
      $html.=' '.$this->config["last"].' ';
    else
      $html.=" <a href='javascript:void(0)' onclick='showPage(\"{$this->uri}&page=" . ($this->pageNum) . "\")'>{$this->config["last"]}</a> ";
      //$html.=" <a href='{$this->uri}&page=.(this->pageNum).'>{$this->config["last"]}</a> ";

    return $html;
  }

  /*设置页面跳转*/
  private function goPage() {

    return 
    ' <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">
    <input type="button" value="GO" onclick="javascript:var page=(this.previousSibling.value>' . $this->pageNum . ')?' . $this->pageNum . ':this.previousSibling.value;showPage(\'' . $this->uri . '&page=\'+page+\'\')"> ';
  }

  //页面列表配置选项
  function fpage($display = array(0, 1, 2, 3, 4, 5, 6, 7, 8)) {
    $html[0] = " 共有<b>{$this->total}</b>{$this->config["header"]} ";
    $html[1] = " 每页显示<b>" . ($this->end() - $this->start() + 1) . "</b>条,本页<b>{$this->start()}-{$this->end()}</b>条 ";
    $html[2] = " <b>{$this->page}/{$this->pageNum}</b>页 ";

    $html[3] = $this->first();
    $html[4] = $this->prev();
    $html[5] = $this->pageList();
    $html[6] = $this->next();
    $html[7] = $this->last();
    $html[8] = $this->goPage();
    $fpage = '';
    foreach ($display as $index) {
      $fpage.=$html[$index];
    }

    return $fpage;
  }

}

2 数据显示

php+ajax实现无刷新分页

<?php

//链接数据库

//获得具体信息

//分页显示
header("content-type:text/html;charset=utf-8");
$link = mysql_connect('localhost','root','111111');
mysql_select_db('shop', $link);
mysql_query("set names utf8");
$css = <<<eof
<style type="text/css">
  table {border:1px solid black; width:700px; margin:auto; border-collapse:collapse;}
  td {border:1px solid black; }
</style>
eof;
echo $css;

echo "
<table>
  <tr><td>序号</td><td>名称</td><td>数量</td><td>价格</td><td>时间</td></tr>

";

//1 引入分页类
include "./Pagination.php";

//2. 获得信息总条数
$sql = "select * from sw_goods";
$qry = mysql_query($sql);
$total = mysql_num_rows($qry);
$per  = 7;

//3. 实例化分页类对象
$page_obj = new Pagination($total,$per);

//4. 拼装sql语句,获得每页信息
//利用page_obj实现limit的灵活设置
//$page_obj -> limit;
$sqla = "select * from sw_goods ".$page_obj->limit;
$qrya = mysql_query($sqla);

//5. 获得页面列表
$pagelist = $page_obj -> fpage(array(3,4,5,6,7,8));

$i=1;
while($rsta = mysql_fetch_assoc($qrya)){
  echo "<tr>";
  echo "<td>".$i++."</td>";
  echo "<td>".$rsta['goods_name']."</td>";
  echo "<td>".$rsta['goods_number']."</td>";
  echo "<td>".$rsta['goods_price']."</td>";
  echo "<td>".date("Y-m-d H:i:s",$rsta['goods_create_time'])."</td>";
  echo "</tr>";
}
echo "<tr><td colspan=5>".$pagelist."</td></tr>";
echo "</table>";

3 ajax无刷新分页实现

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

php+ajax实现无刷新分页

php+ajax实现无刷新分页

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
  <head>
    <title>新建网页</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="description" content="" />
    <meta name="keywords" content="" />

    <script type="text/javascript">
//获得分页信息ajax函数
function showPage(myurl){
  var xhr = new XMLHttpRequest();
  xhr.onreadystatechange = function(){
    if(xhr.readyState==4){
      var rst = document.getElementById("result");
      rst.innerHTML = xhr.responseText;
    }
  }
  xhr.open("get",myurl);
  xhr.send(null);
}
window.onload = function(){
  showPage("./data1.php"); //获得分页信息
  //showPage("./data.php?page=2");
}
    </script>

    <style type="text/css">
    </style>
  </head>


  <body>
    <h2>ajax无刷新分页效果</h2>
    <div id="result"></div>
  </body>
</html>
<script type="text/javascript">
  document.write(new Date()+"<br />");
  document.write(new Date()+"<br />");
  document.write(new Date()+"<br />");
  document.write(new Date()+"<br />");
</script>

php+ajax实现无刷新分页

希望本文所述对大家的PHP程序设计有所帮助。

PHP 相关文章推荐
php模拟asp中的XmlHttpRequest实现http请求的代码
Mar 24 PHP
PHP写的求多项式导数的函数代码
Jul 04 PHP
PHP数据库调用类调用实例(详细注释)
Jul 12 PHP
Codeigniter实现智能裁剪图片的方法
Jun 12 PHP
ThinkPHP实现递归无级分类――代码少
Jul 29 PHP
thinkPHP查询方式小结
Jan 09 PHP
PHP简单实现DES加密解密的方法
Jul 12 PHP
php实现当前页面点击下载文件的实例代码
Nov 16 PHP
thinkPHP5.0框架安装教程
Mar 25 PHP
phpStudy中升级MySQL版本到5.7.17的方法步骤
Aug 03 PHP
Mac系统下安装PHP Xdebug
Mar 30 PHP
php-fpm服务启动脚本的方法
Apr 27 PHP
如何使用php脚本给html中引用的js和css路径打上版本号
Nov 18 #PHP
php生成唯一数字id的方法汇总
Nov 18 #PHP
基于PHP给大家讲解防刷票的一些技巧
Nov 18 #PHP
使用PHP uniqid函数生成唯一ID
Nov 18 #PHP
使用PHP实现生成HTML静态页面
Nov 18 #PHP
php+ajax无刷新上传图片实例代码
Nov 17 #PHP
php计算年龄精准到年月日
Nov 17 #PHP
You might like
短波收音机简介
2021/03/01 无线电
基于php在各种web服务器的运行模式详解
2013/06/03 PHP
解析posix与perl标准的正则表达式区别
2013/06/17 PHP
php中apc缓存使用示例
2013/12/25 PHP
thinkPHP基于ajax实现的菜单与分页示例
2016/07/12 PHP
jquery ajax提交表单数据的两种实现方法
2010/04/29 Javascript
通过JQuery实现win8一样酷炫的动态磁贴效果(示例代码)
2013/07/13 Javascript
jquery ajax的success回调函数中实现按钮置灰倒计时
2013/11/19 Javascript
JS处理数据四舍五入(tofixed与round的区别详解)
2017/10/26 Javascript
基于jquery实现五星好评
2017/11/18 jQuery
jquery-file-upload 文件上传带进度条效果
2017/11/21 jQuery
jquery实现垂直无限轮播的方法分析
2019/07/16 jQuery
JavaScript ES6 Class类实现原理详解
2020/05/08 Javascript
使用JavaScript获取Django模板指定键值数据
2020/05/27 Javascript
[43:03]LGD vs Newbee 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
wxpython 学习笔记 第一天
2009/03/16 Python
python中from module import * 的一个坑
2014/07/20 Python
Python的Django框架中的select_related函数对QuerySet 查询的优化
2015/04/01 Python
python 3.74 运行import numpy as np 报错lib\site-packages\numpy\__init__.py
2019/10/06 Python
Python 内置函数globals()和locals()对比详解
2019/12/23 Python
基于SpringBoot构造器注入循环依赖及解决方式
2020/04/26 Python
PyCharm+PyQt5+QtDesigner配置详解
2020/08/12 Python
PyCharm 2020.2 安装详细教程
2020/09/25 Python
matplotlib对象拾取事件处理的实现
2021/01/14 Python
pyx文件 生成pyd 文件用于 cython调用的实现
2021/03/04 Python
加拿大时尚床上用品零售商:QE Home | Quilts Etc
2018/01/22 全球购物
2014年应届大学生自我评价
2014/01/09 职场文书
房产买卖委托公证书
2014/04/04 职场文书
《北京的春节》教学反思
2014/04/07 职场文书
清明节网上祭英烈活动总结
2014/04/30 职场文书
食堂标语大全
2014/06/11 职场文书
计算机科学技术自荐信
2014/06/12 职场文书
办公室主任四风问题对照检查材料思想汇报
2014/09/28 职场文书
浪漫的婚礼主持词
2015/06/30 职场文书
个人业务学习心得体会
2016/01/25 职场文书
Python实战之大鱼吃小鱼游戏的实现
2022/04/01 Python