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日

相关文章

  • 中国式家长全学习类安排增加属性一览

    中国式家长全学习类安排增加属性一览 作为家长,为了让孩子能取得好成绩,很多人都喜欢安排各种各样的学习类活动。这些活动不仅考验了孩子的学习能力,也考验了家长的管理能力。为了帮助家长更好地进行管理,我们在学习类活动中增加了属性系统,在此提供完整攻略。 1. 学习类活动 学习类活动是指与学习相关的活动,比如补习班、培训机构等。在进行学习类活动时,我们可以根据不同的…

    PHP 2023年5月26日
    00
  • PHP简单留言本功能实现代码

    让我们来详细讲解一下PHP简单留言本功能实现代码的完整攻略。 什么是留言本 留言本是指网站上的一种功能,允许访客在网站上发表留言,与网站所有者或其他访客互动,增加网站的互动性和用户体验。 留言本的技术实现 下面我们来使用PHP技术实现一个简单的留言本功能。 创建留言本页面 首先,创建一个留言本页面,包含留言列表和留言框。代码如下: <!DOCTYPE …

    PHP 2023年5月23日
    00
  • php获取网页里所有图片并存入数组的方法

    获取网页里所有图片并存入数组的方法可以分为以下几个步骤: 使用PHP的file_get_contents函数获取目标网页的HTML代码; 使用PHP的preg_match_all()函数匹配其中的图片地址,提取出图片URL; 将提取出来的图片URL存入一个数组。 下面是代码示例: <?php // 目标网页URL $url = "https:…

    PHP 2023年5月26日
    00
  • PHP服务器端API原理及示例讲解(接口开发)

    标题:PHP 服务器端 API 原理及示例讲解 什么是服务器端 API 服务器端 API 是指能够在服务器端响应请求的一系列接口和协议,用于实现服务器端与客户端之间的数据传输,方便不同系统之间的交互和数据共享。 PHP 服务器端 API 的原理 PHP 是一种服务器端编程语言,具有强大的服务器端编程能力,因此被广泛应用于 Web 应用程序的开发中,同时也成为…

    PHP 2023年5月23日
    00
  • php产生随机数的两种方法实例代码 输出随机IP

    下面是详细讲解“php产生随机数的两种方法实例代码 输出随机IP”的完整攻略: 一、产生随机数的两种方法 1. 使用rand()函数 PHP的rand()函数可以生成一个随机整数,使用方式如下: $rand_num = rand($min, $max); 其中$min和$max是可选的参数,分别表示随机数的最小值和最大值。如果不指定$min和$max,则默认…

    PHP 2023年5月26日
    00
  • 使用纯php代码实现页面伪静态的方法

    以下是使用纯PHP代码实现页面伪静态的方法的攻略: 什么是伪静态? 伪静态是指将动态生成的页面通过重写URL的方式,使其看起来像静态文件,从而提高网站的搜索引擎友好度。 实现伪静态的步骤 服务器端进行URL重写 生成动态页面时去掉.php等文件扩展名 下面分别详细介绍这两个步骤 步骤1:服务器端进行URL重写 在Apache服务器上,可以通过.htacces…

    PHP 2023年5月23日
    00
  • 小编亲身实操,教你配置phpstorm与xdebug的调试配置,不成功你骂我

    开发php,还是找个专业的Ide较好,vscode毕竟在php上不专业,需要下载各种插件才行,还不支持多线程调试,因此小编下载了phpstorm,打算以后用phpstorm来开发php项目,断点调试代码是必不可少的,还是用xdebug吧,可小编在网上搜索了无数篇文章,照着做了一天,竟然没调试成功。最后功夫不负有心人,终于调试成功,想着成千上万的phper肯定…

    PHP 2023年4月17日
    00
  • php的控制语句

    控制语句是在程序执行过程中,根据某些条件,来决定程序的执行流程。PHP作为一种流行的编程语言,提供了许多有用的控制语句,包括if语句、switch语句、while、for循环等等。下面是控制语句的详细解释与使用示例。 if语句 if语句是最常见的控制语句之一,用于在满足某些条件时执行特定的代码块。以下是if语句的语法: if (condition) { //…

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