php仿ZOL分页类代码

接下来我将为您详细讲解如何编写PHP仿ZOL分页类代码。

一、了解分页

为了更好地理解分页类的代码,我们首先需要了解分页是什么。分页是指将数据分割成多个部分进行显示,使得数据过多时可以分页展示,从而提高页面的加载速度,方便用户的查看。常见的分页方式有传统的数字翻页和类似于“下一页”、“上一页”的ajax异步加载。

二、开始写PHP仿ZOL分页类代码

1.建立分页类文件

我们首先需要建立一个php文件,用于存放分页类的代码。命名可以为page.class.php

2.开始写类

在page.class.php文件中,我们需要先定义一个类Page,类的代码如下:

class Page
{
  //类变量定义
  private $total; //总记录数
  private $pagesize; //每页显示的记录数
  private $limit; //SQL语句中的limit参数
  private $page; //当前页码
  private $pagenum; //总页数
  private $url; //分页链接地址

  //初始化属性
  public function __construct($total, $pagesize)
  {
    $this->total = $total;
    $this->pagesize = $pagesize;
    $this->pagenum = ceil($this->total / $this->pagesize);
    $this->page = $this->setPage();
    $this->limit = ($this->page - 1) * $this->pagesize . "," . $this->pagesize;
    $this->url = $this->setUrl();
  }

  //设置当前页码
  private function setPage()
  {
    if (!empty($_GET["page"])) {
      if ($_GET["page"] > 0) {
        if ($_GET["page"] > $this->pagenum) {
          return $this->pagenum;
        } else {
          return $_GET["page"];
        }
      } else {
        return 1;
      }
    } else {
      return 1;
    }
  }

  //设置分页链接地址
  private function setUrl()
  {
    $url = $_SERVER["REQUEST_URI"];
    $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;
  }

  //获取分页链接
  private function getUrl()
  {
    $url = $this->url;
    $url .= (strrpos($url, "?") === false ? "?" : "&") . "page=";
    return $url;
  }

  //获取分页HTML代码
  public function show()
  {
    $pagehtml = "<div class='page'>";
    $pagehtml .= "<span class='total'>共{$this->total}条记录&nbsp;</span>";
    if ($this->page > 1) {
      $pagehtml .= "<a href='{$this->getUrl()}1'>首页</a>";
      $pagehtml .= "<a href='{$this->getUrl()}{$this->page-1}' class='prev'>上一页</a>";
    } else {
      $pagehtml .= "<span class='inactive'>首页</span>";
      $pagehtml .= "<span class='inactive'>上一页</span>";
    }
    if ($this->pagenum > 10) {
      $start = $this->page - 5;
      $end = $this->page + 4;
      if ($start < 1) {
        $end += abs($start) + 1;
        $start = 1;
      }
      if ($end > $this->pagenum) {
        $start -= ($end - $this->pagenum);
        $end = $this->pagenum;
      }
    } else {
      $start = 1;
      $end = $this->pagenum;
    }
    for ($i = $start; $i <= $end; $i++) {
      if ($i == $this->page) {
        $pagehtml .= "<span class='current'>{$i}</span>";
      } else {
        $pagehtml .= "<a href='{$this->getUrl()}{$i}'>{$i}</a>";
      }
    }
    if ($this->page < $this->pagenum) {
      $pagehtml .= "<a href='{$this->getUrl()}{$this->page+1}' class='next'>下一页</a>";
      $pagehtml .= "<a href='{$this->getUrl()}{$this->pagenum}'>末页</a>";
    } else {
      $pagehtml .= "<span class='inactive'>下一页</span>";
      $pagehtml .= "<span class='inactive'>末页</span>";
    }
    $pagehtml .= "</div>";
    return $pagehtml;
  }

  //获取limit参数
  public function getLimit()
  {
    return $this->limit;
  }
}

3.功能分析

上面是一个完整的分页类代码,下面对各个方法做一个简单的分析:

1.初始化属性(__construct方法)

在初始化属性时,需要传入总记录数和每页显示的记录数两个参数,在构造方法中进行计算,获取总页数。

2.设置当前页码(setPage方法)

根据传入的页码参数 $_GET["page"],判断当前页码,如果页码小于1,则设置为1,如果页码大于总页数,则设置为总页数。

3.设置分页链接地址(setUrl方法)

通过解析当前URL地址,获取其中的查询字符串,去除page参数后,重新拼接成新的URL。

4.获取分页链接(getUrl方法)

根据获取到的分页链接地址,拼接成类似于“http://www.example.com/index.php?page=”的分页链接格式。

5.获取分页HTML代码(show方法)

通过上述步骤计算出当前页码、总页数、分页链接地址等,生成一个类似于<ul><li>等HTML代码的分页导航栏,并通过CSS美化样式。其中,通过if语句判断当前页码是否大于1,如果是则显示“首页”、“上一页”,如果小于1则显示灰色的“首页”、“上一页”不可点击字样,通过for循环遍历页码,如果当前页码等于当前遍历到的页码,则添加类名current表示当前页,否则生成类似于“1”、“2”、“3”等的页码链接;最后通过if语句判断当前页码是否为最后一页,如果是,则显示“下一页”、“末页”,否则显示灰色的“下一页”、“末页”不可点击字样。

6.获取limit参数(getLimit方法)

通过计算获取到当前页码应该显示的记录的起始位置和终止位置,将其组合成类似于“0,10”、“11,10”这样的limit参数。

4.示例

示例一:调用分页类

假如我们有一个图书列表页面,需要进行分页展示,我们可以通过如下方式调用分页类:

<?php
include_once("page.class.php");
$total = 100; //总记录数
$pagesize = 10; //每页显示的记录数
$page = new Page($total, $pagesize); //实例化分页类
$limit = $page->getLimit(); //获取limit参数
$sql = "SELECT * FROM book LIMIT {$limit}"; //SQL语句中添加limit参数
//执行查询操作
?>

示例二:页面显示分页导航栏

我们将分页导航栏代码封装在page.class.php的show方法中,可以通过如下方式在页面中显示分页导航栏:

<html>
<head>
  <title>图书列表 - 第<?php echo $page->getPage();?>页</title>
  <style type="text/css">
    .page {text-align:center;}
    .page a,.page span {margin:0 3px;padding:2px 8px;border:1px solid #D2D2D2;}
    .page span {background-color:#F7F7F7;color:#666;text-decoration:none;cursor:default;}
    .page .current {background-color:#3366CC;color:#FFF;text-decoration:none;}
    .page .total {font-size:12px;margin-right:10px;}
    .page .prev,.page .next {font-size:12px;background-color:#3366CC;color:#FFF;}
    .page .inactive {background-color:#F7F7F7;color:#999;border-color:#D2D2D2;}
  </style>
</head>
<body>
  <?php echo $page->show();?>
</body>
</html>

通过上述示例,我们可以将分页类应用在自己的项目中,实现分页展示的效果。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:php仿ZOL分页类代码 - Python技术站

(0)
上一篇 2023年5月30日
下一篇 2023年5月30日

相关文章

  • 解决php接收shell返回的结果中文乱码问题

    当我们通过PHP的shell_exec或exec函数执行系统命令时,有可能会遇到返回结果中出现乱码的情况,这是因为系统命令返回的结果可能包含了中文字符,但是代码运行的环境不一定支持中文字符编码导致的。下面是解决PHP接收shell返回的结果中文乱码问题的完整攻略: 设置环境变量 首先我们可以设置环境变量来指定命令行的字符集编码,比如我们执行如下命令: put…

    PHP 2023年5月26日
    00
  • PHP采集相关教程之一 CURL函数库

    下面我将为你详细讲解“PHP采集相关教程之一 CURL函数库”的完整攻略。 什么是CURL函数库? CURL是一个开源的用于传输数据的库,支持FTP、HTTP、HTTPS、Gopher、Telnet等许多协议,常用于爬虫、接口请求等网络数据传输场景。 CURL在PHP中是通过CURL函数库来实现的,使用CURL可以方便地进行HTTP请求与响应的处理。 CUR…

    PHP 2023年5月27日
    00
  • ThinkPHP实例化模型的四种方法概述

    为实例化模型,ThinkPHP框架提供了四种不同的方法。这些方法包括: new Model() 方法 D() 方法 M()方法 模型静态方法方法 下面是每种方法的详细解释: new Model() 方法 这是最常见的实例化模型的方法。这种方法使用全局命名空间,并且需要使用Model关键字来实例化模型。以下是这种方法的示例代码: $user = new \Th…

    PHP 2023年5月23日
    00
  • 解析PHP处理换行符的问题 \r\n

    文本中的换行符在不同的操作系统中可能有区别,例如Windows系统使用CR(回车符)和LF(换行符)作为换行符,而Unix-like系统只使用LF作为换行符。当在PHP代码中处理这些不同类型的换行符时,必须格外小心以确保代码的可移植性。 下面是解析PHP处理换行符的步骤: 1. 使用PHP提供的常量 PHP提供了两个常量在不同操作系统中处理换行符,分别是PH…

    PHP 2023年5月26日
    00
  • php文件怎么打开 如何执行php文件

    打开和执行 PHP 文件需要一个 Web 服务器软件,比如 Apache,以及一个 PHP 解析器,PHP 解析器会读取 PHP 文件中的代码,然后将其转换为可执行的语言。在接下来的攻略中,我将详细讲解如何打开和执行 PHP 文件。 步骤一:安装 Web 服务器 首先,您需要在您的计算机或服务器上安装一个 Web 服务器软件。Apache 是最流行的 Web…

    PHP 2023年5月23日
    00
  • PHP之将POST数据转化为字符串的实现代码

    将POST数据转化为字符串通常涉及处理数据和编码问题,本文将提供一种通用的PHP代码实现,适用于大多数项目。 步骤1. 获取POST数据 首先,我们需要使用PHP的$_POST全局变量获取POST数据。$_POST是一个关联数组,每个键值对分别表示POST参数的名称和值。例如,如果我们POST了一个名为”username”的参数,其值为”johndoe”,则…

    PHP 2023年5月26日
    00
  • php的urlencode()URL编码函数浅析

    PHP的urlencode()函数 urlencode()函数是PHP内置的URL编码函数,用于将字符串编码为符合URL规范的格式,包括将一些特殊字符转换为URL编码形式。该函数一般用于将URL参数进行编码,防止出现乱码等问题。 urlencode()函数的语法 urlencode()函数的语法非常简单,只需要传入一个字符串作为参数即可,例如: $url =…

    PHP 2023年5月23日
    00
  • php入门学习知识点六 PHP文件的读写操作代码

    让我们来详细讲解一下PHP文件的读写操作。首先,我们需要了解一下PHP文件读写的基本知识。 PHP文件读写操作 在PHP中,我们可以使用以下函数来进行文件的读写操作: fopen() 函数:用于打开一个文件,返回一个文件指针。 fgets() 函数:用于读取文件中的一行。 fwrite() 函数:用于向文件中写入内容。 fclose() 函数:用于关闭文件。…

    PHP 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部