Главная | Обратная связь
МегаЛекции

Технология осуществления запросов





 

Если пользователю необходимо получить какую-либо информацию, касающуюся данной предметной области, то он может воспользоваться запросами, существующими в базе данных. Все SQL запросы прописаны в исходном коде программы. Обрабатывая, какую либо форму, выполняется тот запрос, который принадлежит данной форме. Если это форма добавления нового тренера, то обрабатывается запрос добавления в базу данных записи с информацией обо всех необходимых атрибутах таблицы. Если хотя бы один из атрибутов не будет передан, то есть, какое либо из полей формы не будет заполнено или будет не соответствовать требованиям, запрос не будет выполнен, и появится сообщение об ошибке. В противном случае информация со всех полей формы передастся в поле таблицы. Таким образом, выполняются все остальные запросы, принадлежащие различным формам, таким как форма редактирования, удаления и вывода информации. Если пользователь попытается осуществить свой запрос, ему необходимо будет использовать исходный код системы и в нем сформировать все необходимы формы для данного запроса. Примеры некоторых запросов используемых в системе приведены ниже.

Запрос на выборку посетителей из определенной группы.

SELECT name, surname, patronymic_name FROM student WHERE id_group = ‘ВМ-06–01’;

Запрос, подсчитывающий количество человек в группе.

SELECT COUNT (id_group) FROM student WHERE id_group = ‘ВМ-06–01’;

Запрос, выводящий таблицу учета свободного времени у тренеров.

SELECT id_weekday, id_time FROM time_off_weekday WHERE id_timeweekday NOT IN (SELECT id_timeweekday FROM raspisanie WHERE id_teacher = 1;

 

Технология получения отчетов

 

Есть несколько способов получения отчетов. На панели главного меню расположены две формы, одна из них служит для получения отчетов методом выбора нужного элемента из поля со списком. Таких поля три, каждое поле соответствует определенному подразделению, такому как помещения, группы и тренеры. При выборе элемента из списка выводится отчет (о расписании, учете свободного времени и информация о выбранном элементе) в виде таблицы, но кроме отчета предоставлены еще несколько форм для работы с отчетов, благодаря этим формам можно производить изменения данных прямо в отчете и смотреть, как формируется отчет на основе этих изменений. Это удобно и позволяет нам не тратить время на переходы от формы вывода информации (отчета) к форме редактирования, все происходит в одном месте. Кроме всего этого существует форма позволяющая вывести всю информацию об определенном подразделении и др.



Все отчеты представлены в табличном виде, созданном при помощи html тэгов, например для создания таблицы расписание, необходимо написать следующее.

<table border=1 height=18><tr>

<td height=12><p align=center><tt>Время</tt></p></td>

<td height=12><p align=center><tt>Помещение</tt></p></td>

<td height=12><p align=center><tt>Тренер</tt></p></td>

</tr>

</table>

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

 


Тестирование программы

Тестовые наборы

 

Перед тем как поместить данные из заполненной формы в БД, необходимо провести обработку данных (фильтрацию). В данной системе предусмотрена проверка вводимых данных. Запись в базу будет производиться в том случае, когда будет выполнен ряд условий, таких как:

– проверка на заполнение всех полей формы;

– проверка да длину строки;

– проверка на соответствие типов;

– проверка на запрещенные символы.

Если введенные данные соответствуют всем требованиях, перед отправкой их обрабатывает функция htmlspecialchars, которая служит для защиты БД MySQL.

Если данные не проходят всех уровней фильтрации, выводятся различные ошибки, в зависимости от определенного условия. Например, не выполнили заполнение полей формы, выводится ошибка (Рисунок 5).

 

Рисунок 5 – Ошибка

 

В таблицы 2, 3 и 4 не вносятся новые записи, они служат для вывода и обработки существующих в них записей. Тестовую информацию в них вносить не обязательно.


Таблица 2 – День проведения занятия

Код дня День недели
1 Понедельник
2 Вторник

 

Таблица 3 – Время проведения занятий

Код времени Время
1 08: 30 – 10: 00
2 10: 10 – 11: 40

 

Таблица (Таблица 4) хранит все возможные комбинации для всех дней и всего времени. Тестовые наборы с некорректными данными также не обязательны, так как в системе нет возможности форматирования данных в данной таблице.

 

Таблица 4 – Время дня

Код дня и времени Код дня Код времени
1 1 1
2 1 2
3 2 1
4 2 2

 

При добавлении нового помещения (Рисунок 6) значение поля этаж (floor) выбирается при помощи поля со списком, сюда ввод ложных данных невозможен. При добавлении не числовых значений в поле название (name), полю присваивается нуль. Если длина вводимых символов превышает заданной, лишние символы обрезаются.

 


Рисунок 6 – Помещения

 

В поля name, surname, patronymic_name, sports (Рисунок 7) разрешается вводить только символы русского и английского алфавита, все остальные блокируются. В поля address и age можно вводить только символы двух алфавитов и цифры от нуля до девяти. В поле telephone разрешается вводить только цифры. При неверном внесении информации, данные не будут записываться.

 

Рисунок 7 – Тренеры


При добавлении группы отдельно проверяется каждое поле записи. В поле name можно вводить только символы русского и английского алфавита и цифры. В поле max_kol только цифры от нуля до девяти (Рисунок 8).

 

Рисунок 8 – Группы

 

Код группы записывается через вспомогательный запрос, который осуществляется при выборе необходимого названия группы из поля со списком в форме добавления новой группы, некорректных значений не может быть записано, так как полного ввода значений пользователю не предоставляется. В поле Ф.И.О. (Таблица 5) можно вводить только символы русского и английского алфавита, при введении слишком длинных значений значение поля будет обрезаться.

 

Таблица 5 – Посетители (студенты)

Код посетителя Код группы Ф.И.О.
1 1 Чебан Олег Сергеевич
1 2 Разуков Сергей Владимирович

 

Таблица 6 – Расписание

Код расписания Код дня и времени Код помещения Код тренера Код группы
1 1 2 1 1
2 4 1 1 2
3 2 1 2 1
4 3 2 2 2
5 1 1 1 1
6 2 2 2 2

 

Из таблицы 6 можно узнать расписание для каждого из подразделений. Например, возьмем первую запись, код дня и время равняется единице, а единица исходя из таблицы №4 это понедельник 08: 30 – 10: 00, код помещения равняется двойке, из таблицы изображенной на рисунке №6 видно, что название помещения 102, код тренера равняется единице, из таблицы изображенной на рисунке №7 единица указывает на тренера Иванов Андрей Петрович, а группа по коду из таблицы изображенной на рисунке №8 является ВМ-06–01.

Таким образом, данные в таблицу расписание напрямую не вводятся, а заполняются на основе кодов имеющихся подразделений (Таблица 7). Это очень удобно и безопасно.

Исходя из всего этого при помощи SQL запросов можно вывести следующее расписание.

 

Таблица 7 – расписание для аудитории с название 102

День недели Время Тренер Группа
Понедельник 08: 30 – 10: 00 Иванов Андрей Петрович ВМ-06–01
Понедельник 10: 10 – 11: 40 Петров Сергей Максимович ИТ-06–01
Вторник 08: 30 – 10: 00 Петров Сергей Максимович ИТ-06–01

 

Пример запросов c небольшим кодом php для получения данного расписания;

Выбираем необходимые записи для помещения с кодом 1, в данном случае это помещение 102.

$sql = «SELECT id_timeweekday, id_teacher, id_group FROM raspisanie WHERE id_auditorium = 1»;

$result = mysql_query($sql);

Записей с кодом помещения буден много, поэтому потребуется цикл.

While ($line = mysql_fetch_array($result))

{

Выбираем тренера по его уникальному коду.

$sql = «SELECT name FROM teacher WHERE id_teacher = «.$line [‘id_teacher’];

Выбираем группу по ее уникальному коду.

$sql = «SELECT name FROM group_off_student WHERE id_group = «.$line [‘id_group’];

Узнаем код комбинации дня недели и времени

$sql1 = «SELECT id_weekday, id_time FROM time_off_weekday WHERE id_timeweekday = «.$line [‘id_timeweekday’];

$result2 = mysql_query($sql1);

$line2 = mysql_fetch_array($result2)

Выбираем день недели по его уникальному коду.

$sql = «SELECT weeday FROM weekday WHERE id_weekday = «.$line2 [‘id_weekday’];

Выбираем время по его уникальному коду.

$sql = «SELECT time FROM time WHERE id_time = «.$line2 [‘id_time’];

Таким образом, посредством несложных запросов выводится расписание для каждого подразделения.

 

Результаты тестирования

 

В результате при введении неверных данных выводиться ошибка о несоответствии данных и новая запись не добавляется. Если одно из полей или полей со списком формы не заполнено, выводится сообщение об ошибке и данные не добавляются. Если в поля формы вводятся запретные символы, выводится сообщение об ошибке.

При добавлении новой записи в расписание, данные сверяются с существующими и если результат подтверждается, то есть запись на конкретный день недели и время существует, новая запись в расписание не добавляется.

Система успешно справляется с малыми и средними объемами данных. Тестирование программы при работе с данными большого объема не проводилось.

Таким образом, неверные данные, введенные в базу, не способны повлиять на работоспособность системы, так как они не будут добавлены.

 

 





Рекомендуемые страницы:

Воспользуйтесь поиском по сайту:
©2015- 2021 megalektsii.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.