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 2023年5月23日
    00
  • PHP eval函数使用介绍

    PHP eval函数使用介绍 什么是eval函数 eval 函数是 PHP 的内置函数之一,它有一个参数,表示需要执行的 PHP 代码字符串。eval 函数的作用是执行一个字符串代码,并将其结果返回。如果字符串不是有效的 PHP 代码,那么 eval 函数将会抛出一个 Parse Error 异常。 eval函数的用法 eval 函数的基本语法格式如下: e…

    PHP 2023年5月25日
    00
  • 浅谈PHP正则表达式中修饰符/i, /is, /s, /isU

    正则表达式(regular expression)是一种强大的文本匹配工具,很多编程语言都支持正则表达式,其中就包括PHP。在使用PHP正则表达式的时候,我们不仅需要指定要匹配的文本,还需要指定一些修饰符,以控制正则表达式的匹配方式。本篇文章将详细讲解PHP正则表达式中常用的修饰符/i、/is、/s和/isU,以及它们的用法和特点。 修饰符/i 修饰符/i(…

    PHP 2023年5月26日
    00
  • PHP实现一个简单url路由功能实例

    请参考以下完整攻略,步骤如下: 1. 了解URL路由的概念 路由,通俗来说就是将URL映射到对应的程序上去执行,以满足不同需求的访问需求。比如我们可以把 URL 中的参数作为查询数据库的条件,或者是根据 URL 中的参数选择不同的模板文件来渲染页面等等。 2. 编写.htaccess文件 .htaccess是apache生成服务器配置文件通道之一,使用它可以…

    PHP 2023年5月26日
    00
  • php打开文件fopen函数的使用说明

    PHP打开文件fopen函数的使用说明 fopen()函数简介 fopen()函数是PHP中用于打开文件的标准函数。该函数的使用非常简单,只需要指定要打开的文件名及打开文件的模式参数即可。使用fopen()函数打开文件后,我们可以利用其他的文件操作函数完成对文件的读写、追加等操作。 函数语法 resource fopen ( string $filename…

    PHP 2023年5月26日
    00
  • php随机输出名人名言的代码

    下面是PHP随机输出名人名言的代码攻略: 步骤1:创建数据库和数据表 首先,我们需要创建一个名人名言的数据库,可以使用phpMyAdmin或者其他的数据库管理工具来完成。在新创建的数据库中,我们创建一个名叫”quotes”的数据表,用来存储名人名言的相关信息: CREATE TABLE `quotes` ( `id` int(11) NOT NULL AUT…

    PHP 2023年5月26日
    00
  • PHP的邮件群发系统phplist配置方法详细总结

    PHP的邮件群发系统phplist配置方法详细总结 1. 安装PHPlist PHPlist是一款开源的邮件群发系统,它可以在Linux、Windows、MacOS等不同的操作系统上运行。首先,您需要执行以下步骤来安装PHPlist: 下载PHPlist的最新版本,并将其上传到您的Web服务器上。 解压缩zip文件。 将解压缩后的文件拷贝到您的网站根目录。 …

    PHP 2023年5月24日
    00
  • php获取网卡的MAC地址支持WIN/LINUX系统

    要在PHP中获取网卡的MAC地址,需要使用系统相关的命令或API。在Windows系统中,可以使用WMI(Windows Management Instrumentation),而在Linux系统中,可以通过执行命令行获取。下面是获取MAC地址的完整攻略: 1. 方式一:使用PHP调用WMI获取MAC地址(适用于Windows系统) Windows Mana…

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