Russian (Pусский) translation by Alexey Pyltsyn (you can also view the original English article)
В этой статье мы рассмотрим PDO CRUD — инструмент для создания форм и управления базами данных. PDO CRUD помогает создавать формы для таблиц базы данных с помощью всего лишь нескольких строк кода, что позволяет быстро и легко поднять приложение, использующее базы данных.
Существует множество расширений для абстракции базы данных и, в частности, для генерации CRUD (создание, чтение, обновление и удаление) для PHP и MySQL. И, конечно же, вы также найдете платные варианты, которые предоставляют готовые к использованию возможности и расширенную поддержку. В случае коммерческих вариантов вы также можете ожидать качественный код, исправления ошибок и новые улучшения.
Сегодня мы собираемся обсудить инструмент PDO CRUD, который можно приобрести на CodeCanyon по очень привлекательной цене. Это полноценный инструмент для построения CRUD, позволяющий создавать приложения, просто предоставляя таблицы базы данных, написав всего несколько строк кода.
Он работает с несколькими базами данных, включая MySQL, Postgres и SQLite. В этой статье мы увидим, как использовать PDO CRUD для построения CRUD-системы с серверной частью базы данных MySQL.
Установка и настройка
В этом разделе мы увидим, как установить и настроить инструмент PDO CRUD после того, как вы приобрели его и скачали из CodeCanyon.
Как только вы купите его, вы сможете скачать 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, которые содержат данные о сотрудниках и отделах.
- сотрудники: содержит сведения о сотруднике
- отдел: содержит информацию об отделе
Откройте инструмент управления вашей базы данных и выполните следующие команды для создания таблиц, которые мы только что обсуждали выше. Я использовал PhpMyAdmin для работы с базой данных MySQL.
Во-первых, давайте создадим таблицу department.
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;
Далее мы создадим таблицу employee.
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, который содержит идентификатор соответствующего отдела, хранящегося в таблице отдела.
После того как вы создали таблицы в вашей базе данных, мы готовы создать интерфейс приложения CRUD, используя инструмент PDO CRUD!
Как настроить простой CRUD
В этом разделе мы увидим, как можно настроить базовый интерфейс CRUD, используя инструмент PDO CRUD, написав всего несколько строк кода.
Таблица отделов
Мы начнем с таблицей отделов.
Давайте создадим department.php со следующим содержимым. Если ваша корневая директория /web/demo-app/public_html/, создайте файл department.php по пути /web/demo-app/public_html/department.php. Напоминаем, что мы уже скопировали директорию скрипта /web/demo-app/public_html/script.
<?php require_once "script/pdocrud.php"; $pdocrud = new PDOCrud(); echo $pdocrud->dbTable("department")->render();
И теперь, если вы обратитесь в своем браузере к файлу department.php, вы увидите что-то вроде этого:



Ну и ну! Всего две строки кода и у вас есть готовый к использованию пользовательский интерфейс CRUD, позволяющий выполнять все необходимые действия, такие как создание, чтение, обновление и удаление на вашей модели. Не говоря уже о том, что само представление списка по умолчанию содержит много возможностей, включая:
- поиск
- встроенную навигацию по страницам
- печать
- экспорт записей в формате CSV, PDF или Excel
- массовая операция удаления
- сортировка по столбцам
Нажмите на кнопку Add на правой стороне, и она откроет форму для добавления записи в таблицу отделов.



Добавим несколько записей, с помощью кнопки Add и посмотрим, как это выглядит.



Как вы можете видеть, это очень легкий и изящный интерфейс. Почти без усилий мы создали CRUD для модели отделов! Далее мы увидим, как сделать то же самое для таблицы сотрудников.
Таблица сотрудников
В этом разделе мы увидим, как создать CRUD для таблицы сотрудников. Давайте создадим employee.php со следующим содержимым.
<?php require_once "script/pdocrud.php"; $pdocrud = new PDOCrud(); echo $pdocrud->dbTable("employee")->render();
Это в значительной степени тот же код, что и в прошлый раз; нам просто нужно изменить имя таблицы. Если вы нажмете на кнопку Add, вы также увидите красивую форму, позволяющую добавлять записи сотрудников.



Возможно, вы заметили одну проблему: поле 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();
В этом коде мы получили доступ к таблице department через PDO CRUD, так что мы можно связать название отдела с идентификатором отдела. Затем мы обновили параметры привязки для поля идентификатора отдела, так что он будет отображаться в виде раскрывающегося списка (select
).
Теперь нажмите на кнопку Add, чтобы увидеть, как она выглядит! Вы должны увидеть, что теперь поле Dept Id превращается в раскрывающийся список!



Добавим несколько записей о сотрудниках и посмотрим, как выглядит список сотрудников:



Это выглядит красиво! Но у нас здесь есть одна небольшая проблема: вы можете видеть, что в столбце Dept 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();
Здесь мы создали соединение между таблицами сотрудников и отделов с помощью $pdocrud->joinTable
, а затем указали PDO CRUD отображать только имя сотрудника, название отдела и контактную информацию, использу строчку кода $pdocrud->crudTableCol
.
И с этим изменением, список сотрудников должен выглядеть следующим образом:



Как вы можете видеть, скрипт PDO CRUD является довольно гибким и позволяет вам все возможные варианты для настройки пользовательского интерфейса.
Пока мы обсуждали как настроить простой интерфейс CRUD. В следующем разделе мы посмотрим на еще несколько вариантов, которые можно использовать для улучшения и настройки пользовательского интерфейса CRUD.
Варианты настройки
В этом разделе мы увидим несколько вариантов настройки, предоставляемые инструментом 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();
Мы только что добавили две строки с вызовами addFilter
и 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, она представит знаменитую головоломку в стиле I’m not a robot!
Если вы хотите добавить простой пазл CAPTCHA, вам нужно добавить следующую строчку перед тем, как отображать CRUD.
$pdocrud->formAddCaptcha("captcha");
С другой стороны если вы предпочитаете ReCAPTCHA, вы можете добиться того же результа, используя следующий фрагмент.
$pdocrud->recaptcha("your-site-key","site-secret");
Вам просто нужно заменить аргументы your-site-key
и site-secret
на действительные учетные данные от Google.
Пока мы обсуждали варианты, которые улучшают функциональность вашего приложения. Далее мы увидим, как можно изменить тему оформления и, таким образом, внешний вид приложения.
Темы оформления
Если вам не нравится тема оформления по умолчанию, у вас есть несколько вариантов на выбор. Инструмент PDO CRUD предоставляет темные, светлые, зеленые и продвинутые темы оформления в качестве доступных опций.
Например, следующий список основан на зеленой теме.



Это выглядит красиво, не такли?
Чистый Bootstrap
Хотя тема оформления по умолчанию уже поддерживает адаптивные макеты, инструмент PDO CRUD также поддерживает интеграцию с библиотекой Bootstrap!
Вам нужно использовать следующий фрагмент, если вы хотите построить макет с помощью библиотеки Bootstrap.
<?php require_once "script/pdocrud.php"; $pdocrud = new PDOCrud(false, "pure", "pure"); echo $pdocrud->dbTable("department")->render();
И вот как это выглядит:



Заключение
Сегодня мы рассмотрели продвинутый построитель форм базы данных PDO CRUD и инструмент управления данными, доступный для покупки на CodeCanyon. По сути, это инструмент для построения интерфейса приложений CRUD. Он предоставляет множество вариантов настройки, охватывающих практически все, что требуется системе CRUD.
Как я уже говорил ранее, действительно трудно охватить все, что предоставляет инструмент PDO CRUD, в одной статье, но, надеюсь, официальная документация должна дать вам более точное представление о его всеобъемлющих возможностях.
Я надеюсь, что вы уверены, что инструмент PDO CRUD достаточно мощный, чтобы удовлетворить ваши требования и позволяет избавиться от рутинной работы, которую вы должны выполнять каждый раз, когда вы хотите настроить CRUD в своем приложении. Несмотря на то, что это платный плагин, я считаю, что у него приемлемая цена, учитывая множество возможностей, которые он предоставляет.
Если у вас есть предложения или замечания, не стесняйтесь высказать свое мнение, я всегда рад поучаствовать в обсуждении.
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Update me weekly