在本教程中,我们将回顾PDO CRUD——一个表单构建器和数据库管理工具。PDO CRUD 只需几行代码即可帮助您为数据库表构建表单,从而可以快速轻松地引导数据库应用程序。
有很多扩展可用于数据库抽象,特别是 php 和 mysql 的 CRUD(创建、读取、更新和删除)生成。当然,您还可以找到提供即用型功能和扩展支持的商业选项。在商业选项的情况下,您还可以期待高质量的代码、错误修复和新的增强功能。今天,我们将讨论PDO CRUD工具,它是一个完整的 CRUD 构建器工具,它允许您通过提供数据库表和编写几行代码来构建应用程序。
它适用于多个数据库后端,包括 Mysql、post gres 和sqlite。在这个高级 PHP CRUD 教程中,我们将看到如何使用 PDO CRUD 来构建一个带有 MySQL 数据库后端的 CRUD 系统。
注意:如果您想学习如何在 PHP 和 mySQL 中进行 CRUD,请单击此处。
安装和配置
在本节中,我们将了解如何下载 PDO CRUD 工具后安装和配置它。
购买后,您将能够下载 zip 文件。解压它,你会找到包含主要插件代码的目录:PDOCrud/script。将此目录复制到您的 PHP 应用程序。
例如,如果您的项目配置在/web/demo-app/public_html ,则应将脚本目录复制到 /web/demo-app/public_html/script。
接下来,您需要在配置文件中输入您的数据库后端详细信息。配置文件位于/web/demo-app/public_html/script/config/config.php。在您喜欢的文本编辑器中打开该文件并更改该文件中的以下详细信息。
$config["script_url"] = "https://my-demo-app"; /************************ database ************************/ //Set the host name to connect for database $config["hostname"] = "localhost"; //Set the database name $config["database"] = "demo_app_db"; //Set the username for database access $config["username"] = "demo_app"; //Set the pwd for the database user $config["password"] = "demo_app"; //Set the database type to be used $config["dbtype"] = "mysql"
如您所见,细节是不言自明的。$config["script_url"]设置为您用于访问您的站点的 URL 。
保存数据库详细信息后,您就可以使用 PDO CRUD 工具了。在我们的示例中,我们将创建两个保存员工和部门数据的 MySQL 表。
employees : 保存员工信息
部门:保存部门信息
打开您的数据库管理工具并运行以下命令来创建我们上面刚刚讨论过的表。我使用 phpMyAdmin 来处理 MySQL 数据库后端。
首先,让我们创建部门表。
CREATE TABLE `department` ( `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, `department_name` varchar(255) NOT NULL DEFAULT '' ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
接下来,我们将创建员工表。
CREATE TABLE `employee` ( `id` int(12) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, `dept_id` int(11) UNSIGNED NOT NULL, `first_name` varchar(255) NOT NULL DEFAULT '', `last_name` varchar(255) NOT NULL DEFAULT '', `email` varchar(255) NOT NULL DEFAULT '', `phone` varchar(255) NOT NULL DEFAULT '' ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
如您所见,我们使用dept_id了employee表中的列,该列保存了department表中存储的相应部门的id。
一旦您在数据库中创建了表,我们就可以使用 PDO CRUD 工具构建一个 CRUD 应用程序界面了!
如何设置基本 CRUD
在本节中,我们将了解如何使用 PDO CRUD 工具通过编写几行代码来设置基本的 CRUD 接口。
部门表
我们将从部门表开始。
让我们使用以下内容创建 department.php 。如果您的文档根目录是/web/demo-app/public_html/ ,请在/web/demo-app/public_html/department.php创建department.php文件 。回想一下,我们已经将脚本目录复制到 /web/demo-app/public_html/script。
<?phprequire_once "script/pdocrud.php"; $pdocrud = new PDOCrud(); echo $pdocrud->dbTable("department")->render();
现在,如果您将浏览器指向department.php文件,您应该会看到如下内容:
呸!只需两行代码,您就有了一个现成的 CRUD UI,它允许您在模型上执行所有必要的创建、读取、更新和删除操作。更不用说默认列表视图本身包含很多功能,包括:
单击右侧的添加按钮,它将打开表单以添加部门记录。
让我们使用Add按钮添加一些记录,看看它的外观。
如您所见,这是一个非常轻巧且整洁的界面。几乎不费吹灰之力,我们为部门模型构建了一个 CRUD!接下来,我们将看到如何对员工表执行相同的操作。
员工表
在本节中,我们将看到如何为员工表构建 CRUD。让我们使用以下内容创建 employee.php 。
<?php require_once "script/pdocrud.php"; $pdocrud = new PDOCrud(); echo $pdocrud->dbTable("employee")->render();
这与上次的代码几乎相同;我们只需要更改表的名称。如果您单击“添加”按钮,它还会为您带来一个不错的表单,允许您添加员工记录。
您可能已经发现了一个问题:Dept id字段是一个文本字段,但最好是包含部门名称的下拉列表。让我们看看如何实现这一点。
<?php require_once "script/pdocrud.php"; $pdocrud = new PDOCrud(); // get departments $data = $pdocrud->getPdomodelObj()->select("department"); $options = array(); foreach($data as $record) { $options[$record['id']] = $record['department_name']; } // change the type of the dept_id field from textfield to select dropdown $pdocrud->fieldTypes("dept_id", "select"); $pdocrud->fieldDataBinding("dept_id", $options, "", "","array"); echo $pdocrud->dbTable("employee")->render();
在这段代码中,我们通过 PDO CRUD 访问了部门表,以便我们可以将部门名称与部门 ID 关联起来。然后,我们更新了部门 id 字段的绑定选项,使其呈现为下拉 ( select) 列表。
现在,单击“添加”按钮查看它的外观!您应该会看到Dept Id字段现在已转换为下拉列表!
让我们添加一些员工记录,看看员工列表的外观:
看起来不错!但是这里还有一个小问题:您可以看到 Dept id列显示了部门的 ID,如果显示实际的部门名称会很好。让我们看看如何实现这一目标!
让我们修改 employee.php的代码,内容如下。
<?php require_once "script/pdocrud.php"; $pdocrud = new PDOCrud(); // change the type of the dept_id field from textfield to select dropdown $data = $pdocrud->getPDOModelObj()->select("department"); $options = array(); foreach($data as $record) { $options[$record['id']] = $record['department_name']; } $pdocrud->fieldTypes("dept_id", "select"); $pdocrud->fieldDataBinding("dept_id", $options, "", "","array"); $pdocrud->crudTableCol(array("first_name","last_name", "department_name", "email","phone")); $pdocrud->joinTable("department", "employee.dept_id = department.id", "INNER JOIN"); echo $pdocrud->dbTable("employee")->render();
在这里,我们在employee 表和department 表之间创建了一个连接$pdocrud->joinTable,然后告诉PDO CRUD 只呈现员工姓名、部门名称和联系信息$pdocrud->crudTableCol。
随着这一变化,员工列表应如下所示:
如您所见,PDO CRUD 脚本非常灵活,并允许您使用所有可能的选项来自定义您的 UI。
到目前为止,我们已经讨论了如何设置一个基本的 CRUD 接口。我们将在下一节中看到更多可用于增强和自定义 CRUD UI 的选项。
自定义选项
在本节中,我们将看到 PDO CRUD 工具提供的一些自定义选项。当然,不可能浏览所有选项,因为 PDO CRUD 工具提供的功能远远超出我们在一篇文章中所能涵盖的范围,但我将尝试强调几个重要的选项。
内联编辑
内联编辑是最重要的功能之一,允许您在列表页面本身上快速编辑记录。让我们看看如何为部门列表页面启用它。
让我们修改department.php脚本,如以下代码段所示。
<?php require_once "script/pdocrud.php"; $pdocrud = new PDOCrud(); $pdocrud->setSettings("inlineEditbtn", true); echo $pdocrud->dbTable("department")->render();
如您所见,我们刚刚启用了该inlineEditbtn设置,并且内联编辑功能马上就在那里!
这是一个非常方便的功能,可让您即时编辑记录!
过滤器
您可能已经注意到,部门列表页面已经提供了一个自由文本搜索来过滤记录。但是,您可能需要添加自己的自定义过滤器来改进搜索功能。这正是Filters选项所提供的,因为它允许您构建自定义过滤器!
我们将使用employee.php来实现此功能,因为它是完美的演示用例。在员工列表页面上,我们显示了每个员工记录的部门名称,所以让我们构建一个部门过滤器,允许您按部门名称过滤记录。
继续修改您的employee.php,如以下代码段所示。
<?php require_once "script/pdocrud.php"; $pdocrud = new PDOCrud(); $data = $pdocrud->getPDOModelObj()->select("department"); $options = array(); foreach($data as $record) { $options[$record['id']] = $record['department_name']; } $pdocrud->fieldTypes("dept_id", "select");//change state to select dropdown $pdocrud->fieldDataBinding("dept_id", $options, "", "","array");//add data using array in select dropdown $pdocrud->crudTableCol(array("first_name","last_name", "department_name", "email","phone")); $pdocrud->joinTable("department", "employee.dept_id = department.id", "INNER JOIN"); $pdocrud->addFilter("department_filter", "Department", "dept_id", "dropdown"); $pdocrud->setFilterSource("department_filter", $options, "", "", "array"); echo $pdocrud->dbTable("employee")->render();
我们刚刚添加了两行,调用 addFilterand setFilterSource,员工列表如下所示:
这不是很酷吗?只需两行代码,您就添加了自定义过滤器!
图片上传
如果您希望在表单中设置文件上传,这是一项必备功能。只需一行代码,您就可以将常规字段转换为文件上传字段,如以下代码段所示。
我假设profile_image您的员工表中有一个字段,并且您已准备好将其转换为文件上传字段!
<?php require_once "script/pdocrud.php"; $pdocrud = new PDOCrud(); $pdocrud->fieldTypes("profile_image", "image"); echo $pdocrud->dbTable("employee")->render();
而已!用户现在可以将图像上传到该 profile_image字段。
验证码
如今,如果您想从垃圾邮件中拯救您的网站,CAPTCHA 验证是一项必不可少的功能。PDO CRUD 工具已经提供了几个可供选择的选项。
它提供了两个选项:CAPTCHA 和 reCAPTCHA。如果您选择 CAPTCHA 选项,它会显示一个数学难题供用户解决。另一方面,如果您选择 reCAPTCHA 选项,它会呈现一个著名的“我不是机器人”谜题!
如果要添加简单的 CAPTCHA 拼图,则需要在渲染 CRUD 之前添加以下行。
$pdocrud->formAddCaptcha("captcha");
另一方面,如果您更喜欢 reCAPTCHA,您可以使用以下代码段来实现相同的目的。
$pdocrud->recaptcha("your-site-key","site-secret");
您只需将and 参数替换为来自 Google 的有效凭据。your-site-keysite-secret
到目前为止,我们已经讨论了增强应用程序功能的选项。接下来,我们将了解如何改变皮肤,从而改变应用程序的外观和感觉。
皮肤
如果您不喜欢默认皮肤,您有几个选项可供选择。PDO CRUD 工具提供深色、白皙、绿色和高级皮肤作为其他选项可供选择。
例如,以下清单基于绿色主题。
看起来不错,不是吗?
纯引导
虽然默认皮肤已经支持响应式布局,但 PDO CRUD 工具也支持 Bootstrap 库集成!
如果您希望使用 Bootstrap 库构建布局,则需要使用以下代码段。
<?php require_once "script/pdocrud.php"; $pdocrud = new PDOCrud(false, "pure", "pure"); echo $pdocrud->dbTable("department")->render();
这就是它的样子:
- 部门表
- 员工表
- 内联编辑
- 过滤器
- 图片上传
- 验证码
- 纯引导