В этой статье мы рассмотрим разработку простого набора CRUD операций на PHP, предназначенного для работы с базой данных MySQL. Для создания кода CRUD будет использовано расширение MySQLi, для оформления – стили Bootstrap. Приложение будет выполнять все стандартные операции CRUD – создание, чтение, модификацию и удаление записей.
Что такое CRUD: это аббревиатура, обозначающая четыре главные операции, используемые в приложениях для управления базами данных – создание (create), чтение (read), модификацию (update) и удаление (delete) записей.
Итак, приступим к разработке CRUD на PHP и MySQLi с нуля.
Шаг 1: Создание таблицы базы данных
Приведенная ниже SQL команда создает таблицу с данными пользователей в базе MySQL.
CREATE TABLE users ( id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, first_name VARCHAR(100) NOT NULL, last_name VARCHAR(100) NOT NULL, email VARCHAR(255) NOT NULL, phone_number VARCHAR(15) NOT NULL, address VARCHAR(255) NOT NULL );
Шаг 2: Создание файла конфигурации
После создания таблицы мы переходим к настройке подключения к серверу базы данных MySQL. Для этого нужно создать файл config.php и поместить в него приведенный ниже код.
Создание базы данных MySQL Workbench
Это подключение можно вызывать на всех страницах – с помощью PHP функции require_once() .
Шаг 3: Посадочная страница
На посадочной странице данные пользователей будут выводиться в виде таблицы. Мы предусмотрим иконки для операций редактирования, просмотра и удаления данных.
Для создания лендинга мы добавим файл index.php в директорию CRUD. Вставьте в файл данный ниже код.
Dashboard .wrapper
PHP CRUD Tutorial Example with Coding Driver
Users
Add New User 0) < echo «
» . $user[‘id’] . « | » . $user[‘first_name’] . « | » . $user[‘last_name’] . « | » . $user[’email’] . « | » . $user[‘phone_number’] . « | » . $user[‘address’] . « |
«; mysqli_free_result($users); > else< echo «
No records found.
«; > > else < echo «ERROR: Could not able to execute $sql. » . mysqli_error($conn); >// Close connection mysqli_close($conn); ?>
Можно вставить какие-нибудь тестовые данные прямо в таблицу базы данных, изменения отобразятся на странице.
Шаг 4: Страница создания записей
На этом этапе мы разработаем CRUD операцию по созданию записей. Для этого создайте новый файл под названием create.php и поместите в него следующий код:
elseif (!filter_var($firstName, FILTER_VALIDATE_REGEXP, array(«options»=>array(«regexp»=>»/^[a-zA-Zs]+$/»)))) < $first_name_error = «First Name is invalid.»; >else < $firstName = $firstName; >$lastName = trim($_POST[«last_name»]); if (empty($lastName)) < $last_name_error = «Last Name is required.»; >elseif (!filter_var($firstName, FILTER_VALIDATE_REGEXP, array(«options»=>array(«regexp»=>»/^[a-zA-Zs]+$/»)))) < $last_name_error = «Last Name is invalid.»; >else < $lastName = $lastName; >$email = trim($_POST[«email»]); if (empty($email)) < $email_error = «Email is required.»; >elseif (!filter_var($firstName, FILTER_VALIDATE_REGEXP, array(«options»=>array(«regexp»=>»/^[a-zA-Zs]+$/»)))) < $email_error = «Please enter a valid email.»; >else < $email = $email; >$phoneNumber = trim($_POST[«phone_number»]); if(empty($phoneNumber)) < $phone_number_error = «Phone Number is required.»; >else < $phoneNumber = $phoneNumber; >$address = trim($_POST[«address»]); if(empty($address)) < $address_error = «Address is required.»; >else < $address = $address; >if (empty($first_name_error_err) empty($last_name_error) empty($email_error) empty($phone_number_error) empty($address_error) ) < $sql = «INSERT INTO `users` (`first_name`, `last_name`, `email`, `phone_number`, `address`) VALUES (‘$firstName’, ‘$lastName’, ‘$email’, ‘$phoneNumber’, ‘$address’)»; if (mysqli_query($conn, $sql)) < header(«location: index.php»); >else < echo «Something went wrong. Please try again later.»; >> mysqli_close($conn); > ?> Create User .wrapper
Create User
First Name Last Name Email Phone Number Address Cancel
Файл create.php будет отображать HTML форму для ввода и валидации данных.
Как подключиться к MySQL на Python | MySQL создание таблицы, добавление, удаление, вывод данных
Шаг 5: Страница модификации записей
По аналогии со страницей создания записей мы разработаем функцию и страницу модификации данных. Создайте файл с именем edit.php и вставьте в него приведенный ниже код, который обеспечивает редактирование записей, уже существующих в базе данных.
elseif (!filter_var($firstName, FILTER_VALIDATE_REGEXP, array(«options»=>array(«regexp»=>»/^[a-zA-Zs]+$/»)))) < $first_name_error = «First Name is invalid.»; >else < $firstName = $firstName; >$lastName = trim($_POST[«last_name»]); if (empty($lastName)) < $last_name_error = «Last Name is required.»; >elseif (!filter_var($firstName, FILTER_VALIDATE_REGEXP, array(«options»=>array(«regexp»=>»/^[a-zA-Zs]+$/»)))) < $last_name_error = «Last Name is invalid.»; >else < $lastName = $lastName; >$email = trim($_POST[«email»]); if (empty($email)) < $email_error = «Email is required.»; >elseif (!filter_var($firstName, FILTER_VALIDATE_REGEXP, array(«options»=>array(«regexp»=>»/^[a-zA-Zs]+$/»)))) < $email_error = «Please enter a valid email.»; >else < $email = $email; >$phoneNumber = trim($_POST[«phone_number»]); if (empty($phoneNumber)) < $phone_number_error = «Phone Number is required.»; >else < $phoneNumber = $phoneNumber; >$address = trim($_POST[«address»]); if (empty($address)) < $address_error = «Address is required.»; >else < $address = $address; >if (empty($first_name_error_err) empty($last_name_error) empty($email_error) empty($phone_number_error) empty($address_error) ) < $sql = «UPDATE `users` SET `first_name`= ‘$firstName’, `last_name`= ‘$lastName’, `email`= ‘$email’, `phone_number`= ‘$phoneNumber’, `address`= ‘$address’ WHERE «; if (mysqli_query($conn, $sql)) < header(«location: index.php»); >else < echo «Something went wrong. Please try again later.»; >> mysqli_close($conn); > else < if (isset($_GET[«id»]) !empty(trim($_GET[«id»]))) < $id = trim($_GET[«id»]); $query = mysqli_query($conn, «SELECT * FROM users WHERE «); if ($user = mysqli_fetch_assoc($query)) < $firstName = $user[«first_name»]; $lastName = $user[«last_name»]; $email = $user[«email»]; $phoneNumber = $user[«phone_number»]; $address = $user[«address»]; >else < echo «Something went wrong.
Please try again later.»; header(«location: edit.php»); exit(); >mysqli_close($conn); > else < echo «Something went wrong. Please try again later.»; header(«location: edit.php»); exit(); >> ?> Update Record .wrapper
Update User
«/> First Name «> Last Name «> Email «> Phone Number «> Address Cancel
Шаг 6: Чтение записей
Для вывода на экран данных пользователей мы разработаем функцию чтения записей. Создайте файл read.php , сохраните в нем данный ниже код. Файл будет запрашивать данные пользователей по ID из таблицы базы данных.
View Record .wrapper else < header(«location: read.php»); exit(); >mysqli_close($conn); > else < header(«location: read.php»); exit(); >?>
User View
First Name Last Name Email Phone Number Address
Back
Шаг 7: Удаление записей
На заключительном этапе мы разработаем функцию удаления записей. Создайте файл delete.php , вставьте в него приведенный ниже код, который отвечает за удаление существующих в базе записей по ID пользователя.
else < echo «Something went wrong. Please try again later.»; >mysqli_close($conn); > else < if (empty(trim($_GET[«id»]))) < echo «Something went wrong. Please try again later.»; header(«location: index.php»); exit(); >> ?> View Record .wrapper
Delete Record
«/>
Are you sure you want to delete this record?
No
Наконец, наш набор CRUD операций для работы с записями в базе данных MySQL готов. Если у вас есть вопросы или замечания – ждем их в комментариях.
Наталья Кайда автор-переводчик статьи « PHP MySQL CRUD Operation Step by Step for Beginners »
Пожалуйста, опубликуйте ваши мнения по текущей теме материала. За комментарии, подписки, дизлайки, отклики, лайки огромное вам спасибо!
Источник: www.internet-technologies.ru
Создаем свою CRUD API на Express и MySQL: часть первая
Express один из самых популярных веб-фреймворков, который поддерживает роутинг, миддлвейрс и систему шаблонов. Делать бэкенд на Node.js без Express в 2020 году — довольно странное занятие, ведь Express де-факто — каркас для создания веб-приложения на Node.js.
Сегодня мы попробуем создать несложное CRUD API используя базу данных MySQL. Опытный в Node.js читатель спросит, а где же MongoDB, с которым Node.js обычно применятся в паре но, скажу сразу, это статья больше для PHP разработчиков, которые хотят немного потрогать Node.js, и чтобы смягчить переход в новую экосистему мы воспользуемся MySQL. API мы будем создавать для несложного Todo приложения, на тот случай, если кто-то захочет к своей todo (и даже неважно, написанной с помощью React или нет), присоединить немного бэка и поиграть с ним.
«Архитектура» и суть нашего приложения
В нашем приложении можно будет создавать, получать, обновлять и удалять Todo. В общем, у нас будет минимальный набор функций CRUD (create read update delete).
В конце мы совместим приложение c приложением на React и все протестируем.
Для начала приведу структуру файлов приложения:
Дальше я приведу таблицу действий и методов, которые есть в нашем приложении:
Создание своего Node.js приложения
Переходим в вашу любимую директорию, запускаем терминал и создаем ваше приложение. Кстати, из заголовка, наверное, понятно, что Node.js у вас уже должна быть установлена. Если вы еще этого не сделали, то этого просто не может быть скачайте по ссылке отсюда.
$ mkdir CRUD_API $ cd CRUD_API
Дальше необходимо инициализировать наше приложение с помощью npm init. Т.к. приложение у нас скорее тестовое и обучающее, я воспользуюсь командной, которая заполнит все данные по дефолту, чтобы не тратить время на мелкие детали:
npm init -y
Если что, потом руками в package.json вы сможете поменять данные на те, которые вам нужны: репозиторий github, тэги, автора, и т.д.
Потом нам нужно поставить все необходимые для работы приложения пакеты:
npm i express mysql body-parser —save
Если вы собираетесь отправлять потом вашу разработку на github, вам стоит создать скрытый файл .gitignore , чтобы не таскать с собой тяжелейшие node_modules и не позориться. Пишем:
touch .gitignore code .gitignore
Там вписываем node_modules , в дальнейшем в этот файл вы сможете вписать наименования папок и файлов, которые хотите увидеть потом на удаленном сервере.
Базовая настройка Express
В корневой папке проекта создаем файл server.js :
const express = require(«express»); const bodyParser = require(«body-parser»); const app = express(); //делаем наш парсинг в формате json app.use(bodyParser.json()); // парсит запросы по типу: application/x-www-form-urlencoded app.use(bodyParser.urlencoded(< extended: true >)); // простой response — request app.get(«/», (req, res) => < res.json(< message: «Это стартовая страница нашего приложения» >); >); // установить порт, и слушать запросы app.listen(3001, () => < console.log(«Сервер запущен на 3001 порту»); >);
Теперь мы можем запустить сервер с помощью:
node server.js
Express нам нужен для создания своего api, а пакет body-parser помогает нам парсить request и создавать req.body , который пригодится для работы роутинга.
Сейчас наш сервер умеет следующее:
- Создаем Express app, который отдает body-parser миддлевеир используя app.use()
- у нас есть простой get, просто для тестирования работы приложения
- Слушаем 3001 порт на все входящие изменения
Создаем свою таблицу данных MySQL
Я очень надеюсь, что у читателя данной статьи нет проблемы с тем, чтобы самостоятельно скачать и установить MySQL и MySQLWorkBranch. Дальше вы самостоятельно создаете scheme(БД) с названием, которое вам больше нравится (в моем случае TODO), и потом выбрать молнию-запрос и скопировать/набрать следующую команду:
CREATE TABLE IF NOT EXISTS `todo` ( id int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT, text varchar(255) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
В нашей базе данных будет все по минимуму: только id и сам текст дел. Однако добавить ещё колоночку, в которой может описана, к примеру, срочность вашего дела, надеюсь, проблем не вызовет.
Конфигурация HOST: «localhost», USER: «pavel», PASSWORD: «», DB: «TODO» >;
После этого создаем папку для описания наших моделей app/mode, в которой мы потом создадим модель:
const mysql = require(«mysql»); const dbConfig = require(«../config/db.config.js»); // создаем соединение с нашей базой данных const connection = mysql.createConnection(< host: dbConfig.HOST, user: dbConfig.USER, password: dbConfig.PASSWORD, database: dbConfig.DB >); // открываем наше соединение с базой данных connection.connect(err => < if (err) throw error; console.log(«успешно соединено с базой данных»); >); module.exports = connection; //экспортируем наше соединение
Создаем Модель
В папке model , мы создаем файл, который называется deal.model.js . Если у вас возникает вопрос, что же такое вообще модель, вам стоит прочитать статью вроде этой и ознакомиться с паттерном проектирования MVC. Я собираюсь создать конструктор для Deal объекта, и использовать connection для следующих CRUD функций:
- создание нового дела
- нахождение дела по id
- получение всех дел
- возможность обновлять наше дело по id
- Удаление одного дела по id
- полное удаление всех дел
// конструктор нашего дела const Deal = function(deal) < this.text = deal.text; >; //у нашей модели будут функции, с помощью которых можно осуществлять все операции CRUD, которые были озвучены в начале статьи: Deal.create = (newDeal, result) => < sql.query(«INSERT INTO TODO SET ?», newDeal, (err, res) => < //операция вставки из SQL if (err) < console.log(«error: «, err); result(err, null); //немного бедная обработка ошибок, но на первое время хватит return; >console.log(«Дело сделано», < id: res.insertId, . newDeal >); result(null, < id: res.insertId, . newDeal >); >); >;
Остальную часть кода я размещу в spoiler, потому, что не вижу смысла приводить его весь, ведь там по сути повторяется паттерн кода, меняются только sql — команды и аргументы:
остальная часть кода
Deal.findById = (dealId, result) => <
sql.query(`SELECT * FROM TODO WHERE (err, res) => <
if (err) <
console.log(«error: », err);
result(err, null);
return;
>
if (res.length) console.log(«найдено дело: », res[0]);
result(null, res[0]);
return;
>
Deal.getAll = result => sql.query(«SELECT * FROM TODO», (err, res) => if (err) console.log(«error: », err);
result(null, err);
return;
>
console.log(«deals: », res);
result(null, res);
>);
>;
Deal.updateById = (id, deal, result) => sql.query(
«UPDATE TODO SET text =? WHERE > [deal.text, id],
(err, res) => if (err) console.log(«error: », err);
result(null, err);
return;
>
Deal.remove = (id, result) => sql.query(«DELETE FROM TODO WHERE id, (err, res) => if (err) console.log(«error: », err);
result(null, err);
return;
>
if (res.affectedRows == 0) // если дело не удалось получить по id
result(< kind: «not_found» >, null);
return;
>
console.log(«Удален пользователь с », id);
result(null, res);
>);
>;
Deal.removeAll = result => sql.query(«DELETE FROM TODO», (err, res) => if (err) console.log(«error: », err);
result(null, err);
return;
>
На этом пока все. На подходе следующая часть этой статьи, в которой мы закончим написание бэка и примемся за его тестирование. И по традиции, несколько полезных ссылок:
- Особенности работы и внутреннего устройства express.js
- Основные команды MySQL
- Немного о цикле HTTP request/response
- Немного о стрелочных функциях, если вы совсем новичок
Источник: habr.com
Php и MySQL – рабочее приложение с использованием нескольких таблиц
Недавно получила письмо, где человек просит помочь разобраться в создании приложения на php и MySQL с использованием нескольких таблиц базы, которые между собой взаимосвязаны. Суть такова (насколько мне удалось понять из письма): врач ведет учет пациентов и хочет хранить их данные в таблице базы, однако, записи о приемах он тоже хочет хранить в другой таблице. Нужно, чтобы была возможность добавлять новых пациентов, новые записи об их приемах и, конечно же, иметь возможность эти данные просматривать в удобной форме. Сегодня попробуем реализовать такое приложение.
Для начала нужно определиться, что мы получим на выходе. А на выходе у нас должно быть приложение со следующим интерфейсом: главная страница, где пользователь может выбрать одно из действий: либо добавить нового пациента, либо выбрать имеющегося и добавить запись об его приеме, либо посмотреть все данные любого пациента включая личные данные и все записи его приемов.
Я решила организовать это в виде трех блоков на главной странице: блок с формой для занесения нового пациента; блок, в котором выводится список всех имеющихся пациентов, под которым есть форма для занесения новой записи (сначала выберем конкретного пациента из списка, потом заполняем форму с информацией о приеме и нажмём кнопку); блок, где мы можем выбрать пациента и посмотреть всю его историю, а также личные данные.
Можно организовать это и на разных страницах, но я, для компактности и дабы не создавать целую кучу файлов, решила сделать на одной. В этом уроке я показываю принцип, а оформление – это уже личные предпочтения каждого.
Итак, с желаемым итоговым результатом все более или менее понятно. Теперь давайте заглянем в базу данных и организуем наши таблицы. Я для этого примера создала новую базу данных, которую назвала «ychet».
1. В новой базе данных мы создадим две таблицы: первая будет хранить личные данные каждого пациента, такие как имя, фамилия, телефон, адрес (не знаю, что там еще обычно нужно для врача, но это лишь пример – а Вы создавайте те поля, которые нужны Вам); во второй таблице будут храниться данные о приемах для всех пациентов (потом мы будем писать код, чтобы из всего многообразия данных приемов извлекать именно нужные).
Итак, создаем первую таблицу. Я назвала ее «my_pacient» и снабдила пятью полями: id, name, last_name, adress, telefon. Для поля «id» нужно выбрать тип «int», а также присвоить «AUTO_INCREMENT» и первичный ключ (primary key). Для остальных полей в качестве типа указала «varchar».
Структуру таблицы Вы можете видеть на скриншоте ниже:
Давайте сразу создадим и вторую таблицу, в которой будут храниться все данные о приемах. Я назвала эту таблицу «visits» и создала в ней 5 полей: id, num, date, comments, next_date. То есть здесь мы будем хранить дату приема, комментарии врача и дату следующего приема.
Поле «num» (должно иметь тип «int») будет соответствовать идентификатору пациента (значению поля «id» из первой таблицы – этот идентификатор будет уникальным для каждого пациента). Полю «id» нашей второй таблицы я также присвоила «AUTO_INCREMENT» и первичный ключ (primary key) и оно также должно иметь тип данных «int». Полям «date» и «next_date» дадим тип данных «datetime», а полю «comments» дадим тип данных «text».
Структуру этой таблицы со всеми полями и их типами данных Вы можете увидеть на скриншоте ниже:
2. Теперь давайте займемся интерфейсом нашего приложения. Для начала создадим файл (я назвала его «index.php»).
Как я уже говорила, на нашей главной странице будет 3 блока: для внесения нового пациента в список, для занесения новой записи для какого-либо пациента и для выбора пациента из списка и просмотра всей его истории. Для этого мы организуем три тега «form», для каждого из которых я сразу же пропишу в атрибуте «action» имя соответствующего файла-обработчика, которые мы создадим чуть позже. Также мы пропишем подключение файла таблицы стилей, которую создадим в следующем шаге.
Итак, вот код для нашего файла «index.php»:
Главный Интерфейс
Выберите действие
Имя:
Фамилия:
Адрес:
Телефон:
Дата приема:
Коментарии Врача:
Дата следующего приема:
3. Сейчас создадим файл таблицы стилей, подключение к которому мы уже прописали в файле «index.php». Я создам файл с именем «style.css», сохраню его в том же каталоге, что и файл «index.php» и пропишу самые основные стили, чтобы наша страница выглядела более или менее симпатично.
body h1 form < width:300px; text-align:left; border:1px solid #999; float:left; padding:5px; margin-left:5px;background-color:#EBEBEB>input
Теперь можно посмотреть нашу страницу в браузере. Если Вы тестируете Ваши php-коды с локального компьютера, то используйте для этого локальный сервер «Денвер» (установить его можно по этой ссылке ). Итак, наберите в адресной строке браузера «localhost/имя папки, в которой хранятся Ваши файлы/index.php». Вы должны увидеть вот такой результат:
4. Давайте займемся первым блоком, тем, который позволяет добавить нового пациента в базу данных. Ему мы прописали файл-обработчик с именем «add_pacient.php».
Давайте создадим этот файл и сохраним его в том же каталоге, что и файл «index.php» (если Вы захотите создать отдельную папку и хранить там файлы-обработчики, то не забудьте исправить пути к файлам в атрибуте «action» наших форм).
Сейчас мы уже можем приступить к написанию кода для этого обработчика. Первое, что нам нужно сделать – это соединиться с базой данных. Код соединения с базой мы будем использовать во всех файлах-обработчиках, и поэтому, чтобы не писать один и тот же код в каждом файле, я предлагаю создать отдельный файл соединения с базой, который мы потом просто будем подключать одной строчкой везде, где нужно.
Так что давайте на время оставим файл «add_pacient.php» и создадим файл с именем «connect.php» (я сохраняю его в том же каталоге, что и остальные файлы).
Я установила на мою базу данных «ychet» привилегии (имя пользователя и пароль), которые и буду использовать при подключении (если Вы не знаете, как установить привилегии, то можете почитать об этом в этой статье).
Итак, код соединения с базой данных следующий (Вы, конечно же, подставляйте свое имя пользователя и пароль, а также свое имя базы данных, если оно отличается от моего):
Ошибка подключения к базе данных » .mysql_error().»
«); mysql_select_db(«ychet») or die («
Ошибка выбора базы данных » .mysql_error(). «
«); ?>
Теперь можете закрыть этот файл и вернуться к файлу «add_pacient.php».
5. Здесь задача файла-обработчика: соединиться с базой данных, получить значения, введенные в форму из файла «index.php», создать запрос на их вставку в таблицу базы «my_pacient» и собственно эту вставку выполнить.
Также попутно мы проверим прошла ли вставка успешно, и если что-то пошло не так, то выведем сообщение об ошибке. Также вставим в конце кода ссылку для переходя обратно к основному интерфейсу.
В первой строке мы подключаем файл «connect.php», который реализует соединение с базой.
В следующий 4-х строчках мы получаем значения, введенные в поля нашей первой формы и заносим их в переменные.
Далее мы формируем запрос и исполняем его посредствам функции «mysql_query».
В конце выводим ссылку, при помощи которой можно будет перейти обратно к главному интерфейсу.
Теперь мы можем попробовать добавить новых пациентов и убедиться, что вставка проходит удачно. Я предлагаю на этом этапе добавить нескольких пациентов при помощи формы.
Я добавила троих пациентов, и если сейчас я зайду в базу данных в таблицу «my_pacient», то увижу следующее:
6. Теперь давайте займемся второй формой – эта форма для добавления записи какому-то конкретному пациенту. Как вы, наверное, заметили, сама форма для добавления записи у нас есть, но нам еще нужно знать – для какого конкретно пациента мы эту запись добавляем. Для этого мы можем вывести всех имеющихся пациентов перед формой в виде выбора из радиокнопок. Сначала мы будем отмечать какому пациенту мы хотим добавить запись о приеме, потом заполнять форму и отправлять ее файлу-обработчику.
Я предлагаю создать отдельный файл, который будет отвечать за вывод всех имеющихся пациентов на экран (точнее их имени и фамилии) в виде радиокнопок. А потом мы просто подключим этом файл к «index.php» в нужном месте.
Давайте создадим файл с именем «all_pacient.php» и пропишем в нем код для вывода всех имеющихся пациентов на экран. Вот код этого файла:
%s %s
«,$id,$name,$last_name); > while($row = mysql_fetch_array($result)); ?>
Здесь мы также в начале соединяемся с базой данных посредствам подключения файла «connect.php», далее формируем запрос на выбор всей информации из таблицы «my_pacient», выполняем запрос, разбиваем полученный массив на строки. А далее в цикле получаем нужные переменные и печатаем на экран информацию о каждом пациенте в виде радиокнопок.
Теперь осталось только подключить этот файл в нужном месте файла «index.php». А нужное место у нас находится между открывающим тегом «form» и первым тегом «label». Вот здесь:
Дата приема:
Теперь, если мы перезагрузим нашу страницу с главным интерфейсом, то увидем, что над второй формой вывелся список из имеющихся пациентов.
7. Сейчас можно перейти к файлу-обработчику для этой формы. Давайте создадим файл «addHistory.php», который будет отвечать за вставку записей о приемах в таблицу базы данных «visits».
Здесь нам нужно также: соединиться с базой данных; получить данные из формы второго блока, находящейся в файле «index.php»; создать запрос на добавление этих данных в соответствующие поля таблицы «visits» и организовать ссылку для перехода обратно к главному интерфейсу.
Теперь можете попробовать добавить записи для одного или нескольких пациентов.
Я добавила по несколько записей для каждого пациента и теперь, если я загляну в базу данный в таблицу «visits», то увижу следующую картину.
Как Вы можете заметить поле «num» соответствует идентификатору конкретного пациента, который он имеет в таблице «my_pacient». Именно по этому идентификатору мы и будем определять какие записи соответствуют каждому конкретному пациенту, когда будем реализовывать просмотр истории пациента.
8. Остался последний блок. Этот блок отвечает за просмотр истории пациента. Причем извлекать данные нам нужно будет из обеих таблиц, так как мы хотим видеть и личные данные пациента и историю его болезни.
Пока что у нас в этом блоке имеется только одна кнопка «Посмотреть историю пациента», но нам нужно знать, историю какого конкретного пациента мы хотим вывести на экран. Нужно опять вывести список имеющихся пациентов. Здесь нам поможет уже созданный файл «all_pacient.php». Нам нужно его просто опять подключить, как мы это делали и раньше.
Найдите третий блок с формой в файле «index.php» и подключите блок между открывающим тегом «form» и тегом «input». Вот так:
Теперь если обновим страницу, то можем увидеть список пациентов над кнопкой в третьем блоке нашего интерфейса.
Осталось только реализовать работу файла-обработчика, который будет выдавать нам нужную информацию.
9. Создадим последний в этом проекте php-файл с именем «check_history.php». Здесь нам нужно будет получать информацию сразу из обеих таблиц базы данных. Нам нужно, чтобы выводимая на экран информация соответствовала пациенту, которого мы выбрали в файле «index.php» посредствам радиокнопки.
Вот код нашего файла, который я поясню чуть ниже:
%s %s
Адрес: %s
Телефон: %s
«,$row[‘name’],$row[‘last_name’],$row[‘adress’],$row[‘telefon’]); do< printf(«
Дата визита: | %s |
Комментарий врача: | %s |
Дата следующего визита: | %s |
«, $row1[‘date’],$row1[‘comments’],$row1[‘next_date’]); > while($row1 = mysql_fetch_array($result1)) ?> Вернуться в меню
В первой строке мы соединяемся с базой данный с помощью файла, отвечающего за соединение «connect.php».
Далее мы получаем идентификатор выбранного нами пациента и заносим его в переменную «num».
В строках 3-5 мы создаем запрос по извлечению всей информации из таблицы «my_pacient», где поле «id» равно переменной «$num» (то есть идентификатор выбранного пациента); исполняем запрос и разбиваем полученный массив на строки.
В следующих трех строках мы создаем запрос по извлечению полей с датой, комментарием врача и датой следующего посещения из таблицы «visits», где поле «num» равно переменной «$num» (Вы помните, что это поле хранит идентификатор конкретного пациента, значит все поля «num» с одинаковым значением относятся к одному и тому же пациенту. Таким образом мы можем извлечь историю только одного нужного нам пациента); исполняем запрос и разбиваем массив на строки.
В следующей строке мы печатаем на экран личные данные пациента (информация из таблицы «my_pacient»).
А далее в цикле выводим информацию о его визитах. Она будет выводится до тех пор, пока не выведутся все записи, относящиеся к конкретному пациенту.
Последняя строка кода – это ссылка для возврата в главное меню.
Если сейчас я выберу конкретного пациента и нажму на кнопку, то увижу на экране всю информацию о нем, включая личные данные и историю посещений.
Вот наше приложение и готово! Конечно же его еще можно подшлифовать, но я это оставляю Вам, так как урок в этот раз получился очень большой!
Надеюсь, что основную идею Вы поняли. И на основе этой идею Вы можете создавать приложения для совершенно разных задач.
Я на этом буду с Вами прощаться. Все файлы Вы сможете найти в исходниках к уроку.
Жду Ваших комментариев! Делитесь уроком с друзьями при помощи кнопок социальных сетей. И подписывайтесь на обновление блога, если еще не подписаны.
Успехов, Вам! С Вами была Анна Котельникова.
Источник: website-create.ru