Jadual Kandungan
ajax无刷新分页效果
Rumah pembangunan bahagian belakang tutorial php php+ajax实现无刷新分页_php技巧

php+ajax实现无刷新分页_php技巧

May 16, 2016 pm 08:04 PM
php

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

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

<&#63;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&#63;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"]) &#63; $_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"], '&#63;') &#63; '' : "&#63;") . $pa;

    $parse = parse_url($url);



    if (isset($parse["query"])) {
      parse_str($parse['query'], $params);
      unset($params["page"]);
      $url = $parse['path'] . '&#63;' . 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 . ')&#63;' . $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 . ')&#63;' . $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;
  }

}

Salin selepas log masuk

2 数据显示

<&#63;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>";
Salin selepas log masuk

3 ajax无刷新分页实现

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

<!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&#63;page=2");
}
    </script>

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


  <body>
    <h2 id="ajax无刷新分页效果">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>
Salin selepas log masuk

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

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Konfigurasi Projek CakePHP Konfigurasi Projek CakePHP Sep 10, 2024 pm 05:25 PM

Dalam bab ini, kita akan memahami Pembolehubah Persekitaran, Konfigurasi Umum, Konfigurasi Pangkalan Data dan Konfigurasi E-mel dalam CakePHP.

Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 membawa beberapa ciri baharu, peningkatan keselamatan dan peningkatan prestasi dengan jumlah penamatan dan penyingkiran ciri yang sihat. Panduan ini menerangkan cara memasang PHP 8.4 atau naik taraf kepada PHP 8.4 pada Ubuntu, Debian, atau terbitan mereka

Tarikh dan Masa CakePHP Tarikh dan Masa CakePHP Sep 10, 2024 pm 05:27 PM

Untuk bekerja dengan tarikh dan masa dalam cakephp4, kami akan menggunakan kelas FrozenTime yang tersedia.

Muat naik Fail CakePHP Muat naik Fail CakePHP Sep 10, 2024 pm 05:27 PM

Untuk mengusahakan muat naik fail, kami akan menggunakan pembantu borang. Di sini, adalah contoh untuk muat naik fail.

Penghalaan CakePHP Penghalaan CakePHP Sep 10, 2024 pm 05:25 PM

Dalam bab ini, kita akan mempelajari topik berikut yang berkaitan dengan penghalaan ?

Bincangkan CakePHP Bincangkan CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP ialah rangka kerja sumber terbuka untuk PHP. Ia bertujuan untuk menjadikan pembangunan, penggunaan dan penyelenggaraan aplikasi lebih mudah. CakePHP adalah berdasarkan seni bina seperti MVC yang berkuasa dan mudah difahami. Model, Pandangan dan Pengawal gu

CakePHP Bekerja dengan Pangkalan Data CakePHP Bekerja dengan Pangkalan Data Sep 10, 2024 pm 05:25 PM

Bekerja dengan pangkalan data dalam CakePHP adalah sangat mudah. Kami akan memahami operasi CRUD (Buat, Baca, Kemas Kini, Padam) dalam bab ini.

Pengesah Mencipta CakePHP Pengesah Mencipta CakePHP Sep 10, 2024 pm 05:26 PM

Pengesah boleh dibuat dengan menambah dua baris berikut dalam pengawal.

See all articles