Hi! Could we please enable some services and cookies to improve your experience and our website?

PHPize Online / SQLize Online  /  SQLtest Online

A A A
Login    Share code      Blog   FAQ

Online Sandbox for SQL and PHP: Write, Run, Test, and Share SQL Queries and PHP Code

Copy Format Clear
CREATE TABLE patients ( id INT PRIMARY KEY AUTO_INCREMENT, last_name VARCHAR(20) NOT NULL, first_name VARCHAR(20) NOT NULL, middle_name VARCHAR(20) NOT NULL ); CREATE TABLE specialityDoctors ( id INT PRIMARY KEY AUTO_INCREMENT, speciality_doctor VARCHAR(30) NOT NULL ); CREATE TABLE doctors ( id INT PRIMARY KEY AUTO_INCREMENT, last_name VARCHAR(20) NOT NULL, first_name VARCHAR(20) NOT NULL, middle_name VARCHAR(20) NOT NULL, speciality_doctor_id INT NOT NULL, FOREIGN KEY (speciality_doctor_id) REFERENCES specialityDoctors (id) ); CREATE TABLE timeTags ( id INT PRIMARY KEY AUTO_INCREMENT, doctor_id INT NOT NULL, date_prm DATE NOT NULL, time_tag TIME NOT NULL, isBusy BOOLEAN DEFAULT FALSE, FOREIGN KEY (doctor_id) REFERENCES doctors (id) ); CREATE TABLE wishTable ( id INT PRIMARY KEY AUTO_INCREMENT, speciality_doctor_id INT NOT NULL, patient_id INT NOT NULL, id_time_tag INT DEFAULT NULL, FOREIGN KEY (speciality_doctor_id) REFERENCES doctors (id), FOREIGN KEY (patient_id) REFERENCES patients (id), FOREIGN KEY (id_time_tag) REFERENCES timeTags (id) ); INSERT specialityDoctors (speciality_doctor) VALUES ('Терапевт'), ('Отоларинголог'), ('Невропатолог'), ('Окулист'); INSERT doctors (last_name, first_name, middle_name, speciality_doctor_id) VALUES ('Кукунин', 'Владислав', 'Валерьевич', 1), ('Каменских', 'Елена', 'Федоровна', 2), ('Польская', 'Анна', 'Мартыновна', 1), ('Соколов', 'Даниил', 'Маркович', 2); INSERT patients (last_name, first_name, middle_name) VALUES ('Горемыко', 'Наталья', 'Борисовна'), ('Грац', 'Николай', 'Германович'), ('Акулова', 'Анастасия', 'Петровна'), ('Гололедова', 'Инна', 'Ивановна'); INSERT wishTable (speciality_doctor_id, patient_id) VALUES (2, 1), (2, 2), (3, 1), (1, 4), (1, 2), (4, 1); INSERT timeTags (doctor_id, date_prm, time_tag) VALUES (1, '2023-12-01', '08:00'), (1, '2023-12-01', '10:00'), (1, '2023-12-01', '12:00'), (1, '2023-12-01', '14:00'), (2, '2023-12-01', '08:00'), (2, '2023-12-01', '10:00'); SELECT "doctors" AS title; SELECT * FROM doctors; SELECT "specialityDoctors" AS title; SELECT * FROM specialityDoctors; SELECT "patients" AS title; SELECT * FROM patients; SELECT "timeTags" AS title; SELECT * FROM timeTags; SELECT "wishTable" AS title; SELECT * FROM wishTable; -- Таблица пожеланий пациентов на прием -- по определенной специальности врача SELECT "Пожелания пациентов по специальностям врачей" AS title; SELECT id, ( SELECT speciality_doctor FROM specialityDoctors WHERE id = wishTable.speciality_doctor_id ) AS 'Специальность врача', ( SELECT CONCAT(last_name, ' ', first_name, ' ', middle_name) FROM patients WHERE id = wishTable.patient_id ) AS 'Пациент', ( SELECT id FROM timeTags WHERE id = wishTable.id_time_tag ) AS 'ID записи к врачу' FROM wishTable;

Stuck with a problem? Got Error? Ask AI support!

Copy Clear
Copy Format Clear
<?php /** * Метод обновления информации в базе данных * @param PDO $pdo: экземпляр класса PDO * @param string $query: SQL-запрос * @param array $params: Параметры SQL-запроса. Например {id => 1} * @return void * @throws Exception */ function updateQuery($pdo, $query, $params) { try { $update= $pdo->prepare($query); $update->execute($params); } catch(Exception $e) { throw new Exception("Что-то пошло не так"); } } /** * Метод получения информации из базы данных * @param PDO $pdo: экземпляр класса PDO * @param string $query: SQL-запрос * @param array $params: Параметры SQL-запроса. Например {id => 1} * @return array $dbresult Ассоциативный массив датасета * @throws Exception */ function getRowsQuery($pdo, $query, $params) { $select= $pdo->prepare($query); $select->execute($params); $dbresult = $select->fetchAll(PDO::FETCH_ASSOC); if ($dbresult) { return $dbresult; } else { throw new Exception('Что-то пошло не так'); } } /** * Метод вывод массива из базы данных в консоль * @param array $array: Массив данных * @return void */ function printData($array) { $firstRow = array_keys($array[0]); echo implode(", ", $firstRow) . "\n"; foreach($array as $idRow => $arrRow) { echo "| "; foreach($arrRow as $key => $value) { printf("%-10s| ", $value); } echo "\n"; } echo "\n"; } // Выборка не исполненных желаний пациентов $queryNoTags = "SELECT id, speciality_doctor_id, patient_id FROM `wishTable` WHERE id_time_tag IS NULL;"; try { $patientsNoPrm = getRowsQuery($pdo, $queryNoTags, null); echo "Выборка не исполненных желаний пациентов\n"; print_r($patientsNoPrm); } catch (Exteption $e) { echo $e->getMessage(), "\n"; } //Выборка свободных бирок у врачей с id их специальности $queryDoctorsTags = " SELECT id, doctor_id, time_tag, isBusy, ( SELECT id FROM `specialityDoctors` WHERE id = `timeTags`.doctor_id ) AS 'speciality_id' FROM `timeTags` WHERE isBusy = FALSE;"; try { $timeTags = getRowsQuery($pdo, $queryDoctorsTags, null); echo "Выборка свободных бирок у врачей с id их специальности\n"; printData($timeTags); } catch (Exteption $e) { echo $e->getMessage(), "\n"; } // Подготовка запросов для записи к врачу $wishTableUpdate = "UPDATE `wishTable` SET `id_time_tag` = :id_time_tag WHERE `id` = :id;"; $timeTagsUpdate = "UPDATE `timeTags` SET `isBusy` = :isBusy WHERE `id` = :id;"; // Создание записей к врачу с отправкой данных в бд foreach ($patientsNoPrm as $patientKey => &$patientNeed) { $id = $patientNeed['id']; foreach ($timeTags as $tagKey => &$rowTag) { if (($rowTag['speciality_id'] == $patientNeed['speciality_doctor_id']) && ($rowTag['isBusy'] == False)) { $timeTags[$tagKey]['isBusy'] = True; $idTimeTag = $rowTag['id']; try { $res = updateQuery($pdo, $wishTableUpdate, array( 'id_time_tag' => $idTimeTag, 'id' => $id)); $res = updateQuery($pdo, $timeTagsUpdate, array( 'isBusy' => True, 'id' => $idTimeTag)); } catch (Exteption $e) { echo $e->getMessage(), "\n"; } break; } } } unset($patientNeed, $rowTag); // Проверка выполнения желаний пациентов $queryWishes = "SELECT id, ( SELECT speciality_doctor FROM specialityDoctors WHERE id = wishTable.speciality_doctor_id ) AS 'Специальность врача', ( SELECT CONCAT(last_name, ' ', first_name, ' ', middle_name) FROM patients WHERE id = wishTable.patient_id ) AS 'Пациент', ( SELECT id FROM timeTags WHERE id = wishTable.id_time_tag ) AS 'ID записи к врачу' FROM wishTable;"; try { $patientsWishes= getRowsQuery($pdo, $queryWishes, null); echo "Проверка выполнения желаний пациентов\n"; printData($patientsWishes); } catch (Exteption $e) { echo $e->getMessage(), "\n"; } // Проверка занятости бирок $queryTags = "SELECT * FROM `timeTags`;"; try { $tags= getRowsQuery($pdo, $queryTags, null); echo "Проверка занятости бирок\n"; printData($tags); } catch (Exteption $e) { echo $e->getMessage(), "\n"; }
Copy Clear