Смекни!
smekni.com

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

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

int mysql_num_rows (resource result);

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

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

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

Для того чтобы работать с базами данных MySQL, нужен РНР-интерпритатор. Без него сервер не сможет работать с базами данных 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 ("Ошибка открытия базы данных");