ПЗ (1190832), страница 5
Текст из файла (страница 5)
document.getElementById('registrblock').style.display='block';
document.getElementById('background').style.display='block';
}
function closeRegistr()
{
document.getElementById('registrblock').style.display='none';
document.getElementById('background').style.display='none';
}
При записи на приём и при регистрации после нажатия на кнопку всплывает сообщение об успешной или неуспешной записи или регистрации. Всплывающее сообщение разработано с помощью JavaScript (листинг 3.6).
Листинг 3.6 – Всплывающее сообщение
success: function(response){
var messageResp = new Array('Спасибо, мы свяжемся с вами в ближайшее время!','Сообщение не отправлено Ошибка базы данных','Нельзя отправлять пустые сообщения');
var resultStat = messageResp[Number(response)];
if(response == 0){
$("#surname").val("");
$("#name").val("");
$("#patronymic").val("");
$("#doctor").val("");
$("#datee").val("");
$("#timee").val("");
$("#tel").val("");
}
$("#resp").text(resultStat).show().delay(1500).fadeOut(1000);
}});
Таким образом, продемонстрированы примеры использования таких технологий для разработки клиентской части Web-приложения как HTML5, CSS3, JavaScript.
-
Разработка серверной части Web-приложения
Для разработки серверной части использованы технологии PHP 5.6, MySQL 5.6. Архитектура разрабатываемого Web-приложения является трехуровневой. Трёхуровневая архитектура предполагает наличие следующих компонентов приложения:
– клиентская часть;
– серверная часть (PHP);
– СУБД (MySQL).
Рисунок 3.7 – Общий принцип работы Web-приложения
Для регистрации пользователей, записи на приём, составления медицинских карточек и добавления врачей после загрузки формы пользователь заполняет все поля формы, затем происходит проверка введённых данных и после этого все данные представляются в виде параметров POST-запросов. POST-запрос посылается на сервер, который обрабатывает запрос, извлекает POST и передаёт управление и данные PHP-скрипту. Далее происходит извлечение данных из массива $_POST и на основе этих данных составляется SQL-запрос к базе данных, который заносит данные в базу данных, а пользователь получает сообщение об успешном или неуспешном выполнении. В листинге 3.7 представлен SQL-запрос для внесения записи пациента в базу данных.
Листинг 3.7 – Внесение данных о пациенте в БД
if(isset($_POST['surname']) && isset($_POST['name']) && isset($_POST['patronymic'])&&isset($_POST['doctor'])&&isset($_POST['date'])&&isset($_POST['time'])&&isset($_POST['tel']))
{
$surname = strip_tags($_POST["surname"]);
$name = strip_tags($_POST["name"]);
$patronymic=strip_tags($_POST["patronymic"]);
$doctor=strip_tags($_POST["doctor"]);
$date=strip_tags($_POST["date"]);
$time=strip_tags($_POST["time"]);
$tel=strip_tags($_POST["tel"]);
if(!$msql)
{
echo 'Ошибка в подключении к MySQL '. mysql_error();
}
else
{
mysql_select_db("post", $msql);
if (!mysql_query("INSERT INTO AH2.patients (Фамилия, Имя, Отчество, Врач, Дата, Время, Телефон) VALUES('$surname', '$name', '$patronymic', '$doctor', '$date', '$time','$tel')"))
}
После того, как сотрудники клиники или администратор заполнили медицинскую карточку и нажали на кнопку «Скачать» открывается окно с текстовым документом, который можно скачать. В листинге 3.8 представлена часть кода для создания текстового документа.
Листинг 3.8 – Создание текстового документа
for($code_length = 3, $newcode = ''; strlen($newcode) < $code_length; $newcode .= chr(!rand(0, 2) ? rand(48, 57) : (!rand(0, 1) ? rand(65, 90) : rand(97, 122))));
$today = date('d-M-Y');
$g="<br>";
$file=fopen('medical-card/'.$newcode.'_'.'Medical Card'. '_'.$today.'.doc','w+');
fputs($file,'Номер карточки: '.$newcode. "<br>" );
fputs($file,'Фамилия Имя Отчеств:' .$_POST['surname']. " " .$_POST['name']. " " .$_POST['patronymic']."\n" );
fputs($file,'Пол:' .$_POST['paul']."\n" );
fputs($file,'Дата рождения:' .$_POST['date']."\n" );
fputs($file,'Адрес:' .$_POST['address']."\n" );
fputs($file,'Место работы:' .$_POST["work"]."\n" );
fputs($file,'Род занятий:' .$_POST["profession"]."\n" );
fputs($file,'Результат лечения:'.$_POST["therapy2"]. "\n" );
fputs($file,'К оплате в кассу:'.$_POST["payment"]. "\n" );
fclose($file);
readfile('medical-card/'.$newcode.'_'.'Medical Card'. '_'.$today.'.doc','w+');
Для авторизации пользователей после загрузки формы пользователь вводит логин и пароль. Далее данные представляются в виде параметров POST-запросов, которые посылаются на сервер, занимающийся обработкой запроса, извлечением POST и передачей управления и данных PHP-скрипту. После чего происходит проверка введённого логина и пароля с теми данными, что есть в базе данных. Если в базе данных есть такой логин и пароль, то в качестве ответа пользователь переходит в личный кабинет, в противном случае выводится сообщение об ошибке. В листинге 3.9 представлена часть кода авторизации.
Листинг 3.9 – Авторизация пользователей
$login = $_POST['login'];
$password = $_POST['password'];
$result = mysql_query("SELECT * FROM AH2.registratsiya WHERE Логин = '$login' AND Пароль = '$password'") or die(mysql_error());
$user1 = mysql_fetch_assoc($result);
mysql_free_result($result);
if ($user1)
{
$_SESSION['login'] = stripslashes(htmlspecialchars($_POST['login']));
$result1 = mysql_query("SELECT * FROM AH2.registratsiya WHERE Логин = '$login' AND Пароль = '$password' AND Пользователь= 'Доктор'");
$doctor1 = mysql_fetch_assoc($result1);
mysql_free_result($result1);
if ( $doctor1 )
{ ?>
<script>document.location.href='http://kur/the-entry-for-today.php'</script>;
<?php }
После того, как пользователь перешёл в личный кабинет создается сессия с его логином. По нажатию на кнопку «Выход» происходит удаление сессии (листинг 3.10).
Листинг 3.10 – Удаление сессии
session_start();
if($_POST['submit'])
{
$_SESSION = array();
session_destroy();
$_SESSION = array();
header ('Location: index.php');
exit();
}
Представление данных в подразделах «Редактировать информацию о врачах», «Запись на прием», «Запись пациентов» осуществляется с помощью SQL-запроса. Данные SQL-запросы позволяют выводить информацию о записи на приём на сегодня, на завтра, на неделю, на месяц и за всё время. В SQL-запросе указаны поля, которые необходимо выводить при различных условиях. Пример SQL-запроса представлен в листинге 3.11.
Листинг 3.11 – SQL-запрос на вывод данных о записи пациентов на месяц
$query="select id, Фамилия, Имя, Отчество, Врач, Дата, Время, Телефон FROM patients where Дата BETWEEN current_date and current_date + interval 30 day order by Дата, Время";
Редактирование записей происходит согласно выбранной фамилии. Сотрудники клиники или администратор выбирает из списка фамилий необходимую фамилию, выбирает поле, которые хочет изменить и вводит новые данные в выбранное поле. По нажатию на кнопку «Изменить», запрос посылается на сервер. Где сервер обрабатывает полученные POST-запросы, извлекает POST и передает данные PHP-скрипту. После чего, выполняется запрос на изменение данных в базе данных и пользователь в качестве ответа получает новые данные из базы данных у себя на странице. Часть кода для редактирования данных представлена в листинге 3.12.
Листинг 3.12 – Редактирование данных
Изменить в <?php echo '<select name="where"><option > выберите фамилию';
$i=0;
while($data = mysql_fetch_array($query)){
$i++;
echo'<option value="'.$i.'">'.$data['Фамилия'];}
echo '</select>';
$query4 = mysql_query('select Фамилия, Имя, Отчество, Врач, Дата, Время, Телефон from AH2.patients');
echo '<form method= "POST">'; ?>
поле
<?php echo '<select name="col1"><option>' ?> выберите поле для изменения
<?php for($j=0;$j<mysql_num_fields($query4);$j++){
echo'<option value="'.$j.'">'.mysql_field_name($query4, $j);}
echo '</select>'; ?>
на <input type= "text" name= "update" class="input" placeholder="введите текст изменения">
<input type= "submit" value= "Изменить" class="submit_edit">
Удаление записей происходит согласно выбранным данным из таблицы. Сначала зарегистрированный пользователь, сотрудник или администратор отмечает необходимые данные для удаления и нажимает на кнопку «Удалить». После чего, запрос посылается на сервер. Сервер считывает POST-запросы согласно выбранным checkbox, далее происходит считывание данных из массива $_POST и на основе этих данных составляется SQL-запрос к базе данных, который удаляет выбранные строки. В качестве ответа пользователь получает измененную базу данных у себя на странице. Часть кода для удаления данных из базы данных представлена в листинге 3.13.
Листинг 3.13 – Удаление данных
if($_POST["dfile"])
{
$mass=$_POST["dfile"];
$i=0;
while($mass[$i])
{
$link=mysql_connect("localhost", "root","") or die("Could not connect");
mysql_select_db("AH2") or die("Could not select database");
$s1="delete from patients where id=$mass[$i]";
$result1=mysql_query($s1) or die("Query failed");
$i++;
}
Header("Location: the-entry-for-today.php?i=2");
}
Таким образом, продемонстрированы примеры использования таких технологий для разработки серверной части Web-приложения как PHP 5.6 и MySQL 5.6.
4 Внедрение Web -приложения
-
Публикация Web-приложения
Для публикации Web-приложения предприятием выбран домен –
семейнаястоматология27.рф. Публикация осуществлена на хостинге – beget. Beget входит в ТОП-10 лучший хостинг-провайдеров на территории России. Сервера находятся между западом и востоком России. Так как 100% посетителей Web-приложения являются жителями Дальнего Востока, то это благоприятно влияет на скорость загрузки ресурса, за счёт меньшего расстояния до физического хранилища данных.
Результат отображения Web-приложения на различных устройствах представлен на рисунках 4.1 – 4.3.
Рисунок 4.1 – Пример отображения
Web-приложения на ноутбуке
Рисунок 4.2 – Пример отображения
Web-приложения на планшете
Рисунок 4.3 – Пример отображения
Web-приложения на телефоне
Разработанное Web-приложение доступно по следующей ссылке:
http:// семейнаястоматология27.рф
-
Продвижение Web-приложения
Для продвижения Web-приложения проведён анализ посещаемости социальных сетей [21]. Согласно проведённому анализу (рисунок 4.4), решено разместить рекламу в таких социальных сетях, как ВКонтакте, Одноклассники и Instagram.