Разработка Web-приложения Учёт оборудования с использованием PHP и СУБД MySQL

Оглавление





Введение	5

Необходимые знания по РНР	7

Управляющие конструкции РНР	7

Передача параметров  в РНР-приложение	10

Работа с MySQL сервером и функции MySQL	11

Структурная схема ПО web-сервера	12

Проектирование и создание базы данных	13

Составление web-страниц, с которыми будет работать пользователь	15

Написание РНР-кода, обрабатывающего БД	18

Заключение	28

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

Приложение 1. SQL запрос для построения базы данных	30

Приложение 2. HTML-коды страниц сайта и таблица стилей	33

Приложение 3. РНР-коды страниц сайта	34

Приложение 4. Связи между таблицами	40


Введение





В данном курсовом проекте передо мной поставлена задача создать Интернет-приложение «Учёт оборудования», используя СУБД MySQL и  язык программирования для Интернет РНР, который будет служить пользовательским интерфейсом для работы с данной базой данных.

PHP – это серверный (или серверной стороны) язык сценариев, разработанный специально для Web. В HTML-страницу можно внедрить PHP-код, который будет выполняться при каждом её посещении. PHP-код интерпретируется Web-сервером и генерирует HTML-код или другой вывод, наблюдаемый посетителями страницы.

PHP – это продукт с открытым исходным кодом (Open Source), то есть вы имеете доступ к исходному коду. Его можно использовать, изменять и свободно распространять другим пользователям или организациям.

Первоначально PHP являлось сокращением от  “Personal Home Page” (“Персональная домашняя страница”), но затем его название было изменено в соответствии с соглашением по рекурсивному именованию GNU (GNU=Gnu’s Not Unix) и теперь означает  “PHP Hypertext Preprocessor” (“Гипертекстовый препроцессор PHP”).

В настоящее время основной версией PHP является четвёртая. Эта версия характеризуется несколькими существенными языковыми усовершенствованиями.

Язык РНР очень практичен, а так же он способен предоставлять программисту средства для быстрого и эффективного решения поставленных перед ним задач. Еще язык РНР работает на любом типе операционных систем, то есть он поддерживается системами типа Windows и Unix. 

Существует также еще одна характеристика, которая делает РНР особенно привлекательным для программистов – это его бесплатное распространение! Наиболее новую версию можно в любой момент выгрузить из сайта по адресу http://www.php.net.

MySQL – очень быстрая, надёжная система управления базами данных (СУБД). Вообще говоря, база данных позволяет эффективно хранить, искать, сортировать и получать данные. Сервер MySQL управляет доступом к данным, позволяя работать с ними одновременно нескольким пользователям, обеспечивает быстрый доступ к данным и гарантирует предоставление доступа только пользователям, имеющим на это право. Следовательно, MySQL является многопользовательским, многопоточным сервером. Он применяет SQL (Structured Query Landguage – язык структурированных запросов), используемый по всему миру стандартный язык запросов в базы данных. 

Для создания базы данных MySQL я буду использовать такую прикладную программу, как phpMySQL_Admin, так как она имеет простой и понятный каждому интерфейс и позволяет создать базу данных MySQL практически не зная самого языка SQL.

Полученная курсовая работа по теме «Разработка Web-приложения «Учёт оборудования» с использованием PHP и СУБД MySQL» имеет в своем объеме 40 страниц печатного текста, 12 рисунков и 4 приложения.

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

Курсовая работа выполнена в соответствии с предложенной руководителем методической литературы.


Необходимые знания по РНР



Управляющие конструкции РНР





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

Проверка условий

Команда if представляет собой разновидность команды выбора, которая вычисляет значение выражения и в зависимости от того, будет ли полученный результат истинным или ложным, выполняет (или не выполняет) блок программного кода. Существует две общих формы команды if: 

if (выражение) { блок } 

и 

if (выражение) { блок } 

else { блок } 

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

elseif

Команда elseif добавляет в управляющую конструкцию if дополнительный уровень проверки и увеличивает количество условий, на основании которых принимается решение: 

if (выражение) { блок } 

elseif (выражение) { блок } 

В РНР существует альтернативное представление команды elseif — в виде двух отдельных слов else if. Оба варианта приводят к одинаковым результатам, а альтернативное представление поддерживается исключительно для удобства. Команда elseif особенно полезна в тех случаях, когда происходит последовательное уточнение проверяемых условий. Обратите внимание: условие elseif вычисляется лишь в том случае, если все предшествующие условия if и elseif оказались ложными. 

Необходимо отметить, что проверку условий можно вкладывать друг в друга, т.е. в одном блоке операторов условия проверять другое и т.д. Также можно проверять несколько условий одновременно, просто связывая условия операторами AND (&&) и OR(||).

switch

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

Это особенно удобно при проверке нескольких значений, поскольку применение switch делает программу более наглядной и компактной. Общий формат команды switch: 

switch (выражение) { 

case (условие): блок 

case (условие): блок 

... 

default: блок 

} 

Проверяемое условие указывается в круглых скобках после ключевого слова switch. Результат его вычисления последовательно сравнивается с условиями в секциях case. При обнаружении совпадения выполняется блок соответствующей секции. Если совпадение не будет обнаружено, выполняется блок необязательной секции default.

Циклы

Циклы  - это операторы управления, тело которых периодически выполняется определенное количество раз. Циклы бывают с предусловием, с постусловием и с изменяемым параметром.

Рассмотрим циклы с предусловием. Это циклы, в которых условие выхода из них проверяется до выполнения самого тела цикла. Синтаксис данных циклов выглядит следующим образом:

while (условие) : 

тело цикла

endwhile;

Также можно использовать фигурные скобки для ограничения тела цикла.

Циклы с постусловием. Это циклы, условие выхода из которых проверяется после выполнения тела цикла. Ниже приведен синтаксис данного типа циклов:

do

{ тело цикла} 

while (условие); 

Теперь давайте рассмотрим циклы с изменяемым параметром. Среди данных циклов выделяют две формы их написания: это for и foreach. Общая форма конструкции циклов for и foreach выглядит так:

for:

for (инициализация: условие; приращение) { блок } 

foreach:

Существует две разновидности команды foreach, предназначенных для разных типов массивов:

foreach (массив as $элемент) { блок } 

foreach (массив as $ключ => $элемент) { блок } 

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


Передача параметров  в РНР-приложение

	



Параметры могут передаваться в РНР-приложение из адресной строки и могут быть получены из формы, вызвавшей это приложение.

Рассмотрим пример иллюстрирующий передачу параметра по адресной строке. Пусть в строке адреса написано: http://localhost/programma1.php? name=”Дмитрий”, тогда для того чтобы получить доступ к параметру name записанному в адресной строке необходимо написать следующий код к РНР-приложении:

$name = $HTTP_GET_VARS[‘name’];

Теперь если написать код echo ‘Имя = ‘.$name; , браузер отобразит строку «Имя = Дмитрий».

Так же можно получить доступ к любому полю формы, как к переменной по имени этого поля. Для этого можно использовать 3 способа доступа: короткий, средний и длинный. 

Короткий стиль наиболее удобен в работе, для того, чтобы получить доступ к полю, нужно просто создать переменную с таким же именем, как и поле формы. Но этот стиль требует установление параметра register_globals = on в ini файле php.

Средний стиль не требует дополнительных настроек, впрочем как и длинный. Но средний стиль работает только с версией РНР 4.0 и выше. Его синтаксис: $имя_переменной = $ _POST(GET) [‘имя_поля’];

Длинный стиль наиболее практичный, т.к. он работает на любой версии РНР: $имя_переменной = $HTTP_POST(GET)_VARS[‘имя_поля’];


Работа с MySQL сервером и функции MySQL





Для корректной работы РНР и MySQL вначале требуется подключиться к серверу MySQL. Это выполняет функция, общий вид которой выглядит следующим образом: 

resource mysql_connect ([string server [, string username [, string password [, bool new_link]]]]);

Затем нужно выбрать базу данных, с которой будет работать приложение:

bool mysql_select_db (string database_name [, resource link_identifier]);

После выбора базы данных строим SQL-запрос и выполняем его при помощи функции: resource mysql_query (string query [, resource link_identifier [, int result_mode]]).

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

int mysql_num_rows (resource result);

array mysql_fetch_array (resource result [, int result_type]);


Структурная схема ПО web-сервера





Посетитель Интернет-сайта может просматривать только коды HTML страниц, он не видит работы РНР и MySQL. Работу с РНР-приложениями и базами данных MySQL осуществляет сервер, на котором установлен РНР-интерпритатор и СУБД MySQL. После выполнения какого-либо РНР-кода, сервер возвращает посетителю сайта HTML страницу, сам РНР-код посетитель просмотреть не может. 

Для того чтобы работать с базами данных MySQL, нужен РНР-интерпритатор. Без него сервер не сможет работать с базами данных MySQL. 

Ниже показана схема взаимодействия посетителя с базами данных и РНР-приложениями.



Посетитель сайта

WEB-сервер

РНР-интерпритатор

РНР-приложение

СУБД MySQL



 БД

Рисунок 1. Взаимодействие посетителя сайта с РНР-приложениями и базами данных MySQL.


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





В будущую базу данных, которая будет называться “ db_06_ob” необходимо включить следующие данные об оборудовании и заказщиках.

Для того чтобы хранить выше перечисленные данные в базе данных необходимо создать следующие таблицы: “obor” – для хранения данных об оборудовании: идентификатор оборудования, идентификатор фирмы производителя, идентификатор типа оборудования, марка и цена; “zak” – для хранения данных о заказщиках: идентификатор заказщика, Ф.И.О., адрес, телефон и количество приобретаемого оборудования; “firma” – для хранения данных о фирме производителе: идентификатор фирмы, идентификатор страны и название фирмы; “strana” – для хранения данных о стране производителе: идентификатор страны и название страны; “tip” – для хранения данных о типе оборудования: идентификатор типа оборудования и тип оборудования. 

Для создания базы данных необходимо на главной странице программы phpMySQL_Admin в поле «создать новую БД» ввести имя базы данных и нажать кнопку «Создать». Рисунок 2 иллюстрирует эту операцию. 



Рисунок 2. Создание новой БД.

В открывшемся окне вводим название новой таблицы:



Рисунок 3. Создание таблицы “obor”.

Потом открывается окно, в котором создаем поля этой таблицы:



Рисунок 4. Создание полей таблицы “obor”.

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

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


Составление web-страниц, с которыми будет работать пользователь



Итак, мы имеем базу данных, с которой пользователь будет выполнять определенные действия посредством приложений РНР. Сначала создадим HTML страницы, с которых будут вызываться приложения РНР.



Главная страница (Index.html)

На этой странице будут помещены приветствие и четыре ссылки на определённом фоне. Именно с нее и будут вызываться приложения РНР. Здесь и далее будут использоваться фон и шрифты из файла style.css.



<h1>Учёт оборудования</h1>

<br>

<h3>Добро пожаловать на наш сайт!!! На этом сайте Вы можете просмотреть списки имеющегося в наличии оборудования и заказать его. Доставка по Белгороду БЕСПЛАТНО!!!</h3> 

<br>

<h3><a href='looko.php?part=look'>Оборудование</a></h3>

<h3><a href='lookf.php'>Фирмы производители</a></h3>

<h3><a href='lookz.php?part=start'>Список Ваших заказов</a></h3>

<br>

<h4>С предложениями по улучшению сайта и с различными вопросами обращайтесь к <a href='sozd.html'>создателю сайта</a>.</h4>



В результате получилась страничка, которая показана на рисунке 5.



Рисунок 5. Интерфейс главной страницы сайта.



Страница «О создателе» (sozd.html)

Создадим страницу «О создателе». Пусть она будет называться sozd.html. На ней разместим данные о создателе данного сайта и ссылку для перехода на главную страничку.



<h1>О создателе</h1>

<br>

<h3>Создателем данного сайта является студент второго курса группы 140606 факультета Компьютерных Наук и Телекоммуникаций Бредихин Александр Владимирович.</h3>

<br>

<h3><a href = "index.html">Вернуться на главную</a></h3> 



В результате получится страничка, которая показана на рисунке 6.



Рисунок 6. Страничка О создателе.




Написание РНР-кода, обрабатывающего БД

 

Просмотр записей в БД

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

Процедура вывода в окно браузера записей реализована в файлах lookf.php (фирмы-изготовители), looko.php (список оборудования) и lookz.php (заказы посетителей сайта).

Я рассмотрю отображение записей обо всех имеющихся в базе данных об оборудовании. Для того чтобы просмотреть весь список оборудований, посетителю сайта нужно просто щелкнуть по ссылке «Оборудование» и ему будет показан полный список записей об оборудовании, имеющегося в базе данных. 

При этом загружается файл looko.php, в который передается по строке адреса параметры part=look.

Сначала подключаемся к СУБД MySQL и выбираем базу данных, с которой будем работать:



$connection = @mysql_connect("localhost", "root") or die("Could not connect to MySQL server!"); 

$bd_name = @mysql_select_db("db_06_ob") or die ("Ошибка открытия базы данных");



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

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



$sql = 'SELECT firma.firma, obor.marka, tip.tip, obor.price, obor.ido FROM obor, firma, tip WHERE firma.idf = obor.idf AND tip.idt = obor.idt LIMIT 0,100';

$result = mysql_query($sql);



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



$i=1;

echo '<table width = 100% border = 1><tr>

<td><p class = "header">№ п.п</p></td>

<td><p class = "header">Фирма</p></td>

<td><p class = "header">Марка</p></td>

<td><p class = "header">Тип</p></td>

<td><p class = "header">Цена</p></td></tr>';

while ($row=mysql_fetch_array($result))

{

echo '<tr>

<td><p>'.$i.'</p></td>

<td><p>'.$row[0].'</p></td>

<td><p>'.$row[1].'</p></td>

<td><p>'.$row[2].'</p></td>

<td><p>'.$row[3].'</p></td>

<td><p><a href = "add.php?part=start&ido='.$row[4].'">Заказать</a></p></td></tr>';

$i++;

};

echo '</table>';



В результате работы в окне браузера появится таблица, в которую будут внесены все имеющиеся записи в базе данных:



Рисунок 7. Таблица всего имеющегося оборудования.



Добавление записи в БД

Если посетитель щелкнет по ссылке «Заказать» из таблицы оборудования, которая показана на рисунке 7, запустится РНР-приложение add.php, в котором добавляется запись о новом заказе в базу данных. При этом передаются параметры part=start и идентификатор записи оборудования.



$part = $_GET['part'];

$ido = $_GET['ido'];

Сначала создадим новую переменную, которой присвоим значение текстовое значение кода на  HTML, генерирующего нужную нам форму для ввода пользователем своих данных:



$form = "<form action = 'add.php' method = get>

<table width = 100%>

<tr><td width = 20%><p>Ф. И. О.</p></td>

<td><input type = 'text' size = 50 maxlength = 50 name = 'fio'></td></tr>

<tr><td><p>Адрес</p></td>

<td><input type = 'text' size = 50 maxlength = 50 name = 'adres'></td></tr>

<tr><td><p>Номер телефона</p></td>

<td><input type = 'text' size = 25 maxlength = 50 name = 'tel'></td></tr>

<tr><td><p>Количество</p></td>

<td><input type = 'text' size = 15 maxlength = 50 name = 'kol' value = '1'></td></tr>

<tr><td></td>

<td><br><input type = 'submit' value = 'Заказать'></td></tr>

<input type = hidden name = part value = 'go'>

<input type = hidden name = ido value = '$ido'>

</table>

</form>";



Рисунок 8. Форма для ввода данных посетителем.

Подключаемся к СУБД и выбираем базу данных:



$connection = @mysql_connect("localhost", "root") or die("Ошибка подключение к СУБД MySQL!"); 

$bd_name = @mysql_select_db("db_06_ob") or die ("Ошибка открытия базы данных");



Затем выводим в окно браузера форму ввода данных



if ($part=="start")

{

echo "<h2>Введите свои персональные данные</h2><br>$form";

}



После того, как пользователь заполнит форму и нажмет кнопку «Заказать», снова загрузится файл add.php, которому на этот раз переданы следующие параметры: part=go, идентификатор записи выбранного оборудования и данные, введенные пользователем.

В начале запоминаются переданные данные и проверяется заполнение формы, если форма заполнена не полностью – снова отображаем ее:



if ($part == "go")

{

$fio = $_GET['fio'];

$adres = $_GET['adres'];

$tel = $_GET['tel'];

$kol = $_GET['kol'];

$ido = $_GET['ido'];

if (($fio == "") or ($adres=="") or ($tel == ""))

{

echo '<h2>Вы не полностью заполнили форму</h2>'.$form;

}



Если пользователь заполнил все поля, то подключаемся к СУБД MySQL, выбираем базу данных и выполняем запрос, добавляющий запись в базу данных:



else 

{

$sql = 'INSERT INTO `zak` ( `idz` , `ido` , `fio` , `adres` , `tel` , `kol` ) 

VALUES (\'\', \''.$ido.'\', \''.$fio.'\', \''.$adres.'\', \''.$tel.'\', \''.$kol.'\');';

$result = mysql_query($sql);

echo '<h2>Заказ добавлен</h2>';

echo '<h3>Мы благодарим Вас за то, что Вы выбрали нас.</h3>';

}



В результате добавления новой записи, в браузере будет отображено соответствующее сообщение:



Рисунок 9. Окно браузера в результате успешного добавления новой записи.



Удаление записей из БД

Если посетитель захочет просмотреть список своих заказов, то, после того как он, перейдя по ссылке «Список ваших заказов»,  введет свои данные в появившуюся форму, ему будет представлен список его заказов. Пример такого списка показан на рисунке 10.



Рисунок 10. Список заказов одного из  клиентов.

В случае если пользователь решит удалить какой-либо свой заказ, ему просто потребуется щелкнуть по ссылке «Снять заказ» и эта запись будет удалена из базы данных. 



Рисунок 11. Удаление записи

Рассмотрим более подробно процедуру удаления записи.

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

Подключаемся к MySQL и выбираем базу данных:



$conn = @mysql_connect("localhost","root") or die ("Ошибка соединения с MySQL");

$db = @mysql_select_db("db_06_ob") or die ("Ошибка подключения к базе данных"); 



Запоминаем идентификатор записи, которую надо удалить, и название таблицы, из которой будет удалена запись.



$idz = $_GET['idz'];

$tab = $_GET['tab'];



Удаляем запись, идентификатор которой был передан по строке адреса:



$sql = 'DELETE FROM '.$tab.' WHERE idz = \''.$idz.'\' LIMIT 1';

$result = mysql_query($sql); 




Заключение





В процессе выполнения данного курсового проекта я улучшил свои навыки по работе с РНР и MySQL, также я улучшил навыки и умения по работе с методической и справочной литературой. 

В результате проделанной работы, я изучил основы работы MySQL баз данных и языка программирования для Интернет PHP и  научился с ними работать. Так же я разработал Интернет-приложение «Учёт оборудования», используя СУБД MySQL и  язык программирования для Интернет РНР, который будет служить пользовательским интерфейсом для работы с данной базой данных.

В ходе разработки я также улучшил свои знания и умения по работе с HTML страницами. Также я научился передавать различные параметры РНР-приложению через  адресную строку.

Еще я убедился в том, что РНР и MySQL на самом деле очень мощные среды программирования и хранения данных, и они очень быстро работают, и занимаю очень мало места на жестком диске.


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





«Разработка Web-приложений с помощью PHP и MySQL». Л.Веллинг и Л.Томсон

Справочники по РНР и MySQL. http://www.php.su/books/

Файлы справок по phpMySQL_Admin

Сайт http://www.php.ru

Сайт http://www.mysql.ru




Приложение 1. SQL запрос для построения базы данных





-- phpMyAdmin SQL Dump

-- version 2.6.1

-- http://www.phpmyadmin.net

-- Хост: localhost

-- Время создания: Дек 21 2007 г., 22:16

-- Версия сервера: 4.1.8

-- Версия PHP: 4.3.10

-- 

-- БД: `db_06_ob`

-- 

-- --------------------------------------------------------

-- 

-- Структура таблицы `firma`

-- 

CREATE TABLE `firma` (

  `idf` int(11) NOT NULL auto_increment,

  `ids` int(11) NOT NULL default '0',

  `firma` text NOT NULL,

  PRIMARY KEY  (`idf`)

) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=6 ;

-- 

-- Дамп данных таблицы `firma`

-- 

INSERT INTO `firma` VALUES (1, 1, 'Tumen');

INSERT INTO `firma` VALUES (2, 2, 'Samsung');

INSERT INTO `firma` VALUES (3, 3, 'Stinol');

INSERT INTO `firma` VALUES (4, 1, 'Podolsk');

INSERT INTO `firma` VALUES (5, 3, 'Grand');

-- --------------------------------------------------------

-- 

-- Структура таблицы `obor`

-- 

CREATE TABLE `obor` (

  `ido` int(11) NOT NULL auto_increment,

  `idf` int(11) NOT NULL default '0',

  `idt` int(11) NOT NULL default '0',

  `marka` text NOT NULL,

  `price` int(11) NOT NULL default '0',

  PRIMARY KEY  (`ido`)

) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=11 ;

-- 

-- Дамп данных таблицы `obor`

-- 

INSERT INTO `obor` VALUES (1, 1, 1, 'mexan.torgovie 6 kg', 2000);

INSERT INTO `obor` VALUES (2, 2, 1, 'elektr.torgovie 10 kg', 3500);

INSERT INTO `obor` VALUES (3, 2, 1, 'elektr.porcionnie', 2500);

INSERT INTO `obor` VALUES (4, 1, 1, 'mexan.fasovochnie', 1500);

INSERT INTO `obor` VALUES (5, 3, 2, 'xolodilnaia RGW', 7000);

INSERT INTO `obor` VALUES (6, 3, 2, 'prilavok', 8000);

INSERT INTO `obor` VALUES (7, 4, 3, 'Merkurij', 3000);

INSERT INTO `obor` VALUES (8, 4, 3, 'Minika-100F', 5000);

INSERT INTO `obor` VALUES (9, 5, 3, 'EKR-2102K', 8000);

INSERT INTO `obor` VALUES (10, 5, 3, 'ER 250 RF', 6000);

-- --------------------------------------------------------

-- 

-- Структура таблицы `strana`

-- 

CREATE TABLE `strana` (

  `ids` int(11) NOT NULL auto_increment,

  `strana` text NOT NULL,

  PRIMARY KEY  (`ids`)

) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=4 ;

-- 

-- Дамп данных таблицы `strana`

-- 

INSERT INTO `strana` VALUES (1, 'Rossia');

INSERT INTO `strana` VALUES (2, 'China');

INSERT INTO `strana` VALUES (3, 'Germania');

-- --------------------------------------------------------

-- 

-- Структура таблицы `tip`

-- 

CREATE TABLE `tip` (

  `idt` int(11) NOT NULL auto_increment,

  `tip` text NOT NULL,

  PRIMARY KEY  (`idt`)

) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=4 ;

-- 

-- Дамп данных таблицы `tip`

-- 

INSERT INTO `tip` VALUES (1, 'vesi');

INSERT INTO `tip` VALUES (2, 'vetrina');

INSERT INTO `tip` VALUES (3, 'kassovij apparat');

-- --------------------------------------------------------

-- 

-- Структура таблицы `zak`

-- 

CREATE TABLE `zak` (

  `idz` int(11) NOT NULL auto_increment,

  `ido` int(11) NOT NULL default '0',

  `fio` text NOT NULL,

  `adres` text NOT NULL,

  `tel` int(11) NOT NULL default '0',

  `kol` int(11) NOT NULL default '0',

  PRIMARY KEY  (`idz`)

) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=5 ;

-- 

-- Дамп данных таблицы `zak`

-- 

INSERT INTO `zak` VALUES (1, 2, 'Ivanov Ivan Ivanovich', 'Gubkin Lenina 15 kv 17', 547854, 3);

INSERT INTO `zak` VALUES (2, 1, 'qwerty', 'qwerty', 123, 5);


Приложение 2. HTML-коды страниц сайта и таблица стилей





Каскадная таблица стилей «style.css»

body {background-image : url("image/fon.jpg")} H1 {text-align:center; font style:60pt; color:blue} H2 {text-align:center; font style:30pt; color:green} H3 {text-align:center; font style:20pt; color:red} H4 {text-align:center; font style:15pt} p {text-align:center; font-size:14pt; text-indent:15pt; font-family:Comic Sans MS; color:black} .header {text-align:center; font-size:14pt; font-weight:bold;}



Index.html

<html><head>

<title>Учёт оборудования</title>

<link rel="stylesheet" type="text/css" href="style.css"></head><body>

<h1>Учёт оборудования</h1><br>

<h3>Добро пожаловать на наш сайт!!! На этом сайте Вы можете просмотреть списки имеющегося в наличии оборудования и заказать его. Доставка по Белгороду БЕСПЛАТНО!!!</h3> <br>

<h3><a href='looko.php?part=look'>Оборудование</a></h3>

<h3><a href='lookf.php'>Фирмы производители</a></h3>

<h3><a href='lookz.php?part=start'>Список Ваших заказов</a></h3><br>

<h4>С предложениями по улучшению сайта и с различными вопросами обращайтесь к <a href='sozd.html'>создателю сайта</a>.</h4></body></html>



sozd.html

<html><head>

<title>Учёт оборудования</title>

<link rel="stylesheet" type="text/css" href="style.css"></head><body>

<h1>О создателе</h1><br>

<h3>Создателем данного сайта является студент второго курса группы 140606 факультета Компьютерных Наук и Телекоммуникаций Бредихин Александр Владимирович.</h3><br>

<h3><a href = "index.html">Вернуться на главную</a></h3></body></html>                

     


Приложение 3. РНР-коды страниц сайта





add.php

<html><head>

<title>Учёт оборудования</title>

<link rel='stylesheet' type='text/css' href='style.css'>

</head><body>

<h1>Добавление нового заказа</h1>

<?php

$conn = @mysql_connect("localhost","root") or die ("Ошибка соединения с MySQL");

$db = @mysql_select_db("db_06_ob") or die ("Ошибка подключения к базе данных");

$part = $_GET['part'];

$ido = $_GET['ido'];

$form = "<form action = 'add.php' method = get>

<table width = 100%>

<tr><td width = 20%><p>Ф. И. О.</p></td>

<td><input type = 'text' size = 50 maxlength = 50 name = 'fio'></td></tr>

<tr><td><p>Адрес</p></td>

<td><input type = 'text' size = 50 maxlength = 50 name = 'adres'></td></tr>

<tr><td><p>Номер телефона</p></td>

<td><input type = 'text' size = 25 maxlength = 50 name = 'tel'></td></tr>

<tr><td><p>Количество</p></td>

<td><input type = 'text' size = 15 maxlength = 50 name = 'kol' value = '1'></td></tr>

<tr><td></td>

<td><br><input type = 'submit' value = 'Заказать'></td></tr>

<input type = hidden name = part value = 'go'>

<input type = hidden name = ido value = '$ido'>

</table></form>";

if ($part == "start")

{echo '<h2>Заполните форму:</h2><br>'.$form;}

if ($part == "go")

{$fio = $_GET['fio'];

$adres = $_GET['adres'];

$tel = $_GET['tel'];

$kol = $_GET['kol'];

$ido = $_GET['ido'];

if (($fio == "") or ($adres=="") or ($tel == ""))

{echo '<h2>Вы не полностью заполнили форму</h2>'.$form;}

else 

{$sql = 'INSERT INTO `zak` ( `idz` , `ido` , `fio` , `adres` , `tel` , `kol` ) 

VALUES (\'\', \''.$ido.'\', \''.$fio.'\', \''.$adres.'\', \''.$tel.'\', \''.$kol.'\');';

$result = mysql_query($sql);

echo '<h2>Заказ добавлен</h2>';

echo '<h3>Мы благодарим Вас за то, что Вы выбрали нас.</h3>';}}?>

<br><h3><a href = "index.html">Вернуться на главную</a></h3>

</body></html>



delete.php

<html><head>

<title>Учёт оборудования</title>

<link rel = 'stylesheet' type = 'text/css' href = 'style.css'>

</head><body>

<h1>Удаление заказа</h1>

<?php

$conn = @mysql_connect("localhost","root") or die ("Ошибка соединения с MySQL");

$db = @mysql_select_db("db_06_ob") or die ("Ошибка подключения к базе данных");

$idz = $_GET['idz'];

$tab = $_GET['tab'];

$sql = 'DELETE FROM '.$tab.' WHERE idz = \''.$idz.'\' LIMIT 1';

$result = mysql_query($sql);

echo '<h2>Запись удалена</h2>';?>

<br><h3><a href = "index.html">Вернуться на главную</a></h3>

</body></html>



lookf.php

<html><head>

<title>Учёт оборудования</title>

<link rel = 'stylesheet' type = 'text/css' href = 'style.css'>

</head><body>

<h1>Фирмы производители</h1>

<?php

$conn = @mysql_connect("localhost","root") or die ("Ошибка соединения с MySQL");

$db = @mysql_select_db("db_06_ob") or die ("Ошибка подключения к базе данных");

$sql = 'SELECT firma.firma, strana.strana, firma.idf FROM firma, strana WHERE strana.ids = firma.ids LIMIT 0,100';

$result = mysql_query($sql);

$i = 1;

echo '<table width = 100% border = 1><tr>

<td><p class = "header">№ п.п</p></td>

<td><p class = "header">Фирма</p></td>

<td><p class = "header">Страна</p></td></tr>';

while ($row=mysql_fetch_array($result))

{echo '<tr>

<td><p>'.$i.'</p></td>

<td><p>'.$row[0].'</p></td>

<td><p>'.$row[1].'</p></td>

<td><p><a href = "looko.php?part=firm&idf='.$row[2].'">Товары</a></p></td></tr>';

$i++;};

echo '</table>';?>

<br><h3><a href = "index.html">Вернуться на главную</a></h3>

</body></html>



looko.php

<html><head>

<title>Учёт оборудования</title>

<link rel = "stylesheet" type = "text/css" href = "style.css">

</head><body>

<h1>Список оборудования</h1>

<?php

$conn = @mysql_connect("localhost","root") or die ("Ошибка соединения с MySQL");

$db = @mysql_select_db("db_06_ob") or die ("Ошибка подключения к базе данных");

$part = $_GET['part'];

if ($part=="look")

{$sql = 'SELECT firma.firma, obor.marka, tip.tip, obor.price, obor.ido FROM obor, firma, tip WHERE firma.idf = obor.idf AND tip.idt = obor.idt LIMIT 0,100';

$result = mysql_query($sql);

$i=1;

echo '<table width = 100% border = 1><tr>

<td><p class = "header">№ п.п</p></td>

<td><p class = "header">Фирма</p></td>

<td><p class = "header">Марка</p></td>

<td><p class = "header">Тип</p></td>

<td><p class = "header">Цена</p></td></tr>';

while ($row=mysql_fetch_array($result))

{echo '<tr>

<td><p>'.$i.'</p></td>

<td><p>'.$row[0].'</p></td>

<td><p>'.$row[1].'</p></td>

<td><p>'.$row[2].'</p></td>

<td><p>'.$row[3].'</p></td>

<td><p><a href = "add.php?part=start&ido='.$row[4].'">Заказать</a></p></td></tr>';

$i++;};

echo '</table>';}

if ($part=="firm")

{$idf = $_GET['idf'];

$sql = 'SELECT firma.firma, obor.marka, tip.tip, obor.price, obor.ido FROM obor, firma, tip WHERE firma.idf = obor.idf AND tip.idt = obor.idt AND obor.idf = '.$idf.' LIMIT 0,100';

$result = mysql_query($sql);

$i=1;

echo '<table width = 100% border = 1><tr>

<td><p class = "header">№ п.п</p></td>

<td><p class = "header">Фирма</p></td>

<td><p class = "header">Марка</p></td>

<td><p class = "header">Тип</p></td>

<td><p class = "header">Цена</p></td></tr>';

while ($row=mysql_fetch_array($result))

{echo '<tr>

<td><p>'.$i.'</p></td>

<td><p>'.$row[0].'</p></td>

<td><p>'.$row[1].'</p></td>

<td><p>'.$row[2].'</p></td>

<td><p>'.$row[3].'</p></td>

<td><p><a href = "add.php?part=start&ido='.$row[4].'">Заказать</a></p></td></tr>';

$i++;};

echo '</table>';}?>

<br><h3><a href = "index.html">Вернуться на главную</a></h3>

</body></html>



lookz.php

<html><head>

<title>Учёт оборудования</title>

<link rel = 'stylesheet' type = 'text/css' href = 'style.css'>

</head><body>

<h1>Просмотр заказов</h1>

<?php

$conn = @mysql_connect("localhost","root") or die ("Ошибка соединения с MySQL");

$db = @mysql_select_db("db_06_ob") or die ("Ошибка подключения к базе данных");

$part = $_GET['part'];

$form = "<form action = 'lookz.php' method = get>

<table width = 100%>

<tr><td width = 20%><p>Ф. И. О.</p></td>

<td><input type = 'text' size = 50 maxlength = 50 name = 'fio'></td></tr>

<tr><td><p>Адрес</p></td>

<td><input type = 'text' size = 50 maxlength = 50 name = 'adres'></td></tr>

<tr><td><p>Номер телефона</p></td>

<td><input type = 'text' size = 25 maxlength = 50 name = 'tel'></td></tr>

<tr><td></td>

<td><br><input type = 'submit' value = 'Показать'></td></tr>

<input type = hidden name = part value = 'go'>

</table>

</form>";

if ($part == "start")

{echo '<h2>Введите свои данные</h2>'.$form;}

if ($part == "go")

{$fio = $_GET['fio'];

$adres = $_GET['adres'];

$tel = $_GET['tel'];

if (($fio == "") or ($adres=="") or ($tel == ""))

{echo '<h2>Вы не полностью заполнили форму</h2>'.$form;}

else

{echo '<h2>Заказанные товары</h2><br>';

echo '<h3>Мы благодарим Вас за то, что Вы выбрали нас. Если Вы решили отказаться от заказа нажмите "Снять заказ"</h3>';

$sql = 'SELECT firma.firma, obor.marka, obor.price, zak.kol, zak.idz, obor.ido FROM zak, obor, firma WHERE firma.idf = obor.idf  AND obor.ido = zak.ido AND zak.fio = \''.$fio.'\' AND zak.adres = \''.$adres.'\' AND zak.tel = \''.$tel.'\' LIMIT 0,100';

$result = mysql_query($sql);

$i = 1;

echo '<table width = 100% border = 1><tr>

<td><p class = "header">№ п.п</p></td>

<td><p class = "header">Фирма</p></td>

<td><p class = "header">Марка</p></td>

<td><p class = "header">Цена</p></td>

<td><p class = "header">Количество</p></td></tr>';

$s = 0;

while ($row=mysql_fetch_array($result))

{$sum = $row[2]*$row[3];

echo '<tr><td><p>'.$i.'</p></td>

<td><p>'.$row[0].'</p></td>

<td><p>'.$row[1].'</p></td>

<td><p>'.$row[2].'</p></td>

<td><p>'.$row[3].'</p></td>

<td><p><a href = "delete.php?idz='.$row[4].'&tab=zak">Снять заказ</a></p></td></tr>';

$i++;

$s = $s + $sum;};

echo '<tr><td colspan = 6><p>Общая цена = '.$s.'</p></td></tr></table><br>';}}?>

<br><h3><a href = "index.html">Вернуться на главную</a></h3>

</body></html>


Приложение 4. Связи между таблицами







Рисунок 12. Связи между таблицами.







5