17、phpMyAdmin数据转换与PDF布局实用指南

phpMyAdmin数据转换与PDF布局实用指南

1. 使用设计器进行PDF布局

在数据库视图中,设计器功能为在屏幕上移动表格提供了更精细的方式,因为列链接会跟随表格的移动。设计器保存的表格坐标与PDF模式的坐标之间存在接口。以下是使用设计器进行PDF布局的操作步骤:
1. 进入设计器,点击小的PDF图标。
2. 此时会出现一个面板,可选择现有的PDF模式名称以及要执行的操作,例如将设计器坐标导出到PDF模式。
3. 也可以使用“创建新页面”对话框,输入PDF页面名称并点击“前往”来创建一个空页面,之后可导出设计器工作区保存的坐标。

设计器和编辑PDF功能在管理表格的范围上有所不同。设计器会操作数据库中的每个表格,而编辑PDF面板则允许选择表格,以便在有多个表格时表示关系的子集。

2. MIME 基于的转换

MIME 基于的转换是一项强大的功能,它允许在浏览表格时根据特定规则转换列的内容,改变数据的显示格式。

2.1 浏览模式下的显示行为

在正常情况下,浏览表格时会显示每行的精确内容,但存在以下特殊情况:
- TEXT和CHARACTER字段可能会根据 $cfg['LimitChars'] 进行截断,具体取决于是否选择查看完整文本。
- BLOB字段可能会被诸如 [BLOB - 1.5 KB] 之类的消息替换。

例如,“Future souvenirs”书籍的封面照片(BLOB列)当前显示为诸如 ‰PNG\r\n\Z\n\0\0\0\rIHDR\0 之类的神秘数据或表明BLOB字段大小的消息。通过适当的转换,可以直接在phpMyAdmin中看到图片的缩略图甚至全尺寸图片。

2.2 显示选项

在浏览模式下,“选项”链接会显示一个滑块,其中包含“隐藏浏览器转换”复选框。可使用此复选框在查看单元格的真实数据和其转换后版本之间进行切换。

2.3 启用转换

转换是一种机制,它使用为列定义的元数据在浏览时转换与该列相关的所有单元格,仅转换结果页面上可见的单元格。转换逻辑编码在PHP脚本中,存储在 libraries/transformations 中,并使用插件架构调用。
要启用此功能,必须在 config.inc.php 中将 $cfg['BrowseMIME'] 设置为 TRUE 。同时,链接表基础设施必须就位,因为转换所需的元数据在官方MySQL表结构中不可用,这是专门为phpMyAdmin添加的。

2.4 MIME列的设置

如果进入书籍表的结构页面的表视图,并点击 cover_photo 的“更改”链接,在启用转换功能的情况下,会看到字段的三个额外属性:
- MIME类型 :用于对列中包含的数据类型进行分类,在phpMyAdmin中,当前可能的值包括 image/jpeg image/png text/plain application/octetstream
- 浏览器转换 :设置要执行的具体转换,每种MIME类型可能支持多种转换。例如,对于 image/jpeg MIME类型,有 image/jpeg: inline (用于显示可点击的图像缩略图)和 image/jpeg: link (仅显示链接)两种转换。
- 转换选项 :一些转换接受选项,例如生成图像的转换需要像素宽度和高度。选项列表中的值用逗号分隔,有些选项可能需要用引号括起来。

以下是MIME类型的详细说明表格:
| MIME类型 | 说明 |
| ---- | ---- |
| image/jpeg | 用于JPEG格式的图像 |
| image/png | 用于PNG格式的图像 |
| text/plain | 可用于包含任何类型文本的列,如XHTML或XML文本 |
| application/octetstream | 用于二进制数据 |

3. 图像生成的要求

正常的缩略图生成需要Web服务器上存在一些组件,并且需要正确配置 config.inc.php 中的参数。

3.1 GD2库

phpMyAdmin使用一些内部函数来创建缩略图,这些函数需要PHP服务器上存在GD2库。phpMyAdmin可以检测正确的GD2库是否存在,但检测需要一些时间,并且几乎每次在phpMyAdmin中执行操作时都会进行检测。
config.inc.php 中将 $cfg['GD2Available'] 参数设置为默认值 'auto' 表示需要检测库的存在和版本。如果知道GD2库可用,将 $cfg['GD2Available'] 设置为 yes 可以加快执行速度;如果GD2库不可用,建议将此参数设置为 no
要查看服务器上的GD2库版本,可以访问phpMyAdmin的主页,点击“显示PHP信息”。如果此链接不存在,需要将 $cfg['ShowPhpInfo'] 参数设置为 true ,然后查找标题为“gd”的部分并验证标识的版本。

3.2 JPEG和PNG库

如果要为JPEG和PNG图像生成缩略图,PHP服务器需要支持这些图像类型。更多详细信息,请参考 http://php.net/manual/en/ref.image.php

3.3 内存限制

在一些PHP服务器上, php.ini memory_limit 的默认值为8 MB,这对于正确的图像操作来说太低,因为用于生成最终图像的GD函数需要一些工作内存。例如,在一次测试中,从300 KB的JPEG图像生成缩略图需要将 memory_limit 设置为11 MB。

以下是图像生成要求的流程图:

graph LR
    A[开始] --> B{GD2库是否可用}
    B -- 是 --> C[设置$cfg['GD2Available']为yes]
    B -- 否 --> D[设置$cfg['GD2Available']为no]
    C --> E{JPEG和PNG库是否支持}
    D --> E
    E -- 是 --> F{内存限制是否足够}
    E -- 否 --> G[参考http://php.net/manual/en/ref.image.php配置]
    G --> F
    F -- 是 --> H[可正常生成缩略图]
    F -- 否 --> I[调整memory_limit值]
    I --> H
    H --> J[结束]
4. 转换示例

以下是一些常见的转换示例:

4.1 可点击的缩略图(.jpeg或.png)
  1. cover_photo 字段类型从BLOB更改为MEDIUMBLOB,以确保可以上传大于65 KB的照片。
  2. 输入转换属性,选项以宽度和高度的形式呈现,如果省略选项,默认值为100和100。缩略图生成代码会保留图像的原始纵横比,输入的值是生成图像的最大宽度和高度。
  3. 使用第6章的说明在单元格中上传一个.jpeg文件。在浏览此表时,会看到可点击的缩略图,点击缩略图可显示全尺寸照片。缩略图不会存储在MySQL中,每次进入此组行的浏览模式时都会生成。对于.png文件,需要使用 image/png 作为MIME类型, image/png: inline 作为转换。
4.2 图像链接

要获得没有缩略图的链接,使用 image/jpeg: link 转换,此转换没有转换选项。点击链接可查看照片,右键点击照片可下载。

4.3 日期格式化
  1. 将书籍表中的 date_published 字段类型更改为DATETIME。
  2. 将其MIME类型设置为 text/plain ,浏览器转换设置为 text/plain: dateformat
  3. 编辑“Future souvenirs”书籍的行,在 date_published 字段中输入 2003-01-01 14:56:00 。浏览表时,该字段将被格式化,鼠标悬停在字段上可显示未格式化的原始内容。
    此转换接受两个选项:第一个是要添加到原始值的小时数,默认值为零;第二个是要使用的时间格式,由任何PHP strftime 参数组成。例如,在转换选项中输入 '0','Year: %Y' 会得到相应的格式化结果。
4.4 文本链接

假设在书籍表的描述字段中输入了完整的URL http://domain.com/abc.pdf ,浏览表时会显示链接文本,但无法点击。使用 text/plain MIME类型和 text/plain: link 浏览器转换,链接文本将变为可点击。
如果要指向的所有文档都位于一个公共URL前缀下,可以将此前缀(例如 http://domain.com/ )放在第一个转换选项中,用引号括起来,然后在每个单元格中只需要输入URL的最后一部分( abc.pdf )。还可以使用第二个转换选项设置标题,在浏览模式下将显示此标题而不是URL内容,但点击仍会转到预期的URL。

4.5 文本图像链接

此转换与 text/plain: link 类似,但在单元格中放置指向图像的URL,图像将被获取并与链接文本一起显示在单元格中。图像可以位于Web上的任何位置,包括本地服务器。
有三个可用选项:
- 公共URL前缀(与 text/plain: link 类似)
- 图像的像素宽度(默认值:100)
- 图像的高度(默认值:50)

例如,对于测试URL,应输入选项 '','100','123' 。如果链接文本太长,转换可能不会发生,默认情况下会选择“部分文本”显示选项,此时可以切换到“完整文本”以显示完整链接和图像。

4.6 保留原始格式

通常,在显示文本时,phpMyAdmin会帮助去除特殊字符。例如,在一本书的描述字段中输入 This book is <b>good</b> ,浏览表时通常会看到原样的文本。但如果对该字段使用 text/plain: formatted 转换,浏览时会正确显示格式化后的文本。不过,数据字段中输入的其他HTML可能会产生意外结果,例如非转义的 </table> 标签会破坏输出。

4.7 显示部分文本

text/plain: substr 转换可用于仅显示文本的一部分,有以下选项:
- 第一个:文本的起始位置(默认值:0)
- 第二个:要显示的字符数(默认值:剩余的所有文本)
- 第三个:用于显示截断已发生的后缀,默认显示省略号(…)
需要注意的是, $cfg['LimitChars'] 会对每个非数字字段进行字符截断,因此 text/plain: substr 是一种逐字段微调的机制。

4.8 下载链接

如果要在MySQL中存储每本书的小音频评论,可以执行以下操作:
1. 向书籍表中添加一个名为 audio_contents 的新字段,类型为MEDIUMBLOB。
2. 将其MIME类型设置为 application/octetstream ,选择 application/octetstream: download 转换。
3. 在转换选项中插入 'comment.wav'
此MIME类型和扩展名会告知浏览器传入的数据类型,浏览器应会打开相应的播放器。要插入评论,先以.wav格式录制,然后将文件内容上传到某本书的 audio_contents 字段。浏览表时,会看到音频评论的链接 comment.wav

4.9 十六进制表示

字符在MySQL(通常在计算机中)中以数字数据形式存储,并转换为在屏幕或打印机上有意义的内容。用户有时会从一个应用程序复制粘贴数据到phpMyAdmin,如果字符不被MySQL直接支持,可能会导致意外结果。使用 application/octetstream: hex 转换可以查看确切的十六进制代码。例如,将此转换应用于书籍表的标题字段,浏览包含“Future souvenirs”标题的行时,可以看到相应的十六进制表示。通过了解该列的字符编码集,可以将其内容与描述每个字符的图表进行比较,例如 http://en.wikipedia.org/wiki/Latin1 描述了latin1字符集。

4.10 SQL美化打印

“美化打印”是一种“美化”源代码的方式。如果使用一个表来存储SQL课程的文本,其中一列可能包含示例SQL语句。使用 text/plain: sql 转换,浏览表时这些SQL语句将以彩色显示,并带有语法高亮。

4.11 IP地址转换

IP(v4)地址可以编码为长整数(例如,通过PHP的 iptolong() 函数)并存储在MySQL的 UNSIGNED INT 列中。要将其转换回熟悉的点分字符串(例如 127.0.0.1 ),可以使用 text/plain: longToIpv4 转换。

4.12 外部应用程序

前面描述的转换是在phpMyAdmin内部实现的,但有些转换通过现有的外部应用程序执行效果更好。 text/plain: external 转换允许将单元格的数据发送到Web服务器上启动的另一个应用程序,捕获该应用程序的输出并显示在单元格位置。
此功能仅在Linux或UNIX服务器上受支持,并且PHP不应在安全模式下运行,因此在托管服务器上可能不可用。出于安全原因,应用程序的精确路径和名称不能在phpMyAdmin中作为转换选项设置,应用程序名称直接在phpMyAdmin脚本中设置。
以下是使用外部应用程序进行转换的操作步骤:
1. 在phpMyAdmin安装目录中,编辑 libraries/transformations/ 中的 text_plain__external.inc.php 文件,找到以下部分:

$allowed_programs = array();
//$allowed_programs[0] = '/usr/local/bin/tidy';
//$allowed_programs[1] = '/usr/local/bin/validate';

默认情况下没有配置外部应用程序,需要显式添加自己的应用程序。转换脚本的名称使用以下格式构造:MIME类型、双下划线,然后是指示进行哪种转换的部分。
2. 在此处描述每个允许的程序及其完整路径,并使用从0开始的索引编号。
3. 保存对该脚本的修改,并根据需要将其放回服务器。
4. 在转换菜单中选择 text/plain: external
5. 作为第一个选项,放置应用程序编号(例如,0表示 tidy 应用程序)。
6. 第二个选项包含需要传递给此应用程序的参数。
7. 如果希望phpMyAdmin对结果应用 htmlspecialchars() 函数,将第三个参数设置为1(默认情况);如果不想保护输出,可以将其设置为0。
8. 如果不想重新格式化单元格的行,将第四个参数设置为1,这将使用 NOWRAP 修饰符(默认情况)。

通过以上介绍,我们详细了解了phpMyAdmin中使用设计器进行PDF布局以及MIME基于的转换功能,包括各种转换示例和图像生成的要求。这些功能可以帮助我们更好地管理和展示数据库中的数据,提高工作效率和数据的可视化效果。在实际应用中,可以根据具体需求选择合适的转换方式和配置参数,以达到最佳的数据显示和处理效果。

phpMyAdmin数据转换与PDF布局实用指南

5. 转换功能总结与注意事项

为了更清晰地理解和使用各种转换功能,下面对前面介绍的转换功能进行总结,并列出一些使用时的注意事项。

转换类型 MIME类型 转换选项及说明 适用场景
可点击的缩略图 image/jpeg、image/png 宽度和高度(默认100,100),保留原始纵横比 展示图片缩略图,点击查看全尺寸
图像链接 image/jpeg 仅提供图像链接,用于查看和下载
日期格式化 text/plain 小时数(默认0),PHP strftime参数 格式化日期显示
文本链接 text/plain 公共URL前缀,标题 将文本链接变为可点击
文本图像链接 text/plain 公共URL前缀,图像宽度(默认100),图像高度(默认50) 显示图像及链接文本
保留原始格式 text/plain 正确显示包含HTML标签的文本
显示部分文本 text/plain 起始位置(默认0),字符数(默认剩余所有),后缀(默认…) 仅显示文本部分内容
下载链接 application/octetstream 文件名 提供文件下载链接
十六进制表示 application/octetstream 查看字符的十六进制代码
SQL美化打印 text/plain 彩色显示SQL语句并语法高亮
IP地址转换 text/plain 将编码的IP地址转换为点分字符串
外部应用程序 text/plain 应用程序编号,应用程序参数,是否应用htmlspecialchars(),是否使用NOWRAP修饰符 借助外部应用程序处理数据

注意事项
- 在进行图像生成时,要确保GD2库、JPEG和PNG库可用,并且合理设置内存限制,否则可能无法正常生成缩略图。
- 对于外部应用程序转换,由于其仅支持Linux或UNIX服务器且PHP不能在安全模式下运行,在使用前要确认服务器环境是否满足要求。
- 在使用HTML标签进行文本格式化时,要注意避免输入可能破坏输出的标签,如非转义的 </table> 标签。

6. 转换功能的应用场景分析

不同的转换功能适用于不同的应用场景,下面结合实际情况分析其具体应用。

6.1 电商网站商品展示

在电商网站的数据库中,商品表可能包含商品图片、价格、日期等信息。可以使用可点击的缩略图转换来展示商品图片的缩略图,用户点击缩略图即可查看全尺寸图片,提升用户体验。同时,使用日期格式化转换将商品上架日期以更友好的格式显示,方便用户了解商品的时效性。

graph LR
    A[商品表] --> B[商品图片 - 可点击缩略图转换]
    A --> C[商品上架日期 - 日期格式化转换]
    B --> D[用户查看缩略图]
    D --> E[点击查看全尺寸图片]
    C --> F[用户查看格式化日期]
6.2 文档管理系统

在文档管理系统中,文档表可能包含文档链接、文档描述等信息。使用文本链接转换可以将文档链接变为可点击的,方便用户直接访问文档。如果文档描述中包含HTML标签,使用保留原始格式转换可以正确显示文档描述的格式。

graph LR
    A[文档表] --> B[文档链接 - 文本链接转换]
    A --> C[文档描述 - 保留原始格式转换]
    B --> D[用户点击链接访问文档]
    C --> E[用户查看格式化描述]
6.3 学习资源平台

在学习资源平台中,课程表可能包含课程介绍、课程视频等信息。对于课程介绍中的长文本,可以使用显示部分文本转换来只显示部分内容,用户可以根据需要展开查看完整内容。对于课程视频,可以使用下载链接转换提供下载功能,方便用户离线学习。

graph LR
    A[课程表] --> B[课程介绍 - 显示部分文本转换]
    A --> C[课程视频 - 下载链接转换]
    B --> D[用户查看部分介绍]
    D --> E[展开查看完整介绍]
    C --> F[用户下载课程视频]
7. 优化建议与未来趋势

为了更好地使用phpMyAdmin的转换功能,提高数据处理和展示的效率,下面给出一些优化建议,并对未来趋势进行展望。

7.1 优化建议
  • 性能优化 :在进行图像生成时,提前确认GD2库的可用性,并将 $cfg['GD2Available'] 参数设置为合适的值,避免每次操作都进行检测,提高执行速度。同时,合理调整内存限制,确保图像操作能够顺利进行。
  • 安全优化 :对于外部应用程序转换,要严格控制允许的应用程序列表,避免使用不可信的应用程序,防止安全漏洞。在使用HTML标签进行文本格式化时,对输入的标签进行严格过滤,避免出现破坏输出的情况。
  • 配置优化 :根据实际需求,合理设置转换选项,避免不必要的默认值。例如,在使用日期格式化转换时,根据具体的显示要求设置合适的时间格式参数。
7.2 未来趋势
  • 更多的转换类型 :随着技术的发展,可能会出现更多类型的转换,以满足不同用户的需求。例如,支持更多的文件格式转换,如视频格式转换、音频格式转换等。
  • 智能化转换 :未来的转换功能可能会更加智能化,能够根据数据的内容和类型自动选择合适的转换方式,减少用户的手动配置。
  • 与其他工具的集成 :phpMyAdmin可能会与更多的数据库管理工具和开发框架进行集成,实现更高效的数据处理和展示。例如,与前端框架集成,实现数据的实时更新和动态展示。

通过以上对phpMyAdmin转换功能的详细介绍、应用场景分析以及优化建议和未来趋势展望,我们可以充分利用这些功能来提升数据库管理和数据展示的效果。在实际使用中,要根据具体的需求选择合适的转换方式,并注意相关的注意事项,以确保数据处理的准确性和安全性。同时,关注未来的发展趋势,及时应用新的功能和技术,提高工作效率和数据处理能力。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值