Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PHP

如何使用PHP分类数据

by
Difficulty:IntermediateLength:LongLanguages:

Chinese (Simplified) (中文(简体)) translation by Fuhuan (you can also view the original English article)

我记得几年前,我第一次开始使用PHP和MySQL数据库时,我是第一次从数据库获取信息并显示在Web浏览器中,这让我非常兴奋。

对于那些没有数据库和编程知识的人来说,当我把这些表格行显示在屏幕上时,我装逼成功了。 当时我还没有完全理解所有的代码,但是第一次成功促使我开始做更大更好的项目。

虽然我对数据库的兴趣程度可能与以前不一样,
但从我的第一个'hello world'遇到PHP和MySQL以来,我一直都
在关注使事情变得简单易用的强大功能。 

作为一名开发人员,我经常遇到的一个问题是需要大量信息并使其易于消化。 无论是大型公司的客户名单还是个人mp3目录,都不得不坐在行的数据行上盯着行行数据,这可能令人沮丧
和沮丧。 一个程序猿可以做什么? 分类!


1.分类

分类本质上是将一系列结果分类
在页面上以便于查看的过程。

example 1example 1example 1

我很早就意识到,如果我有5000行信息​​要显示,
不仅会让人头痛,而且大多数浏览器都需要
大约五秒钟才能显示它。 

为了解决这个问题,我会编写各种SQL语句来提取大数据,如果我
心情很好,我甚至可能会放出几个“下一个”和“前一个”按钮。
过了一段时间,不得不将这些代码放到每个类似的项目中,并
对其进行定制以适应旧的版本 新的版本。 正如每位优秀的开发人员都知道,懒惰会滋生创造力
或类似的东西。 所以有一天我坐下来决定想出一个简单,
灵活且易于使用的PHP类,它会自动为
我做这些肮脏的工作。

简单介绍一下我和PHP分类。 我不是面向对象的专家。 事实上,我很少
使用这些东西。 但是在阅读了一些OOP示例和教程以及一些简单的试验和错误示例之后,
我决定给它一个旋风,你知道吗?
它适用于分类。 这里使用的代码是用PHP 4编写的,
但可以在PHP 5中使用。


2.数据库

喜欢MySQL。 没有其他数据库系统的原因,但对
没有其他数据库系统的原因,但对 MySQL的一个重要特性是它们为您提供了一些
免费的示例数据库,可以在  https://dev.mysql.com/doc/#sampledb上使用。

对于我的示例,我将使用包含超过
4000条记录的世界数据库(大约90k压缩),但我们将创建的PHP脚本的优点是
它可以用于任何数据库。 现在我认为我们都可以同意,如果我们决定
不对分析结果进行分类,那么我们最终会得到一些非常长而笨重的
结果,如下所示:

example 2

(点击查看全部尺寸,很长的图片〜338k)

所以让我们开始分类我们的数据,以便轻松消化这样的东西:

example 3example 3example 3

美丽吗? 一旦将分类放入代码中
只需几行代码即可快速轻松地将大量数据转换为
易于浏览的页面。 真棒。


3. Paginator

这个例子将由两个脚本组成,即可重用的分类程序类和将显示表项和控件的索引文件。

Paginator.class.php

paginator类将只有两个方法和构造函数,随着我们前进,我们将逐步解释每一步。

这个定义只设置了paginator所需的成员变量,因为这是一个助手类,它仅用于分类,它将依赖与MySQL服务器的有效连接和已定义的查询,我们将追加必要的参数以对结果进行分类。 我们将从构造函数方法开始。


非常简单的权利? 此方法只设置对象的数据库连接和必要的查询,然后计算该查询检索的总行数,没有任何限制,也不跳过参数,则需要总数来为分类程序创建链接。

请注意,为了简单起见,我们不进行错误检查或给定参数的任何其他验证,但在现实的应用程序中,此检查将是必需的。

检索结果

现在让我们创建一个实际分类数据并返回结果的方法。

让我们分析这一步,首先我们设置限制和页面参数,默认情况下它们分别设置为10和1。 然后我们检查用户是否需要给定数量的行或全部,根据这个和页面参数我们设置LIMIT 查询的参数,页面  的“ - 1”正在考虑到我们是以1开始页面而不是0。

在此之后,我们简单地评估查询并获得结果,最后我们创建一个新的结果对象,其中包含已执行查询的限制,页面和总体参数以及每个检索行的数据。

显示分类链接

现在我们来编写用于获得分类链接的方法。

这是一个相当长的代码,有着34行代码,所以现在让我们解释一下这串代码发生了什么。

  1. 首先我们评估用户是否需要给定数量的链接或全部链接,在第二种情况下,我们只需返回空字符串,因为不需要分类。
  2. 在此之后,我们根据可用的总行数和每页所需的项目计算最后一页。
  3. 然后,我们将链接参数代表当前页面下方和上方显示的链接数量,并计算要创建的开始和结束链接。
  4. 现在我们为列表创建开始标记并使用list class参数设置它的类并添加“上一页”链接,请注意,对于此链接,我们检查当前页是否是第一个,如果是,我们设置该链接的禁用属性。
  5. 在这一点上,我们显示一个链接到第一页和一个省略符号,以防止启动链接不是第一个链接。
  6. 接下来,我们根据之前计算的开始和结束参数在当前页面的下方和上方添加链接,在每一步中,我们将再次评估当前页面的链接页面并相应地设置活动类别。
  7. 在此之后,我们将显示另一个省略号符号以及末尾链接不是最后一个链接的链接。
  8. 最后,我们显示“下一页”链接,并在用户查看最后一页时设置禁用状态,关闭列表并返回生成的HTML字符串。

这就是Paginator.class的全部内容,当然我们可以为数据库连接,限制,页面,查询和总参数添加setter和getters,但为了简单起见,我们将以这种方式保留它。

4. Index.php

现在我们将创建负责使用Paginator类并显示数据的文件,因此首先让我向您展示基础HTML。

很简单,这个文件只显示一个表格,我们将用从数据库中检索的信息来填充表格,注意在这个例子中,我使用bootstrap来实现基本的页面样式。

使用Paginator

现在为了使用我们的Paginator类,在文档顶部添加以下php代码。

这个脚本非常简单,我们只需要我们的Paginator类,注意这个代码假定这个文件和文件在同一个目录下  index.php ,如果不是这样,你应该相应地更新路径。

然后我们使用MySQLi库创建与我们数据库的连接,从GET请求中检索paginator参数并设置查询,因为这不是关于MySQL的文章,或者我不会详细讨论连接或查询在这里使用。

最后,我们创建Paginator对象并检索当前页面的结果。

显示结果

现在要显示获得的结果,请将以下代码添加到表体中。

这里我们简单地遍历包含城市记录的结果数据属性,并为它们中的每一个创建表格行。

分类链接

现在要显示分类链接,请在表格下方添加以下代码。 

对于Paginator createLinks方法,我们传递获取的  链接  参数和css类用于从引导中使用的分类链接。 这是创建页面的结果。

结论

这应该为您提供所有需要了解的信息,以便在应用程序中启动并运行分类PHP脚本。

请下方的评论栏留下问题,评论或反馈!

关注我们的公众号
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.