- •Донецкий национальный университет
- •Пояснительная записка
- •Задание
- •Аннотация
- •Введние
- •1 Анализ предметной области
- •Состояние вопроса
- •1.2 Моделирование существующих бизнес-процессов
- •1.3 Актуальность и цель работы
- •2 Техническое задание
- •2.1 Описание области применения и исходных данных приложения
- •2.2 Требования к пользовательским интерфейсам
- •2.3 Требования к аппаратным и программным интерфейсам
- •2.4 Требования к пользователям продукта
- •2.5 Функции продукта
- •2.6 Ограничения
- •3 Обоснование выбора инструментальных средств
- •3.2 Север баз данных mysql
- •3.3 Язык программирования серверных скриптов php
- •4 Реализация web-приложения Федерации хоккея
- •4.1 Концептуальное проектирование бд
- •4.2 Логическое проектирование бд
- •4.3 Создание и декомпозиция универсальных отношений
- •4.4 Физическое проектирование бд
- •5 Проектирование структуры web-приложения
- •6 Описание программного продукта
- •6.1 Входные и выходные данные
- •6.2 Описание алгоритма работы и sql-запросов скриптов web-приложения
- •7 Тестирование программного продукта
- •7.1 Системные и программные требования
- •Описание установки программных средств
- •Установка web-сервера Apache 2.4
- •Установка php 7
- •Установка MySql 5.6
- •7.3 Описание контрольных примеров
- •Заключение
- •Список использованных источников
- •Приложение а Экранные формы
- •Приложение б Фрагменты листинга
6.1 Входные и выходные данные
Входные данные программы хранятся в четырех таблицах:
Komandi – содержит информацию о командах Федерации;
Sostav_komand – хранит информацию о составах команд и личную информацию игроков;
Coaches – содержит личную информацию тренеров Федерации;
Championship – содержит информацию о чемпионате Федерации, со списком команд-участниц чемпионата и их очками, а также списком не задействованных в чемпионате команд;
Результатом работы является web-приложение Федерации хоккея.
6.2 Описание алгоритма работы и sql-запросов скриптов web-приложения
В начале каждого php-скрипта приложения подключается файл my.dat, содержащий параметры подключения к серверу базы данных, и осуществляющий подключение и выбор базы данных.
Скрипт igroki.php в самом начале получает значение переменной param, переданной ему по методу GET или POST.
if($_SERVER['REQUEST_METHOD']=='GET')
{$action = $_GET['param'];}
if($_SERVER['REQUEST_METHOD']=='POST')
{$action = $_POST['param'];}
Значение переменной определяет действия, которые будут выполняться скриптом.
Если значение param равно prosmotr_all, то скриптом принимается переменная kod, и с помощью SQL-запроса выбираются из таблицы игроков в БД все записи и отображаются на странице сайта в виде таблицы сведения всех хоккеистов команд, сотрудничающих с Федерацией:
$s="select * from $table_sostav_komand order by kod_komandi desc";
Если значение param равно igroki_add, то отображается страница c формой для ввода информации и выпадающим списком названий команд, и по нажатию на кнопку добавления, передается с формы и принимается скриптом скрытый параметр add_v_bazu и параметры записи для добавления:
$fio = $_POST['ФИО'];
$god = $_POST['Год_рождения'];
$kod_cluba= $_POST['kod'];
с помощью SQL-запроса производится вставка (добавление) записи о новом игроке в таблицу составов команд БД приложения:
$s="insert into $table_sostav_komand values(0,'$kod_komandi','$fio','$god')";
после чего происходит переадресация на страницу состава команды, в которую был добавлен игрок:
$URL="igroki.php?param=prosmotr_all&kod=".$kod_komandi;
header ("Location: $URL");
Если значение param равно igroki_edit, то получаем значение переменной kod, которая определяет код игрока:
if($_SERVER['REQUEST_METHOD']=='GET') {$kod = $_GET['kod'];}
Формируем выпадающий список формы, заполняя его ФИО игроков:
print "<br> <select name=\"kod\" onChange=\"window.location='sostav_komand.php?param=igroki_edit&kod='+this.value;\">";
print "<option value='0'> Все игроки федерации </option>";
$s="select Kod_igroka, FIO_igroka from $table_sostav_komand";
$q=mysqli_query($my_connect,$s) or die ("Ошибка обращения к таблице составов команд!");
While ($row=mysqli_fetch_row($q)) {
if ($row[0]==$kod) print "<option selected value='$row[0]'>$row[1]</option>";
else print "<option value='$row[0]'>$row[1]</option>";
и когда из списка выбран определенный игрок, то при помощи SQL-запроса отображается страница с формой, где в соответствующих полях содержатся данные указанного игрока, которые подлежат изменению:
if ($kod!=0) {
$s="select * from $table_sostav_komand where kod_komandi='$kod'";
$q=mysqli_query($my_connect,$s) or die ("Ошибка обращения к таблице составов команд!");
$row=mysqli_fetch_row($q);
По нажатию на кнопку редактирования с формы передается и принимается скриптом скрытый параметр igrok_edit_v_bazu, также из формы получаются значения других переменных:
$kod = $_POST['kod'];
$kod_k = $_POST['kod_komandi'];
$fio = $_POST['ФИО_игрока'];
$god = $_POST['Год_рождения'];
при помощи SQL-запроса осуществляется изменение записи указанного игрока в таблице составов команд в БД:
$s="update $table_sostav_komand set Kod_komandi='$kod_k', FIO_igroka='$fio', God_rojdeniya='$god' where Kod_igroka='$kod'";
и происходит переадресация на страницу просмотра сведений обо всех игроках выбранной команды:
$URL="igroki.php?param=prosmotr_all&kod=".$kod_k;
header ("Location: $URL");
Если значение param равно igroki_delete, то отображается страница с формой, где напротив каждой фамилии игрока стоит элемент checkbox для отметки удаления информации, к строке имени которого добавляем код игрока:
if ($kod==0) {$s="select * from $table_sostav_komand order by kod_komandi desc"; }
else {$s="select * from $table_sostav_komand where kod_komandi=$kod"; }
$q=mysqli_query($my_connect,$s) or die ("Ошибка выбора из таблицы составов команд!");
// Выводим записи в виде таблицы
While ($row=mysqli_fetch_row($q)) {
print "<tr>";
$check='check'.$row[0];
print "<td> <input type='checkbox' name=$check id='check'> </td>";
print "<td> $row[1]</td>";
print "<td> $row[2] </td>";
print "<td> $row[3]</td>";
print "</tr>";}
Если значение переменной param равно delete, то получаем в цикле все переменные и их значения из формы, находим среди них отмеченные элементы checkbox, выделяем из имени элемента код игрока, добавляем его в массив кодов удаления $delete_kod. Если на форме есть хотя бы один отмеченный checkbox, то переменной $f присваиваем значение 1. Далее в цикле выполняем sql-запрос по логическому удалению записей в таблице составов команд столько раз, сколько элементов занесено в массив $delete_kod:
if ($f==1) {
for($i=0;$i<count($delete_kod);$i++){
mysqli_query($my_connect,"delete FROM $table_sostav_komand where Kod_igroka='$delete_kod[$i]'") or die ("Ошибка логического удаления записи из таблицы составов команд!"); }
Физически удаляем записи из таблицы составов команд:
mysqli_query($my_connect,"OPTIMIZE TABLE $table_sostav_komand") or die("Ошибка физического удаления записи из таблицы составов команд!");
Переадресуем пользователя на страницу со списком игроков той команды, к которой относился удаленный игрок:
$URL="igroki.php?param=prosmotr_all&kod=".$kodk;
header ("Location: $URL");
Алгоритм работы и действия скриптов coaches.php, komandi.php и championship.php аналогичны описанным выше скриптам.
