phpmyadmin支持搜索Server功能

做php开发的都喜欢用phpmyadmin管理mysql,但是随着公司的数据库变多,想在下拉列表中肉眼找到目标服务器就变得很烦躁。

不如找一个下拉列表插件,把它变成一个支持模糊搜索的高级下拉列表吧。

Selectize.js插件

因为phpmyadmin的下拉列表就是一个巨长无比的<select><option></option>…</select>列表,所以只需要找一个JS插件来改造这个列表即可。

公司用的phpmyadmin的Jquery版本比较低,所以找了一个要求不高的插件:https://selectize.github.io/selectize.js/

我们通过它的cdn地址下载如下2个文件:

  • https://cdnjs.cloudflare.com/ajax/libs/selectize.js/0.12.6/js/standalone/selectize.min.js
  • https://cdnjs.cloudflare.com/ajax/libs/selectize.js/0.12.6/css/selectize.default.min.css

改造phpmyadmin

放置前端资源:

  • 把selectize.min.js放到js/selectize.min.js目录。
  • selectize.default.min.css放到themes/pmahomme/css/selectize.default.css目录。

在phpmyadmin目录中grep搜索<title>,找到了phpmyadmin的<head>生成位置:libraries/Header.class.php。

在其中的private function _getLinkTags()函数中,引入css文件:

然后在private function _addDefaultScripts()中引入了selectize.min.js:

PHP在生成header的时候,上述addFile最终在<head>里引入了这样一个PHP接口:

该接口在PHP端合并所有这些JS资源,整体返回给前端。

仅仅引入资源还不够,需要在<select>标签后面调用插件来改造下拉框。

找到./libraries/select_server.lib.php文件,在function PMA_selectServer($not_only_options, $ommit_fieldset)末尾添加上这段代码:

效果

现在就可以模糊搜索了:

如果文章帮助您解决了工作难题,您可以帮我点击屏幕上的任意广告,或者赞助少量费用来支持我的持续创作,谢谢~