Московский государственный институт электроники и математики

Кафедра электронно-вычислительной аппаратуры

КУРСОВАЯ РАБОТА

по дисциплине “Базы данных”

на тему:

"Поисковая система –

Библиотеки города Москвы"

Выполнили: студентки группы № С-54

Руководитель

Дтн

Москва

2005

Аннотация

В отчете решалась задача проектирования и разработки Информационно - Поисковой Системы "Библиотеки города Москвы".

В качестве программного приложения использовалась Система управления реляционными базами данных "MySQL". Для создания интерфейса использовался набор WEB-разработчика "Denver 2".

Содержание

Аннотация. 2

Содержание. 2

Введение. 2

1. Постановка задачи. 2

2. Краткие сведения. 2

Достоинства MySQL.. 3

Что собой представляет РНР?. 3

Преимущества РНР. 4

5. Проектирование базы данных. 4

5.1 Описание предметной области. 4

5.2 Получение инфологической модели. 5

5.3 Даталогическая модель. 5

4 Интерфейс проектирования. 5

5.1 Начало работы.. 19

5.2 Создание таблицы.. 20

Запрос на создание таблицы... 20

5.3 Добавление записей в таблицы.. 22

6. Тестовый пример. 23

7. Выводы.. 27

8. Список использованной литературы. 28

Введение

Создание Информационно Поисковой Системы "Библиотеки города Москвы" является хорошим примером для обучения работе с СУРБД "MySQL". В данной работе осуществлялась работа с различными базами данных, на основе которых была создана данная поисковая система.

1.  Постановка задачи

Необходимо создать Информационно Поисковую Систему "Библиотеки города Москвы". Используя программные и аппаратные средства, необходимые для решения поставленной задачи:

НЕ нашли? Не то? Что вы ищете?

1.  MySQL (для создания СУБД)

2.  Denver 2 (для создания интерфейса на PHP)

2.  Краткие сведения

MySQL - это система управления базами данных.

База данных представляет собой структурированную совокупность данных. Эти данные могут быть любыми - от простого списка предстоящих покупок до перечня экспонатов картинной галереи или огромного количества информации в корпоративной сети. Для записи, выборки и обработки данных, хранящихся в компьютерной базе данных, необходима система управления базой данных, каковой и является ПО MySQL. Поскольку компьютеры замечательно справляются с обработкой больших объемов данных, управление базами данных играет центральную роль в вычислениях. Реализовано такое управление может быть по-разному - как в виде отдельных утилит, так и в виде кода, входящего в состав других приложений.

MySQL - это система управления реляционными базами данных.

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

Программное обеспечение MySQL - это ПО с открытым кодом.

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

Достоинства MySQL

Перечислим основные достоинства пакета MySQL:

Многопоточность. Поддержка нескольких одновременных запросов.

Оптимизация связей с присоединением многих данных за один проход.

Записи фиксированной и переменной длины.

ODBC драйвер в комплекте с исходным текстом

Гибкая система привилегий и паролей.

До 16 ключей в таблице. Каждый ключ может иметь до 15 полей.

Поддержка ключевых полей и специальных полей в операторе CREATE.

Поддержка чисел длинной от 1 до 4 байт (ints, float, double, fixed), строк переменной длины и меток времени.

Интерфейс с языками C и perl.

Основанная на потоках, быстрая система памяти.

Утилита проверки и ремонта таблицы.

Все данные хранятся в формате ISO8859_1.

Все операции работы со строками не обращают внимания на регистр символов в обрабатываемых строках.

Псевдонимы применимы как к таблицам, так и к отдельным колонкам в таблице.

Все поля имеют значение по умолчанию. INSERT можно использовать на любом подмножестве полей.

Легкость управления таблицей, включая добавление и удаление ключей и полей.

Что собой представляет РНР?

РНР - это серверный язык создания сценариев (или стороны сервера), разработанный специально для Web. В НТМL-страницу можно внедрить код РНР, который будет выполняться при каждом ее посещении. Код РНР интерпретирует ся Web-сервером и генерирует HTML или иной вывод, наблюдаемый посетителем страницы.

Разработка РНР была начата в 1994 г. и вначале выполнялась одним человеком, Расмусом Лердорфом (Rasmus Lerdort). Этот язык был принят рядом талантливых людей и претерпел три основных редакции, пока не стал широко используемым и зрелым продуктом, с которым мы имеем дело сегодня. К январю 2001 г. он использовался почти в пяти миллионах доменов во всем мире и их число продолжает быстро расти.

РНР - это продукт с открытым исходным кодом (Ореn Source). У пользователя имеется доступ к исходному коду. Его можно использовать, изменять и свободно распространять другим пользователям или организациям.

Первоначально РНР являлось сокращением от Personal Ноmе Page (Персональная начальная страница), но затем это название было изменено в соответствии с рекурсивным соглашением по наименованию GNU (GNU = Gnu's Not Unix) и теперь означает РНР Hypertext Preprocessor (Препроцессор гипертекста РНР).В настоящее время основной версией РНР является четвертая. Эта версия характеризуется несколькими существенными усовершенствованиями языка.

Преимущества РНР

К числу конкурентов РНР относятся Perl, Active Server Pages (ASP) от Microsoft,

Java Server Pages (JSP) и Allaire Cold Fusion.

РНР обладает множеством преимуществ по сравнению с этими продуктами, в числе которых:

-  Высокая производительность

-  Наличие интерфейсов ко многим различным системам баз данных

-  Встроенные библиотеки для выполнения многих общих задач, связанных с Web. Низкая стоимость

-  Простота изучения и использования

-  Переместимость

-  Доступность исходного кода

5. Проектирование базы данных

Основная цель проектирования БД – это сокращение избыточности хранимых данных, а следовательно, экономия объема используемой памяти, уменьшение затрат на многократные операции обновления избыточных копий и устранение возможности возникновения противоречий из-за хранения в разных местах сведений об одном и том же объекте.

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

Во время фазы физического моделирования разработчик создает модель, оптимизированную для конкретного приложения и СУБД. Это та самая модель, которая и реализуется на практике.

5.1  Описание предметной области.

В Информационно поисковой системе используются данные о библиотеках города Москвы. В данной базе были созданы две сущности (таблицы):

·  Main

·  Type

Сущность Main является основной таблицей базы данных, в ней содержится информация о библиотеках. В ней имеется десять атрибутов:

-  Идентификационный номер (первичный ключ), Название, Год основания, Адрес, Тип библиотеки, Данные о библиотеке, Часы работы, Станция метро

Сущность Type является дополнительной таблицей базы данных, описывающая типы библиотек и характеристики этих типов. Эта таблица имеет два атрибута: Тип, Характеристика типа

5.2  Получение инфологической модели

5.3  Даталогическая модель

ì Main (Идентификационный номер, Название, Год основания, Адрес, Тип,
ê Данные о библиотеке, Часы работы, Станция метро,
í

ê

î Type (Характеристика типа, Тип)

4  Интерфейс проектирования

Для написания интерфейса к базе данных по библиотекам использовался джентльменский набор Web-разработчика «Денвер-2». Этот пакет включает в себя базовые версии сервера Apache, сервера MySQL, интерпретатора языка PHP и языка программирования Perl…

Программа:

*** Файл INDEX.PHP – основной экран ***

Для начала создадим заголовок страницы. Затем на странице создадим таблицу, выровненную по центру. Установим фон страницы.

Создадим форму для ввода информации, содержащую названия и поля для ввода/выбора данных.

<?

// Подключаем файл для работы с Базой Данных

require_once ("db. php");

$db = new database ("localhost", "root", "", "biblioteks");

// Если неудаётся соединиться с базой данных

if (! $db -> dbconnect)

{

// То выведем сообщение

echo "Не удаётся соединиться с БД";

exit;

}

echo "<html>\n";

echo " <head>\n";

echo " <title>Поисковая система по библиотекам Москвы</title>\n";

echo " </head>\n";

echo " <body link = \"#f2d1a4\" alink = \"#f2d1a4\" vlink = \"#f2d1a4\">\n";

echo " <table align = \"center\" valign = \"center\" width = \"1024px\" height = \"768px\" cellpadding = \"0\" cellspacing = \"0\">\n";

echo " <tr>\n";

echo " <td align = \"center\" valign = \"center\" background = \"pics/wallpaper_title. jpg\" width = \"1024px\" height = \"768px\">\n";

echo " <table width = \"100%\" cellpadding = \"0\" cellspacing = \"0\">\n";

echo " <tr>\n";

echo " <td width = \"50%\" align = \"left\">\n";

echo " <form action = \"search. php\" method = \"post\">\n";

echo " <table cellpadding = \"0\" cellspacing = \"5\">\n";

echo " <tr>\n";

echo " <td><i><font size = \"10\" color = \"#f2d1a4\">Поиск:</font></i></td>\n";

echo " <td><input name = \"searchline\" size = \"26\" maxlength = \"100\"></td>\n";

echo " </tr>\n";

echo " <tr>\n";

echo " <td><i><font size = \"10\" color = \"#f2d1a4\">Критерий:</font></i></td>\n";

echo " <td>\n";

echo " <select name = \"searchmode\">\n";

echo " <option value = \"name\">названию</option>\n";

echo " <option value = \"type\">типу</option>\n";

echo " <option value = \"metro\">станции метро</option>\n";

echo " </select>\n";

echo " <input type = \"submit\" value = \" OK \">\n";

echo " </td>\n";

echo " </tr>\n";

echo " </table>\n";

echo " </form>\n";

echo " </td>\n";

echo " <td width = \"50%\" align = \"center\"><font size = \"14\"><i><a href = \"addbiblioteks. php\">Добавление<br>новых данных</a></i></font><br><br><br><br><br></td>\n";

echo " </tr>\n";

echo " </table>\n";

echo " </td>\n";

echo " </tr>\n";

echo " </table>\n";

echo " </body>\n";

echo "</html>\n";

?>

*** Файл SEARCH.PHP – выводит результаты поиска ***

<?

// Подключаем файл для работы с Базой Данных

require_once ("db. php");

$db = new database ("localhost", "root", "", "biblioteks");

if (! $db -> dbconnect)

{

echo "Не удаётся соединиться с БД";

exit;

}

echo "<html>\n";

echo " <head>\n";

echo " <title>Поисковая система по библиотекам Москвы :: Результаты поиска</title>\n";

echo " </head>\n";

echo " <body>\n";

echo " <p align = \"center\">\n";

echo " <b>Результаты поиска</b>\n";

echo " </p>\n";

// Если введена пустая строка

if ($searchline == "")

{

// То выводим сообщение

echo "<center>Вы не ввелиданных для поиска</center>\n";

echo "<center>Нажмите <a href = \"index. php\">сюда</a> и введите нормальные данные</center>\n";

}

// если строка не пустая

else

{

// Если поиск по названию

if ($searchmode == "name")

{

// Делаем запрос в базу данных

$query = "SELECT * FROM main WHERE name LIKE ('%" . $searchline. "%')";

$result = $db -> query ($query);

$rows = $db -> numrows ($result);

// Если найдена хотябы одна строка информации

if ($rows > 0)

{

//Выводим заголовки таблицы вывода результатов поиска

echo "<table width = \"70%\" border = \"1\" align = \"center\">\n";

echo " <tr>\n";

echo " <th>Название</th>\n";

echo " <th>Год основания</th>\n";

echo " <th>Адрес</th>\n";

echo " <th>Тип</th>\n";

echo " <th>Данные</th>\n";

echo " <th>Часы работы</th>\n";

echo " <th>Станция метро</th>\n";

echo " </tr>\n";

// Просматриваем каждую найденную запись

while ($row = $db -> fetcharray ($result))

{

// Присваиваем переменным значения из базы данных

$mid = $row["mid"];

$mname = $row["name"];

$myear = $row["year"];

$maddr = $row["address"];

$mtype = $row["type"];

$mdata = $row["data"];

$mhours = $row["hours"];

$mmetro = $row["metro"];

$mfilialy = $row["filialy"];

// Выводим результаты на экран

echo " <tr>\n";

echo " <td>" . $mname. "</td>\n";

echo " <td>" . $myear. "</td>\n";

echo " <td>" . $maddr. "</td>\n";

echo " <td>" . $mtype. "</td>\n";

echo " <td>" . $mdata. "</td>\n";

echo " <td>" . $mhours. "</td>\n";

echo " <td>" . $mmetro. "</td>\n";

echo " <td>" . $mfilialy. "</td>\n";

echo " </tr>\n";

}

//Закрываем таблицу

echo "</table>\n";

}

//Если ничего не найдено

else

{

echo "<center>По вашему запросу ничего не найдено</center>\n";

}

}

// Если поиск по типу

elseif ($searchmode == "type")

{

$query = "SELECT name, type FROM main WHERE type LIKE ('%" . $searchline. "%')";

$result = $db -> query ($query);

$rows = $db -> numrows ($result);

// Если найдена хотябы одна позиция

if ($rows > 0)

{

echo "<table width = \"70%\" border = \"1\" align = \"center\">\n";

echo " <tr>\n";

echo " <th>Название</th>\n";

echo " <th>Тип</th>\n";

echo " <th>Харатеристика типа</th>\n";

echo " </tr>\n";

// Просматриваем каждую найденную запись

while ($row = $db -> fetcharray ($result))

{

$mname = $row["name"];

$mtype = $row["type"];

$query = "SELECT characteristic FROM type WHERE name = '$mtype'";

$res = $db -> query ($query);

$row = $db -> fetcharray ($res);

$mcharacteristic = $row["characteristic"];

echo " <tr>\n";

echo " <td>" . $mname. "</td>\n";

echo " <td>" . $mtype. "</td>\n";

echo " <td>" . $mcharacteristic. "</td>\n";

echo " </tr>\n";

}

echo "</table>\n";

}

else

{

echo "<center>По вашему запросу ничего не найдено</center>\n";

}

}

// Если поиск по станции метро

elseif ($searchmode == "metro")

{

$query = "SELECT * FROM main WHERE metro LIKE ('%" . $searchline. "%')";

$result = $db -> query ($query);

$rows = $db -> numrows ($result);

// Если найдена хотябы одна позиция

if ($rows > 0)

{

echo "<table width = \"70%\" border = \"1\" align = \"center\">\n";

echo " <tr>\n";

echo " <th>Название</th>\n";

echo " <th>Год основания</th>\n";

echo " <th>Адрес</th>\n";

echo " <th>Тип</th>\n";

echo " <th>Данные</th>\n";

echo " <th>Часы работы</th>\n";

echo " <th>Станция метро</th>\n";

echo " </tr>\n";

// Просматриваем каждую найденную запись

while ($row = $db -> fetcharray ($result))

{

$mid = $row["mid"];

$mname = $row["name"];

$myear = $row["year"];

$maddr = $row["address"];

$mtype = $row["type"];

$mdata = $row["data"];

$mhours = $row["hours"];

$mmetro = $row["metro"];

$mfilialy = $row["filialy"];

echo " <tr>\n";

echo " <td>" . $mname. "</td>\n";

echo " <td>" . $myear. "</td>\n";

echo " <td>" . $maddr. "</td>\n";

echo " <td>" . $mtype. "</td>\n";

echo " <td>" . $mdata. "</td>\n";

echo " <td>" . $mhours. "</td>\n";

echo " <td>" . $mmetro. "</td>\n";

echo " <td>" . $mfilialy. "</td>\n";

echo " </tr>\n";

}

echo "</table>\n";

}

else

{

echo "<center>По вашему запросу ничего не найдено</center>\n";

}

}

}

echo " </body>\n";

echo "</html>\n";

?>

*** Файл ADDBIBLIOTEKS.PHP – экран добавления новой библиотеки ***

<?

// Подключаем файл для работы с Базой Данных

require_once ("db. php");

$db = new database ("localhost", "root", "", " biblioteks");

if (! $db -> dbconnect)

{

echo "Не удаётся соединиться с БД";

exit;

}

echo "<html>\n";

echo " <head>\n";

echo " <title>Поисковая система по библиотекам Москвы</title>\n";

echo " </head>\n";

echo " <body link = \"#f2d1a4\" alink = \"#f2d1a4\" vlink = \"#f2d1a4\">\n";

echo " <table align = \"center\" width = \"1024px\" height = \"768px\" cellpadding = \"0\" cellspacing = \"0\">\n";

echo " <tr>\n";

echo " <td align = \"center\" valign = \"top\" background = \"pics/wallpaper. jpg\" width = \"1024px\" height = \"768px\">\n";

echo " <br><br>\n";

echo " <form enctype = \"multipart/form-data\" action = \"add. php\" method = \"post\">\n";

echo " <table width = \"100%\" cellpadding = \"0\" cellspacing = \"0\">\n";

echo " <tr>\n";

echo " <td width = \"40%\" align = \"right\"><i><font size = \"10\" color = \"#f2d1a4\">Название:</font></i></td>\n";

echo " <td rowspan = \"10\" width = \"100px\"></td>\n";

echo " <td width = \"40%\" align = \"left\"><input type = \"text\" name = \"name\" size = \"25\" maxlength = \"100\"></td>\n";

echo " </tr>\n";

echo " <tr>\n";

echo " <td width = \"40%\" align = \"right\"><i><font size = \"10\" color = \"#f2d1a4\">Год основания:</font></i></td>\n";

echo " <td width = \"40%\" align = \"left\"><input type = \"text\" name = \"year\" size = \"25\" maxlength = \"100\"></td>\n";

echo " </tr>\n";

echo " <tr>\n";

echo " <td width = \"40%\" align = \"right\"><i><font size = \"10\" color = \"#f2d1a4\">Адрес:</font></i></td>\n";

echo " <td width = \"40%\" align = \"left\"><textarea name = \"address\" cols = \"19\" rows = \"2\"></textarea></td>\n";

echo " </tr>\n";

echo " <tr>\n";

echo " <td width = \"40%\" align = \"right\"><i><font size = \"10\" color = \"#f2d1a4\">Тип:</font></i></td>\n";

echo " <td width = \"40%\" align = \"left\">\n";

echo " <select name = \"type\">\n";

echo " <option value = \"new\">Новый тип</option>\n";

//Делаем запрос в базу данных обо всех типах библиотек

$query = "SELECT * FROM type ORDER BY name";

$result = $db -> query ($query);

$rows = $db -> numrows ($result);

if ($rows > 0)

{

while ($row = $db -> fetcharray ($result))

{

$tname = $row["name"];

echo "<option value = \"" . $tname. "\">" . $tname. "</option>\n";

}

}

echo " </select>\n";

echo " <input type = \"text\" name = \"tname\" size = \"25\" maxlength = \"50\"><br>\n";

echo " </td>\n";

echo " </tr>\n";

echo " <tr>\n";

echo " <td width = \"40%\" align = \"right\"><i><font size = \"10\" color = \"#f2d1a4\">Характеристика типа:</font></i></td>\n";

echo " <td width = \"40%\" align = \"left\"><textarea name = \"tcharacteristic\" cols = \"19\" rows = \"2\"></textarea></td>\n";

echo " </tr>\n";

echo " <tr>\n";

echo " <td width = \"40%\" align = \"right\"><i><font size = \"10\" color = \"#f2d1a4\">Данные о библиотеке:</font></i></td>\n";

echo " <td width = \"40%\" align = \"left\"><textarea name = \"data\" cols = \"19\" rows = \"3\"></textarea></td>\n";

echo " </tr>\n";

echo " <tr>\n";

echo " <td width = \"40%\" align = \"right\"><i><font size = \"10\" color = \"#f2d1a4\">Часы работы:</font></i></td>\n";

echo " <td width = \"40%\" align = \"left\"><input type = \"text\" name = \"hours\" size = \"25\" maxlength = \"100\"></td>\n";

echo " </tr>\n";

echo " <tr>\n";

echo " <td width = \"40%\" align = \"right\"><i><font size = \"10\" color = \"#f2d1a4\">Станция метро:</font></i></td>\n";

echo " <td width = \"40%\" align = \"left\"><input type = \"text\" name = \"metro\" size = \"25\" maxlength = \"100\"></td>\n";

echo " </tr>\n";

echo " <tr>\n";

echo " <td width = \"40%\" align = \"right\"><i><font size = \"10\" color = \"#f2d1a4\">\n";

echo " <td width = \"40%\" align = \"left\"><textarea name = \"filialy\" cols = \"19\" row = \"2\"></textarea></td>\n";

echo " </tr>\n";

echo " <tr>\n";

echo " <td width = \"40%\" align = \"left\"><input type = \"file\" name = \"photo\" size = \"25\" maxlength = \"100\"></td>\n";

echo " </tr>\n";

echo " <tr>\n";

echo " <td></td>\n";

echo " <td align = \"center\"><input type = \"submit\" value = \" OK \"></td>\n";

echo " </table>\n";

echo " </form>\n";

echo " </td>\n";

echo " </tr>\n";

echo " </table>\n";

echo " </body>\n";

echo "</html>\n";

?>

*** Файл ADD.PHP – файл добавления библиотеки в базу ***

<?

// Подключаем файл для работы с Базой Данных

require_once ("db. php");

$db = new database ("localhost", "root", "", " biblioteks ");

if (! $db -> dbconnect)

{

echo "Не удаётся соединиться с БД";

exit;

}

echo "<html>\n";

echo " <head>\n";

echo " <title>Поисковая система по бибилиотекам Москвы :: Результаты поиска</title>\n";

echo " </head>\n";

echo " <body>\n";

// Обрубаем пробелы в начале и в конце блока вводимых данных

$name = Trim ($name);

$year = Trim ($year);

$address = Trim ($address);

$tname = Trim ($tname);

$tcharacteristic = Trim ($tcharacteristic);

$data = Trim ($data);

$hours = Trim ($hours);

$metro = Trim ($metro);

$filialy = Trim ($filialy);

// Если выбран новый тип бибилиотеки

if ($type == "new")

{

// Если имя нового типа не введено

if ($tname == "")

{

// То выведем сообщение об ошибке

echo " <p align = \"center\">\n";

echo " <b>Ошибка! Вы не указали тип библиотеки</b><br>\n";

echo " <a href = \"add biblioteks. php\">Назад</a>\n";

echo " </p>\n";

echo " </body>\n";

echo "</html>\n";

exit;

}

// Если имя нового типа введено

else

{

// Делаем запрос в базу данных, на проверку существования данного типа

$query = "SELECT * FROM type WHERE name = '$tname'";

$result = $db -> query ($query);

$rows = $db -> numrows ($result);

// Если найдена хотя бы одна строка информации

if ($rows > 0)

{

// То выведем сообщение, что такой тип уже есть

echo " <p align = \"center\">\n";

echo " <b>Такой тип библиотеки уже есть в базе</b><br>\n";

echo " <a href = \"index. php\">Назад</a>\n";

echo " </p>\n";

echo " </body>\n";

echo "</html>\n";

exit;

}

// Если не найдено

else

{

// То делаем запрос в БД на добавление нового типа библиотеки

$query = "INSERT INTO type (name, characteristic) VALUES ('$tname', '$tcharacteristic')";

$result = $db -> query ($query);

}

}

}

// Если не новый тип, а уже существующий

else

{

$tname = $type;

}

// Делаем запрос в БД, на проверку существования данной библиотеки

$query = "SELECT * FROM main WHERE name = '$name'";

$result = $db -> query ($query);

$rows = $db -> numrows ($result);

// Если запись найдена

if ($rows > 0)

{

// То выводим сообщение, что такая библиотека уже есть

echo " <p align = \"center\">\n";

echo " <b>Такая библиотека уже есть в базе</b><br>\n";

echo " <a href = \"index. php\">Назад</a>\n";

echo " </p>\n";

}

// Если не найдена

else

{

// Если название библиотеки не введено

if ($name == "")

{

echo " <p align = \"center\">\n";

echo " <b>Вы не указали название библиотеки </b><br>\n";

echo " <a href = \"index. php\">Назад</a>\n";

echo " </p>\n";

}

// Если год не введен

elseif ($year == "")

{

echo " <p align = \"center\">\n";

echo " <b>Вы не указали год основания библиотеки</b><br>\n";

echo " <a href = \"index. php\">Назад</a>\n";

echo " </p>\n";

}

// Если адрес библиотеки не введен

elseif ($address == "")

{

echo " <p align = \"center\">\n";

echo " <b>Вы не указали адрес библиотеки</b><br>\n";

echo " <a href = \"index. php\">Назад</a>\n";

echo " </p>\n";

}

// Если данные библиотеки не введены

elseif ($data == "")

{

echo " <p align = \"center\">\n";

echo " <b>Вы не указали данные библиотеки</b><br>\n";

echo " <a href = \"index. php\">Назад</a>\n";

echo " </p>\n";

}

// Если часы работы не введены

elseif ($hours == "")

{

echo " <p align = \"center\">\n";

echo " <b>Вы не указали часы работы библиотеки</b><br>\n";

echo " <a href = \"index. php\">Назад</a>\n";

echo " </p>\n";

}

// Если станция не введена

elseif ($metro == "")

{

echo " <p align = \"center\">\n";

echo " <b>Вы не указали станцию метро</b><br>\n";

echo " <a href = \"index. php\">Назад</a>\n";

echo " </p>\n";

}

// Если всё введено

else

{

// Делаем запрос в БД на добавление библиотеки в базу

$query = "INSERT INTO main (name, year, address, type, data, hours, metro, filialy) VALUES ('$name', '$year', '$address', '$tname', '$data', '$hours', '$metro', '$filialy')";

$result = $db -> query ($query);

// Делаем запрос в БД на идентификатор библиотеки

$query = "SELECT mid FROM main WHERE name = '$name'";

$result = $db -> query ($query);

$row = $db -> fetcharray ($result);

$mid = $row["mid"];

$mid = IntVal ($mid);

$photofile = $DOCUMENT_ROOT. "/pics/photo/" . $mid. ".jpg";

copy ($photo, $photofile);

echo " <p align = \"center\">\n";

echo " <b>библиотека успешно добавлена в базу</b><br>\n";

echo " <a href = \"index. php\">Назад</a>\n";

echo " </p>\n";

}

}

echo " </body>\n";

echo "</html>\n";

?>

*** Файл DB.PHP – файл для работы с БД ***

<?

//Файл для работы с Базой Данных */

class database

{

var $dbconnect;

var $queryresult;

var $numqueries = 0;

var $row = array ();

//Конструктор

function database ($hostname, $username, $password, $database, $constantly = true)

{

$this -> dbhostname = $hostname;

$this -> dbusername = $username;

$this -> dbpassword = $password;

$this -> dbname = $database;

$this -> constantly = $constantly;

// Если требуется постоянное соединение с БД

if ($this -> constantly)

{

$this -> dbconnect = @ mysql_connect ($this -> dbhostname, $this -> dbusername, $this -> dbpassword);

}

else

{

$this -> dbconnect = @ mysql_pconnect ($this -> dbhostname, $this -> dbusername, $this -> dbpassword);

}

// Если удалось соединиться с БД

if ($this -> dbconnect)

{

$dbselect = @ mysql_select_db ($this -> dbname);

// Если не удалось выбрать БД

if (! $dbselect)

{

@ mysql_close ($this -> dbconnect);

$this -> dbconnect = $dbselect;

}

return $this -> dbconnect;

}

// Если не удалось

else

{

return false;

}

}

//Функция запроса в БД

function query ($query = "")

{

// Удалим предыдущий запрос

unset ($this -> queryresult);

// Если запрос не пустой

if ($query!= "")

{

// Увеличим счётчик запросов

$this -> numqueries ++;

$this -> queryresult = @ mysql_query ($query, $this -> dbconnect);

}

// Если запрос выполнен успешно

if ($this -> queryresult)

{

unset ($this -> row [$this -> queryresult]);

return $this -> queryresult;

}

else

{

return false;

}

}

// Функция подсчёта количества

function numrows ($qid = 0)

{

if (! $qid)

{

$qid = $this -> queryresult;

}

if ($qid)

{

$result = @ mysql_num_rows ($qid);

return $result;

}

else

{

return false;

}

}

// Функция, которая из списка результатов делает ассоциативный массив #

function fetcharray ($qid)

{

if (! $qid)

{

$qid = $this -> queryresult;

}

if ($qid)

{

$this -> row [$qid] = @ mysql_fetch_array ($qid);

return $this -> row [$qid];

}

else

{

return false;

}

}

}

?>

Программная реализация

В программной реализации использовалась СУРБД MySQL. Рассмотрим подробнее создание:

5.1  Начало работы

1.  Запустите программу "Start Servers".

2.  Запустите "Internet Explorer".

3.  В адресной строке наберите "http://localhost/phpMyAdmin"

4.  В поле "Создать новую БД” введите " biblioteks " и нажмите "Создать"

5.  Выберите созданную базу " biblioteks ", выберите вкладку "SQL", нажмите "Обзор", выберите файл " biblioteks. sql" и нажмите кнопку "Пошел"

6.  В адресной строке наберите "http:// biblioteks "

5.2  Создание таблицы

СИНТАКСИС:

CREATE TABLE table_name (create_definition, ...)

В MySQL все поля имеют неявное значение по умолчанию, если объявлены, как не пустые (NOT NULL). Если вы не даете значения по умолчанию при использовании не пустого поля, оно будет назначено, исходя из типа поля.

Для создания таблицы Вы должны иметь права доступа create.

Номер столбца может иметь дополнительное ключевое слово AUTO_INCREMENT, чтобы автоматически получить номер = самый большой номер столбца + 1 для каждой вставки, в которой номер столбца = 0 или NULL. ТО ЕСТЬ, если Вы попробуете вставить значение ноля в числовой столбец, который имеет атрибут AUTO_INCREMENT, Вы получите номер столбца, который на 1 большим, чем самый большой предварительно использованный номер.

Запрос на создание таблицы

Создадим таблицу "Main". Запрос на создание таблицы будет выглядеть так:

DROP TABLE IF EXISTS `main`;

CREATE TABLE IF NOT EXISTS `main` (

`mid` tinyint(10) NOT NULL auto_increment,

`name` varchar(100) NOT NULL default '',

`year` varchar(4) NOT NULL default '',

`address` text NOT NULL,

`type` varchar(50) NOT NULL default '0',

`data` text NOT NULL,

`hours` varchar(15) NOT NULL default '',

`metro` varchar(40) NOT NULL default '',

`filialy` text NOT NULL,

PRIMARY KEY (`mid`)

) TYPE=MyISAM;

Создадим таблицу "Type". Запрос на создание таблицы будет выглядеть так:

DROP TABLE IF EXISTS `type`;

CREATE TABLE IF NOT EXISTS `type` (

`name` varchar(50) NOT NULL default '',

`characteristic` text NOT NULL

) TYPE=MyISAM;

С помощью phpMyAdmin таблицу можно создать и без выполнения запросов следующим образом:

1.  На вкладке "Структура" в базе данных, в разделе "Создать новую таблицу в БД biblioteks "

2.  В поле "Имя" введите название таблицы, а в поле "Поля" – нужное количество полей и нажмите кнопку "Пошел".

3.  В открывшемся окне в таблице введите параметры столбцов, и нажмите кнопку "Пошел".

5.3  Добавление записей в таблицы

СИНТАКСИС:

INSERT INTO table [(column_name, ...)]

VALUES (expression,...)

    В выражении можно использовать любое предыдущее поле в списке column_name (или таблицу, если список имен столбцов не задан). При использовании SELECT вы не можете указать ORDER BY.

Добавление записей в таблицу "Main".

INSERT INTO main (name, year, address, type, data, hours, metro, filialy) VALUES ('$name', '$year', '$address', '$tname', '$data', '$hours', '$metro', '$filialy').

6.  Тестовый пример

Для начала загрузим виртуальный сервер. Для этого нажмем на

После загрузки сервера заходим в Internet Explorer и в адресной строке вводим: hhtp:\\biblioteks. Перед нами появилось окно:

Перед нами две возможности:

-  Произвести поиск по критериям

-  Добавить новые данные

7.  Список использованной литературы.

1.  , , . Базы данных: Учебник для высших учебных заведений. КОРОНА принт, Санкт-Петербург, 2004г.

2.  Томсон Лаура. Разработка Web-приложений на PHP и MySQL. OOO "ДиаСофтЮП", 2003 г.