и k увеличивается на единицу. Алгоритм процедуры просмотра информации из базы данных приведен в приложении А на рисунке А.2.
Алгоритм удаления событий осуществляется аналогично, разница состоит в том, что проверяется условие, выбрана ли в таблице запись Ak, и если оно верно, то эта запись подлежит удалению. Алгоритм процедуры удаления информации из базы данных приведен в приложении А на рисунке А.3.
Для алгоритма процедуры редактирования выбранного события, так же организован цикл проверки наличия выбранной записи, а затем действия ввода новых значений для полей Ak и их сохранение. Алгоритм процедуры удаления информации из базы данных приведен в приложении А на рисунке А.4.
Алгоритм добавления записи состоит из действий ввода значений полей новой записи и сохранения ее в базе данных. Он приведен в приложении А на рисунке А.5.
В соответствии с представленными алгоритмами была разработана их программная реализация на языках HTML и PHP. Текст программы приведен в приложении Б.
5. Описание схемы базы данных
Для работы приложения было создано две таблицы. Первая содержит строки, каждая из которых соответствует одному событию ежедневника. Для каждого события определены поля: порядковый номер, время и дата заголовок, описание. В таблице 1 приведено соответствие заголовков полей и содержащихся в этих полях данных.
Таблица 1 - Типы полей базы данных событий
iddatetimetitledescriptionuniqueПорядковый номерДата и время записи событияЗаголовок событияОписание событияМетка
Вторая таблица содержит список пользователей, где для каждого из них существуют поля: порядковый номер, имя пользователя и пароль. В таблице 2 приведено соответствие заголовков полей базы данных пользователей и содержащихся в этих полях данных.
Таблица 2 - Типы полей базы данных пользователей
nicknamepasswordidИмя пользователяПарольПорядковый номер
Создание таблиц программно реализовано в файле createDB.php, листинг которого приведен в приложении Б.
Заключение
В ходе выполнения задания на курсовое проектирование было создано программное обеспечение на языке РНР, предназначенное для обслуживания базы данных событий, а именно разработано приложение клиент-сервер, предназначенное для обслуживания базы данных событий, соответствующее всем изложенным в задании требованиям.
В результате выполнения работы освоены навыки создания приложений типа клиент-сервер на языках программирования PHP, HTML с использованием СУБД MySQL.
Задание на курсовое проектирование выполнено в полном объёме.
Список использованных источников
Приложение
Текст программы
«createDB.php»
<! doctype html public «- //W3C //DTD HTML 4.0 //EN»>
<html>
<head>
<title>Untitled web-page</title>
</head>
<body>
<? php_connect («172.16.253.34», «it», «it»);_select_db («it»);
$query = «create table events (int(11) not null auto_increment,datetime not null default '0000-00-00 00:00:00',varchar(255) not null,varchar(255) not null,id (id))»;_query($query);
$query_indetif = «create table user (varchar(10) not null,varchar(10) not null,key (id))»;_query ($query_indetif);
$query_ins = «insert into user values ('root', 'admin', '1', 'description', 1, 'none@none.ru', «, «, «)»;_query ($query_ins);
?>
</body>
</html>
«index.php»
<? php(! require_once («authorization.inc»)) RedirectAndExit («login.phtml»);('config.inc');
$dbh = mysql_connect ($db_srvname, $db_user, $db_password) or die ('Невозможно установить соеденение с базой данных.');
mysql_select_db ($db_name) or die ('Невозможно установить активную БД.');
// удалить записи($DeleteEvents!= «)
{
$i=0;($REQUEST_METHOD== «POST»)(list ($key, $val) = each ($HTTP_POST_VARS))
{
$pos = strpos ($key, «delrecord»);(! ($pos === false))
{
$delid[$i] = $val;
$i++;
};
}($i > 0)
{
$delsect_ids= «'».join («', '»,$delid). «'»;
$sql = «DELETE FROM events WHERE id IN ($delsect_ids)»;
$result = mysql_query($sql);(!$result)
{«Could not successfully run query ($sql) from DB:». mysql_error();
}
}
}
?>
<! DOCTYPE HTML PUBLIC «- //W3C //DTD HTML 4.01 Transitional //EN»>
<html>
<head>
<title>БД событий. Авторизированная зона.</title>
<meta http-equiv= «Content-Type» content= «text/html; charset=windows-1251»>
</head>
<body>
<div align= «center»>
<h1>Ежедневник.</h1>
<form action= «index.php» method= «post» name= «mainform» id= «mainform»>
<table width= «90%» border= «1» cellspacing= «0» cellpadding= «0»>
<tr>
<td><div align= «center»><strong>Время</strong></div></td>
<td><div align= «center»><strong>Дата</strong></div></td>
<td><div align= «center»><strong>Заголовок</strong></div></td>
<td><div align= «center»><strong>Описание</strong></div></td>
<td><div align= «center»><strong>Удаление</strong></div></td>
</tr>
<?
$where = «»;($v == «day»)
$where = «WHERE datetime > CURRENT_DATE»;($v == «week»)
$where = «WHERE datetime >= DATE_SUB (CURRENT_DATE, INTERVAL 7 DAY)»;
$sql = «SELECT id, date_format (datetime, ' % H:%i') AS time, date_format (datetime, ' % d/%m/%Y') AS date, title, description FROM events$where»;
$result = mysql_query($sql);
$error = 0;(!$result)
{«Could not successfully run query ($sql) from DB:». mysql_error();
$error = 1;
}(mysql_num_rows($result) == 0)
{«No rows found, nothing to print.»;
$error = 1;
}
<? php(! require_once («authorization.inc»)) RedirectAndExit («login.phtml»);('config.inc');
$dbh = mysql_connect ($db_srvname, $db_user, $db_password) or die ('Невозможно установить соеденение с базой данных.');
mysql_select_db ($db_name) or die ('Невозможно установить активную БД.');($AddRecord!= «»)
{($title ==»» || $description == «»)
$error = «Невозможно добавить запись!<br> Необходимо заполнить все поля.<br>»;
else
{($id == «»)
{
$sql= «INSERT INTO events (datetime, title, description) VALUES (NOW(), '$title', '$description')»;
}
{
$sql= «UPDATE events SET title='$title', description='$description' WHERE id='$id'»;
}
$result = mysql_query($sql);(!$result)
{«Could not successfully run query ($sql) from DB:». mysql_error();
}
{(«Location: index.php»);;
}
}
}($id!= «»)
{
$sql = «SELECT title, description FROM events WHERE id='$id'»;
$result = mysql_query($sql);(!$result)
{«Could not successfully run query ($sql) from DB:». mysql_error();
}
{
$row = mysql_fetch_array ($result, MYSQL_BOTH);
$title = $row [«title»];
$description = $row [«description»];
}
}
?>
<! DOCTYPE HTML PUBLIC «- //W3C //DTD HTML 4.01 Transitional //EN»>
<html>
<head>
<title>Добавить запись</title>
<meta http-equiv= «Content-Type» content= «text/html; charset=windows-1251»>
</head>
<body>
<? echo $error?>
<h3>Добавить запись:</h3>
<form action= «addrecord.phtml» method= «get» name= «mainform» id= «mainform»>
<input type= «hidden» name= «id» id= «id» value= "<? echo $id?>">
<table width= «90%» border= «0» cellspacing= «0» cellpadding= «5»>
<tr>
<td><div align= «right»><strong>Заголовок: </strong></div></td>
<td><input name= «title» type= «text» id= «title» size= «50» value= "<? echo $title?>"></td>
</tr>
<tr>
<td><div align= «right»><strong>Описание: </strong></div></td>
<td><textarea name= «description» cols= «50» rows= «7» id= «description»><? echo $description?></textarea></td>
</tr>
<tr>
<td colspan= «2»><div align= «center»>
<input type= «submit» name= «AddRecord» value= «Добавить запись»>
</div></td>
</tr>
</table>
</form>
<p><a href=»/">Вернуться на главную.</a></p>
</body>
</html>
«login.php»
<? php('config.inc');($nickname!= '' && $password!= «)
{
$dbh = mysql_connect ($db_srvname, $db_user, $db_password) or die ('Невозможно установить соеденение с базой данных.');
mysql_select_db ($db_name) or die ('Невозможно установить активную таблицу.');
$sql = «SELECT id FROM user WHERE nickname='$nickname' AND password='$password' AND superuser=1»;
$result = mysql_query($sql);(!$result)
{«Could not successfully run query ($sql) from DB:». mysql_error();;
{
$row = mysql_fetch_array ($result, MYSQL_BOTH);
}($row)
{_start();_register ('is_auth_user');
$is_auth_user = rand();(«Location: index.php»);
}
{(«Location: login.phtml»);
}_close();
}
{<<<MAINWIN
<HTML>
<head>
<META HTTP-EQUIV= «Content-Type» CONTENT= «text/html; charset=Windows-1251»>
<script language= «JavaScript»>
<!-SelectIt() {.mainform.nickname.focus();
}
// ->
</script>
<link href='$current_dir/styles/$style_file' rel=stylesheet>
</head>
$sCentralBodyTag
<table height=100% border=0>
<tr>
<td align=center valign= «middle»>
<b>
<FORM action='login.phtml' method=post>
<TABLE border=0>
<TR><TD>
<INPUT type=text id=nickname name=nickname maxlength=8 value='root'>
</TD></TR>
<TR><TD>
<INPUT>
</TD></TR>
<TR><TD align=right><INPUT type=submit value=Вход>
</td></tr>
</table>
</td></tr>
</table>
</BODY>
</HTML>;
}
?>
«password.php»
<? php(! require_once («authorization.inc»)) RedirectAndExit («login.phtml»);('config.inc');
$dbh = mysql_connect ($db_srvname, $db_user, $db_password) or die ('Невозможно установить соеденение с базой данных.');
mysql_select_db ($db_name) or die ('Невозможно установить активную БД.');($Submit!= «»)
{($password == «»)
$error = «Пароль не должен быть пустым!<br>»;
else
{
$sql= «UPDATE user SET password='$password' WHERE superuser='1'»;
$result = mysql_query($sql);(!$result)
{«Could not successfully run query ($sql) from DB:». mysql_error();
}
{_write_close();(«Location: login.phtml»);;
}
}
}
?>
<! DOCTYPE HTML PUBLIC «- //W3C //DTD HTML 4.01 Transitional //EN»>
<html>
<head>
<title>Смена пароля</title>
<meta http-equiv= «Content-Type» content= «text/html; charset=windows-1251»>
</head>
<body>
<? echo $error?>
<h3>Смена пароля: </h3>
<form action= «password.phtml» method= «post» name= «mainform» id= «mainform»>
Новый пароль:
<input type= «submit» name= «Submit» value= «Сменить»>
</form>
</body>
</html>