Введение
CRUD — акроним, обозначающий четыре базовые функции, используемые при работе с базами данных: создание (create), чтение (read), модификация (update), удаление (delete).
В SQL этим функциям, операциям соответствуют операторы Insert (создание записей), Select (чтение записей), Update (редактирование записей), Delete (удаление записей).
PHP (рекурсивный акроним словосочетания PHP: Hypertext Preprocessor) - это распространённый язык программирования общего назначения с открытым исходным кодом. PHP специально сконструирован для веб-разработок и его код Основная задача PHP — это «оживление» HTML страниц.
Обычные HTML-страницы статичны. Статичность (или неизменность) означает, что после того, как страницу создали и загрузили на сайт, при каждом обращении к этой странице браузер покажет её любому пользователю в неизменном виде.
SQL или Structured Query Language (язык структурированных запросов) — язык программирования, предназначенный для управления данными в СУБД. Все современные СУБД поддерживают SQL.
На языке SQL выражаются все действия, которые можно провести с данными: от записи и чтения данных, до администрирования самого сервера СУБД. Для повседневной работы совсем не обязательно знать весь этот язык; достаточно ознакомиться лишь с основными понятиями синтаксиса и ключевыми словами. Кроме того, SQL очень простой язык по своей структуре, поэтому его освоение не составит большого труда.
Главный инструмент оптимизации и обслуживания базы данных — вот, для чего нужен SQL, хотя он и не ограничен этими целями. Возможности обработки охватывают команды определения представлений, указания прав доступа, схем отношений (в том числе, их удаления и изменения), взаимодействие с другими языками программирования, проверку целостности, задание начала и завершения транзакций.
MAMP — это бесплатная локальная серверная среда, которую можно установить в macOS и Windows всего за несколько щелчков мышью. Вы даже можете легко протестировать свои проекты на мобильных устройствах. Неважно какой веб-сервер Apache или Nginx используется в дополнение к MySQL в качестве сервера баз данных, или PHP, Python, Perl и Ruby.
Основная часть
Откроем MAMP на компьютере. Интерфейс программы представлен на рис. 1.
Рисунок 1 – интерфейс ПО MAMP
Открываем в браузере localhost/phpMyAdmin, выбираем раздел SQL и вводим код, написанный ниже. После его выполнения у нас создастся база данных:
CREATE DATABASE students; - созданиеБД.
Далее создаем таблицу баз практик студентов:
CREATE TABLE `bases` (
`id` int(11) NOT NULL,
`name` varchar(60) DEFAULT NULL COMMENT 'Название предприятия',
`studentsCount` int(10) DEFAULT NULL COMMENT 'Количество студентов',
`city` varchar(60) DEFAULT NULL COMMENT 'Город',
`directorName` varchar(60) DEFAULT NULL COMMENT 'ФИО руководителя',
`contractNumber` int(10) DEFAULT NULL COMMENT 'Номер договора',
`phone` varchar(11) DEFAULT NULL COMMENT 'Телефон',
`endDate` varchar(10) DEFAULT NULL COMMENT 'Дата окончания'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Мы создали базу данных «Базы практик студентов», с ней в дальнейшем будем производить CRUD операции.
Заполняем таблицу исходными данными. Пример SQL кода для вставления строки в таблицу:
INSERT INTO `bases` (`id`, `name`, `studentsCount`, `city`, `directorName`, `contractNumber`, `phone`, `endDate`) VALUES
(1, 'ООО КЗ «Ростсельмаш', 23, 'Волгодонск', 'Аксёнов Александр Максимович', '1111', 8988129823, '01.01.2021');
В итоге получаем таблицу с некоторыми данными по базам практик:
Рисунок 2 – Таблица: `bases`
Реализация интерфейса.
Интерфейс должен предоставлять пользователю возможность выполнять функции создания, поиска, удаления и редактирования баз практик. Вся внутренняя логика программы и интерфейс будут написаны на языке PHP и HTML.
Рисунок 3 – интерфейс web-приложения
Реализация программного кода.
Осуществляем подключение к базе данных из php кода. Для этого создаем константы в которые поместим логин от бд, пароль от бд, и адрес сервера с названием таблицы:
$servername = "localhost"; // Адрес сервера
$username = "root"; // Имя пользователя
$password = "root"; // Пароль
$BDname = "students_practice"; // Название БД
// Подключение к БД
$mysqli = new mysqli($servername, $username, $password, $BDname);
// Проверка на ошибку
if ($mysqli->connect_error) {
printf("Соединение не удалось: %s\n", $mysqli->connect_error);
exit();
}
Реализация CRUD операций.
Реализуем операцию create (создание). В соответствующую форму заполняем все имеющиеся поля и отправляем SQL запрос. Если какое то поле будет пустым в него автоматически запишется 0, дабы избежать каких либо ошибок при записи:
if (isset($_POST['add'])) {
$name = $_POST['name'] ?? '0';
$studentsCount = intval($_POST['studentsCount']) ?? 0;
$city = $_POST['city'] ?? '0';
$directorName = $_POST['directorName'] ?? '0';
$contractNumber = intval($_POST['contractNumber']) ?? 0;
$phone = $_POST['phone'] ?? '0';
$endDate = $_POST['endDate'] ?? '0';
$sql = "INSERT INTO `bases` (`id`,`name`, `studentsCount`, `city`, `directorName`, `contractNumber`, `phone`, `endDate`) VALUES ('$lastId', '$name', '$studentsCount', '$city', '$directorName', '$contractNumber', '$phone', '$endDate')";
$mysqli->query($sql);
header("Location: /students/index.php");
}
Тестируем операцию:
Рисунок 4 – добавление базы
Рисунок 5 – вывод добавленной базы
Далее напишем код для операции read (чтение из базы). Если поле input было пусто, либо если пользователь хочет найти базу по определенному названию, то проверяем значение поля, и в php коде выполняем sql запрос в базу данных с условием:
$bases = "SELECT * FROM `bases`";
if (isset($_POST['sorting'])) {
$baseName = $_POST['baseName'] ?? '0';
if ($baseName) {
$bases = "SELECT * FROM `bases` WHERE `name` = '$baseName'";
}
}
$sql = $bases;
$result = $mysqli->query($sql);
for ($base = array(); $row = $result->fetch_assoc(); $base[] = $row);function bordfell($film)
Так-же напишем функцию, которая будет выводить на экран найденные базы при помощи языка разметки HTML:
function showBases($result)
{
// Проверка на то, что строк больше нуля
if ($result->num_rows > 0) {
// Цикл для вывода данных
while ($row = $result->fetch_assoc()) {
// Вывод данных
echo "<div style='text-align:center;font-size:13px;'>Название предприятия : " . $row['name'] . "<br>
ID: " . $row['id'] . "<br>
Количество студентов: " . $row['studentsCount'] . "<br>
Город: " . $row['city'] . "<br>
ФИО руководителя: " . $row['directorName'] . "<br>
Номер договора: " . $row['contractNumber'] . "<br>
Телефон: " . $row['phone'] . "<br>
Дата окончания: " . $row['endDate'] . "
<a href='?change=" . $row['id'] . "' >Изменить</a>
<hr></div>
";
}
// Если данных нет
} else {
echo "<div style='text-align: center;'>Базы с таким именем не найдены</div>";
}
}
Тестируем операцию:
Рисунок 6 – показать все
Рисунок 7 – успешный поиск
Пишем код для update – обновление и delete – удаление данных. Для начала пользователь вводит в форму поиска название нужной ему базы, либо нажимает на кнопку «Показать все» и выводит все, что имеется в базе данных.
if (isset($_POST['all'])) {
$bases = "SELECT * FROM `bases`";
$result = $mysqli->query($bases);
showBases($result);
}
Далее возле нужной базы жмет на кнопку «Изменить» и все поля автоматически заполняются данными выбранной базы. После этого пользователь может либо удалить выбранную базу, либо отредактировать нужные ему поля и нажать на кнопку «Редактировать». В обоих случаях будет отправляться sql запрос в базу данных. Все операции производятся по id базы практики, это поле отвечает за уникальность данных, во избежание ошибок.
if (isset($_GET['change'])) {
$id = $_GET['change'] ?? '';
$ind = intval($id) - 1;
$name = $base[$ind]['name'] ?? '';
$studentsCount = $base[$ind]['studentsCount'] ?? '';
$city = $base[$ind]['city'] ?? '';
$directorName = $base[$ind]['directorName'] ?? '';
$contractNumber = $base[$ind]['contractNumber'] ?? '';
$phone = $base[$ind]['phone'] ?? '';
$endDate = $base[$ind]['endDate'] ?? '';
$id_base = $base[$ind]['id'] ?? '';
}
if (isset($_POST['Edit'])) {
$name = $_POST['name'] ?? '0';
$studentsCount = intval($_POST['studentsCount']) ?? 0;
$city = $_POST['city'] ?? '0';
$directorName = $_POST['directorName'] ?? '0';
$contractNumber = intval($_POST['contractNumber']) ?? 0;
$phone = $_POST['phone'] ?? '0';
$endDate = $_POST['endDate'] ?? '0';
$sql = "UPDATE `bases` SET `name` = '$name', `studentsCount` = '$studentsCount', `city` = '$city', `directorName` = '$directorName', `contractNumber` = '$contractNumber', `phone` = '$phone', `endDate` = '$endDate' WHERE `bases`.`id` = '$id'";
$mysqli->query($sql);
header("Location: /students/index.php");
}
if (isset($_POST['Delete'])) {
$sql = "DELETE FROM `bases` WHERE `bases`.`id` = '$id'";
$mysqli->query($sql);
header("Location: /students/index.php");
}
Тестируем функционал операций по изменению строк в SQL таблице.
Ищем нужную нам базу, выбираем её, заполняем поля нужными нам данными и жмем кнопку «Изменить».
Рисунок 8 – редактирование строки из БД
Рисунок 9 – редактирование базы
ЗАКЛЮЧЕНИЕ
При выполнении данной работы, мы реализовали сайт при помощи языка PHP, развернули локальный сервер и подключились к локальной базе данных MySQL, а так-же разработали удобный веб-интерфейс, с помощью которого можно производить CRUD операции.
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
1. Материал из Википедии — свободной энциклопедии. Высокоуровневый язык программирования // Википедия. 2020. URL: https://ru.wikipedia.org/wiki/PHP (дата обращения: 23.11.2021).
2. Новая большая книга CSS. Книга, Дэвид Сойер Мак-Фарленд и Макфарланд Дэвид 2018. 720с (дата обращения: 24.11.2021).
3. Колисниченко Денис PHP и MySQL. Разработка Web-приложений; БХВ-Петербург - М., 2017. - 560 c. (дата обращения: 24.11.2021).
4. Харрис Энди PHP/MySQL для начинающих; КУДИЦ-Образ - М., 2016. - 384 c (дата обращения: 27.11.2021).
5. Дунаев В.В. HTML, скрипты и стили; БХВ-Петербург - М., 2017. - 527 c. (дата обращения: 25.11.2021).
6. Локхарт Джош Современный PHP. Новые возможности и передовой опыт; ДМК Пресс - М., 2016. - 304 c. (дата обращения: 26.11.2021).
7. Гизберт Дамашке PHP и MySQL; НТ Пресс - М., 2016. - 569 c. (дата обращения: 05.11.2021).
8. Никсон Робин Создаем динамические веб-сайты с помощью PHP, MySQL, JavaScript и CSS; Питер - М., 2017. - 204 c. (дата обращения: 27.11.2021).
9. . Кузнецов Максим Самоучитель PHP 5/6; БХВ-Петербург - М., 2017. - 972 c. (дата обращения: 28.11.2021).