- •Лабораторная работа №9
- •9.4. Разработка пользовательского приложения на примере задачи производства и реализации продукции
- •9.4.1. Постановка задачи
- •9.4.2. Выбор программного обеспечения для реализации проекта
- •9.4.3. Разработка базы данных
- •9.4.3.1. Описание модели данных
- •9.4.3.2. Создание логической модели данных
- •9.4.3.3. Переход к физической модели данных
- •9.4.3.4. Генерация скрипта бд
- •9.4.4. Генерация базы данных на сервер
- •9.4.4.1. Создание бд путем разработки php-программ
- •1. Создание базы данных
- •2. Установка соединения, создание таблиц и связей
- •3. Проверка правильности создания бд
- •4. Заполнение таблиц данными
- •9.4.4.2. Создание бд c помощью модуля phpMyAdmin
- •9.4.4.3. Реализация бизнес-функций с помощью запросов
9.4.4.2. Создание бд c помощью модуля phpMyAdmin
Более простой, удобный и наглядный способ создания БД – создание при помощи модуля phpMyAdmin, который позволяет:
создать новую БД;
просмотреть состояние MySQL;
просмотреть системные переменные MySQL;
просмотреть процессы;
выполнить кодировку и сравнение;
просмотреть привелегии пользователей;
просмотреть имеющиеся БД;
выполнить экспорт БД;
и другое.
Создание БД с помощью модуля phpMyAdmin более детально описано в лабораторной работе №2.
Есть два способа создания таблиц БД в модуле phpMyAdmin: пошаговое создание в окне модуля, запуск SQL-скрипта создания объектов БД.
Так как SQL-скрипт был ранее получен при помощи ERStudio, то запуск данного скрипта будет более быстрым способом создания БД. На рис. 18 приведен пример запуска SQL-скрипта создания объектов БД.
Рис. 18. Результат запуска SQL-скрипта на выполнение
Рис. 19. Результат создания таблиц БД
Модуль phpMyAdmin также позволяет заполнять таблицы данными. Пример заполнения данными таблицы Predprijatie приведен на рис. 20, 21.
Рис. 20. Ввод данных в таблицу Predprijatie
Рис. 21. Результат добавления данных в таблицу
Далее приведены все таблицы заполненные первичными данными.
Рис. 22. Таблица Predprijatie
Рис. 23. Таблица Sirjo
Рис. 24. Таблица Izdelie
Рис. 25. Таблица Rasxod
Рис. 26. Таблица Realizacija
9.4.4.3. Реализация бизнес-функций с помощью запросов
Одной из бизнес функций является учет сырья на производство изделий.
Запрос, реализующий данную бизнес-функцию, выполненный в модуле phpMyAdmin представлен ниже.
SQL-запрос: SELECT Sirjo.Name_sr, Izdelie.Name_izd, Rasxod.Kol, Rasxod.Kol * Sirjo.Stoimost_edinici AS Цена FROM Sirjo, Izdelie, Rasxod WHERE Rasxod.Kod_sr = Sirjo.Kod_sr AND Izdelie.Kod_izd = Rasxod.Kod_izd LIMIT 0 , 30
Результат выполнения данного запроса представлен на рис. 27. Таким образом, данный запрос выводит информацию о наименовании сырья, наименовании изделия (для производства которого используется данное сырье), количестве единиц сырья, а также выводится рассчитанная стоимость закупки сырья на производство определенной продукции.
Рис. 27. Результат выполнения запроса
Реализуем данную бизнес-функцию ввиде php-скрипта. Текст скрипта приведен ниже.
<html>
<body>
<?php
$db = mysql_connect("localhost", "root");
mysql_select_db("Ychet_izdelij",$db);
$result = mysql_query("SELECT Sirjo.Name_sr, Izdelie.Name_izd, Rasxod.Kol, Rasxod.Kol * Sirjo.Stoimost_edinici AS Цена
FROM Sirjo, Izdelie, Rasxod
WHERE Rasxod.Kod_sr = Sirjo.Kod_sr
AND Izdelie.Kod_izd = Rasxod.Kod_izd
",$db);
if($myrow = mysql_fetch_array($result))
{
echo "<table border=1>\n";
echo "<tr><td>Наименование сырья</td><td>Наименование изделия</td><td>Количество сырья</td><td>Суммарная стоимость сырья</td></tr>\n";
do
{
printf("<tr><td>%s </td><td>%s </td><td>%s</td><td>%s </td></tr>\n", $myrow["Name_sr"], $myrow["Name_izd"],
$myrow["Kol"], $myrow["Цена"]);
}
while ($myrow = mysql_fetch_array($result));
echo "</table>\n";
}
else
{
echo "Sorry, no records were found!";
}
?>
</body>
</html>
Рис. 28. Реализация бизнес-функции «Учет сырья на производство изделий»
Рассмотрим следущую бизнес-функцию «Учет реализации изделий потребителями». Для реализации данной бизнес-функции напишем запрос, который будет выводить номер накладной, наименование предприятия, банковский счет, купленное данным предприятием изделие, количество купленных изделий, дату покупки, сумму покупки. Текст запроса представлен ниже:
SELECT Realizacija.Nom_nakl, Predprijatie.Name_pr, Predprijatie.BankSchet, Izdelie.Name_izd, Realizacija.Kol, Realizacija.Data_real, Realizacija.Kol * Izdelie.Stoimost_izd AS Сумма
FROM Predprijatie, Izdelie, Realizacija
WHERE Realizacija.Kod_pr = Predprijatie.Kod_pr
AND Izdelie.Kod_izd = Realizacija.Kod_izd
Результат выполнения данного запроса представлен на рис. 29.
Рис. 29. Реализация бизнес-функции «Учет реализации изделий потребителями»
Как и в предыдущем случае, реализуем данную бизнес-функцию в виде php-скрипта. Текст скрипта приведен ниже.
<html>
<body>
<?php
$db = mysql_connect("localhost", "root");
mysql_select_db("Ychet_izdelij",$db);
$result = mysql_query("SELECT Realizacija.Nom_nakl, Predprijatie.Name_pr, Predprijatie.BankSchet, Izdelie.Name_izd, Realizacija.Kol, Realizacija.Data_real, Realizacija.Kol * Izdelie.Stoimost_izd AS Сумма
FROM Predprijatie, Izdelie, Realizacija
WHERE Realizacija.Kod_pr = Predprijatie.Kod_pr
AND Izdelie.Kod_izd = Realizacija.Kod_izd",$db);
if($myrow = mysql_fetch_array($result))
{
echo "<table border=1>\n";
echo "<tr><td>Номер накладной</td><td>Наименование предприятия</td><td>Банковский счет</td><td>Наименование изделия</td><td>Количество</td><td>Дата</td><td>Сумма</td></tr>\n";
do
{
printf("<tr><td>%s </td><td>%s </td><td>%s </td><td>%s </td><td>%s </td><td>%s</td><td>%s </td></tr>\n",
$myrow["Nom_nakl"], $myrow["Name_pr"],
$myrow["BankSchet"], $myrow["Name_izd"], $myrow["Kol"], $myrow["Data_real"], $myrow["Сумма"]);
}
while ($myrow = mysql_fetch_array($result));
echo "</table>\n";
}
else
{
echo "Sorry, no records were found!";
}
?>
</body>
</html>
Рис. 30. Реализация бизнес-функции «Учет реализации изделий потребителями»
Также в виде бизнес-функций выступают: ведение справочника предприятий, ведение справочника сырья и ведение справочника изделий. Запросы для реализации данных бизнес-функций представляют собой обычные запросы на выборку, которые были рассмотрены выше.
Приложение 1
Вариант 1. Предметная область - специализированный магазин по продаже аудио-, видеотехники и деталей к ним.
Решаемые задачи: учет товаров и их поставщиков.
Запросы: Упорядочение по полям: фирма - поставщик, цена товара.
Поиск: фирма ХХ и все, что с ней связано; магнитофоны УУ.
Выборка: видеомагнитофоны по цене от X до Y; телевизоры фирмы ХХ.
Вычисления: количество типов товаров, поставляемых фирмой ХХ; средняя цена на телевизоры фирмы ХХ.
Ограничения целостности: а) цена товара более 0 руб, б) при поступлении нового товара сведения о поставщике должны присутствовать в БД, в) при удалении поставщика сведения о его товарах также удаляются.
Табличный отчет: информация о телевизорах (марка, цена, название, адрес и телефон фирмы -поставщика), группировка по полю “фирма”.
Произвольный отчет: Гарантийный талон на товар (марка и цена товара, фирма-производитель, срок гарантии, название и адрес магазина )
Вариант 2. Предметная область - отдел компьютерной техники в магазине.
Решаемые задачи: выдача сведений о товарах (описание, цена в руб. и у.е., количество на складе, марка и т.п.) и о их реализации (марка товара, продавец, дата продажи).
Запросы: Упорядочение по полям: тип товара и количество на складе; тип товара и цена.
Поиск: характеристики компьютера марки ХХ; продажи продавца УУ в день ХХ.
Выборка: принтеры по цене не более Y; товары, которых на складе осталось меньше 5 штук.
Вычисления: количество продаж за январь; сумма продаж продавца УУ.
Табличный отчет: информация о товарах; группировка по типам (отдельно - принтеры, компьютеры, мониторы и т.п.).
Произвольный отчет: рекламный ярлык к товару (название, характеристики, цена)
Ограничения целостности: а) цена в рублях должна соответствовать цене в у.е. б) реализуемый товар должен быть на складе.
Вариант 3. Предметная область - справочник о странах мира и городах (их расположении на континентах, столицах, названии валюты, численности населения, данные о крупнейших городах и числе жителей в них).
Запросы: Упорядочение по полям: материк, число жителей.
Поиск: сведения о заданной стране; в какой стране ходят "тугрики". Выборка: города - "миллионеры" ; крупные города в Азии.
Вычисления: количество крупных городов в стране ХХ; численность населения континента УУ;
Ограничения целостности: а) число жителей города - не менее 50 тыс. б) при вводе данных о городе в справочнике должны присутствовать сведения о стране, в которой он находится. Табличный отчет: информация о странах (страна, столица, численность населения, деньги); группировка по материкам. Произвольный отчет: наклейки для стенда с фотографиями столиц Европы.
Вариант 4. Предметная область - библиотека.
Решаемые задачи: выдача справок о наличии книг, учет читателей и выдачи книг; поиск читателей - должников.
Запросы: Упорядочение по полям: автор книги, ФИО читателя.
Поиск: сведения о заданном читателе по ФИО; наличие заданной книги (известен автор и название).
Выборка: книги автора ХХ; список читателей - должников, держащих книгу более месяца.
Вычисления: а) количество читателей - должников на текущий день; б) сколько книг выдано за январь.
Ограничения целостности: а) цена книги не менее 5 руб.; б) сведения о выдаваемой книге должны быть в каталоге; в) ФИО и адрес читателя - не пустые значения.
Табличный отчет: список должников (ФИО, адрес, место работы), группировка по месту работы. Произвольный отчет: Жалоба на работу о должниках.
Вариант 5. Предметная область - контора по обмену и продаже недвижимости.
Решаемые задачи - выдача справок о характеристиках недвижимости (например, - район, площадь квартиры, количество комнат, этажность, цена, адрес и т.п.), и заявках клиентов (обмен, купля или продажа, адрес и телефон, дата заявки)
Запросы: Упорядочение по полям: ФИО клиентов, площадь квартир;
Поиск: координаты клиента по фамилии, по телефону.
Выборка: трехкомнатные квартиры не на первом этаже; квартиры площадью от АА до ВВ в районе Вешняки;
Вычисления: средняя цена трехкомнатной квартиры; суммарное число заявок по районам города;
Ограничения целостности: а) дата заявки не позже текущего числа; б) если имеются данные о квартире, то должны быть и сведения о заявителе; в) ФИО и адрес клиента - не пустые значения.
Табличный отчет: список квартир; группировка по районам и количеству комнат.
Произвольный отчет: письмо клиенту о найденном варианте сделки.
Вариант 6. Предметная область - отдел кадров фирмы.
Решаемые задачи - учет сотрудников и их распределения по отделам фирмы. Как справочные данные используется список отделов фирмы.
Запросы: Упорядочение: сотрудники по отделам, по должностям. Поиск: все сведения о сотруднике ФИО; как позвонить сотруднику УУ.
Выборка: - сотрудники отдела NN; отделы, телефон которых начинается с Х.
Вычисления: количество сотрудников в отделе NN; фонд заработной платы по отделам.
Ограничения целостности: а) каждый сотрудник может работать только в одном из описанных в справочнике отделов б) ФИО сотрудника - не пустое значение; в) табельный номер сотрудника должен быть уникальным.
Табличный отчет: список сотрудников по отделам, итог - фонд зарплаты каждого отдела и общий фонд по фирме.
Произвольный отчет: Извещение каждому начальнику отдела о совещании у директора.
Вариант 7. Предметная область - бухгалтерия предприятия.
Решаемые задачи - учет труда и зарплаты работников; табель учета рабочего времени составляется по подразделениям и включает ФИО работника, должность, количество отработанных часов и количество нерабочих дней за месяц. Как справочник используется список подразделений фирмы.
Запросы: Упорядочение: сотрудники по подразделениям и алфавиту внутри подразделения; сотрудники по количеству нерабочих дней.
Поиск: все сведения о сотруднике по ФИО, по табельному номеру.
Выборка: табель учета рабочего времени отдела NN за месяц ХХ; сведения о работе сотрудника ХХ за год.
Вычисления: среднее количество нерабочих дней по отделам; суммарное количество нерабочих дней по месяцам за текущий год;
Ограничения целостности: а) каждый сотрудник может работать только в одном из описанных в справочнике подразделений б) количество нерабочих дней на превышает общее число дней месяца, в) число отработанных часов не более, чем максимально возможное за месяц (при 41 часовой рабочей неделе).
Табличный отчет: табель учета рабочего времени ( группировка - по отделам), итог - общий фонд рабочего времени, нерабочих дней по отделам и по фирме.
Произвольный отчет: Листок учета рабочего времени для каждого работника за месяц.
Вариант 8. Предметная область - деканат института. Решаемые задачи - контроль посещаемости занятий; справочные данные - список студентов (ФИО, группа, адрес и т.п.), график занятий (предмет, вид занятия, преподаватель, группа и т.п.), список групп.
Запросы: Упорядочение: студенты по группам, по алфавиту,
Поиск: все сведения о студенте по номеру зачетки, староста группы ХХ;
Выборка: ФИО студентов, пропустивших лабораторные работы по предмету ХХ; табель посещаемости по предмету УУ в группе УУ за осенний семестр.
Вычисления: количество прогульщиков в группе ХХ за январь, суммарное число пропусков занятий по группам и предметам;
Ограничения целостности: а) каждый студент учится в одной из описанных групп; б) количество пропущенных часов не более 2-х на одно занятие, в) Табличный отчет: табель посещаемости за семестр - группировка по предметам и группам; итог - суммарное число пропусков.
Произвольный отчет: Извещение каждому студенту - прогульщику о явке в деканат.
Вариант 9. Предметная область - приемная комиссия в вузе.
Решаемые задачи - учет абитуриентов (личные сведения, о законченном учебном заведении, на какую специальность поступает), используется справочник учебных заведений и справочник специальностей.
Запросы: Упорядочение по полям: ФИО абитуриента, специальность.
Поиск: все сведения об абитуриенте по первым буквам фамилии; выпускающая кафедра и полное название специальности 0401.
Выборка: абитуриенты, закончившие техникум ХХ; абитуриенты, поступающие на специальность ХХ.
Вычисления: количество абитуриентов закончивших Харьковский университет радиоэлектроники; средний возраст абитуриентов данной специальности.
Ограничения целостности: а) каждый абитуриент может поступить только на те специальности, которые есть в вузе; б) возраст абитуриента не более 35 лет;
Табличный отчет: список абитуриентов, группировка по специальностям, сортировка по алфавиту.
Произвольный отчет: картотека абитуриентов (на карточке все данные об абитуриенте).
Вариант 10. Предметная область - больница.
Решаемые задачи - учет больных (поступление, выписка, диагноз, лечение, распределение по палатам, страховой полис и т.п.), расчет стоимости лечения. Используется справочник лекарств (название, цена, показания). За каждой палатой закреплен лечащий врач (может быть один врач на несколько палат).
Запросы: Упорядочение по полям: диагноз, номер палаты, дата поступления. Поиск: все сведения о больном ХХ; данные о лекарстве УУ.
Выборка: - больные, поступившие в день УУ с диагнозом ММ (выдать ФИО и палату); список выписанных на текущий день больных.
Вычисления: количество больных в палате ХХ; суммарная стоимость лечения больного УУ.
Ограничения целостности: а) номера палат в заданных пределах; б) назначенные лекарства должны быть в справочнике; номер страхового полиса должен быть уникальным для каждого больного.
Табличный отчет: список больных, сгруппированных по палатам (ФИО, диагноз, дата поступления, лечащий врач).
Произвольный отчет: счет за лечение (ФИО, диагноз, номер страховки и сумма за лечение).
Вариант 11. Предметная область - клуб туристов.
Решаемые задачи - выдача справок по туристическим услугам (описание туров, куда, какая фирма имеет эти путевки и сколько в наличии, цена, координаты фирмы).
Необходима нормализация базы данных.
Запросы: Упорядочение путевок по полям: страна, фирма, цена.
Поиск: сведения о фирме ХХ,
Выборка: сведения о фирмах, имеющих путевки в страну УУ по цене не выше NN.
Вычисления: средняя стоимость тура в страну УУ.
Ограничения целостности: а) каждый тур имеет ссылку хотя бы на одну фирму; б) цена путевки не менее 50 руб.;
Табличный отчет: список туров с группировкой по странам;
Произвольный отчет: картотека туристических фирм.
Вариант 12. Предметная область - почта.
Решаемые задачи - выдача справок о газетах и журналах (индекс, название, тираж, цена, издательство и т.п.), а также их издательствах (город, телефон и т.п.).
Запросы: Упорядочение по полям: тираж, цена, название.
Поиск: все сведения о газете ХХ,
Выборка: пензенские газеты.
Вычисления: доход, получаемый издательством NN (тираж * цена).
Ограничения целостности: а) каждая газета выпускается издательством, имеющимся в списке б) название газеты - не пустое значение; в) индекс газеты должен быть уникальным.
Табличный отчет: список издательств; группировка по городам.
Произвольный отчет: абонемент на подписку (индекс, название, цена...).
Приложение 2
PHP-скрипты проекта «Учет реализации продукции»
1. PHP-скрипты, написанные разработчиком приложения
//Файл SozdBD.php
//Для создания базы данных Ychet_izdelij
<?php
$link = mysql_pconnect("localhost", "root")
or exit("Невозможно установить соединение");
if (mysql_create_db("Ychet_izdelij")) {
print ("База данных создана успешно\n");
} else {
printf ("Ошибка создания базы данных: %s\n", mysql_error ());
}
?>
//Файл Sozd_tabl.php
//Для создания объектов базы данных (таблиц и связей)
<?php
$db = mysql_connect("localhost","root");
mysql_select_db("Ychet_izdelij",$db);
$result=mysql_query("CREATE TABLE Izdelie(
Kod_izd CHAR(3) NOT NULL,
Name_izd CHAR(15),
Stoimost_izd FLOAT,
PRIMARY KEY (Kod_izd)
)",$db);
$result=mysql_query("CREATE TABLE Predprijatie(
Kod_pr CHAR(3) NOT NULL,
BankSchet CHAR(10),
Adres CHAR(30),
Name_pr CHAR(25),
PRIMARY KEY (Kod_pr)
)",$db);
$result=mysql_query("CREATE TABLE Rasxod(
Kod_sr CHAR(3) NOT NULL,
Kod_izd CHAR(3) NOT NULL,
Kol FLOAT,
PRIMARY KEY (Kod_sr, Kod_izd)
)",$db);
$result=mysql_query("CREATE TABLE Sirjo(
Kod_sr CHAR(3) NOT NULL,
Name_sr CHAR(15),
Stoimost_edinici FLOAT,
Kod_pr CHAR(3) NOT NULL,
PRIMARY KEY (Kod_sr)
)",$db);
$result=mysql_query("CREATE TABLE Realizacija(
Nom_nakl INT NOT NULL,
Data_real DATE,
Kol FLOAT,
Kod_pr CHAR(3) NOT NULL,
Kod_izd CHAR(3) NOT NULL,
PRIMARY KEY (Nom_nakl)
)",$db);
$result=mysql_query("ALTER TABLE Rasxod ADD CONSTRAINT RefSirjo3 FOREIGN KEY (Kod_sr) REFERENCES Sirjo(Kod_sr)",$db);
$result=mysql_query("ALTER TABLE Rasxod ADD CONSTRAINT RefIzdelie4 FOREIGN KEY (Kod_izd) REFERENCES Izdelie(Kod_izd)",$db);
$result=mysql_query("ALTER TABLE Realizacija ADD CONSTRAINT RefPredprijatie5 FOREIGN KEY (Kod_pr) REFERENCES Predprijatie(Kod_pr)",$db);
$result=mysql_query("ALTER TABLE Realizacija ADD CONSTRAINT RefIzdelie6 FOREIGN KEY (Kod_izd) REFERENCES Izdelie(Kod_izd)",$db);
$result=mysql_query("ALTER TABLE Sirjo ADD CONSTRAINT RefPredprijatie1 FOREIGN KEY (Kod_pr) REFERENCES Predprijatie(Kod_pr)",$db);
mysql_close($db);
?>
//Файл ZapolneniePredpr.php
//Для заполнения таблицы «Предприятия» тестовыми данными
<?php
$db = mysql_connect("localhost","root");
mysql_select_db("Ychet_izdelij",$db);
$result=mysql_query("INSERT INTO `predprijatie` ( `Kod_pr` , `BankSchet` , `Adres` , `Name_pr` )
VALUES ('123', '9874563215', 'ул. Мира, 75', 'ОАО Саламандра'),
('234', '7418523695', 'ул. Фрунзе, 19', 'ОАО Прохлада'),
('356', '7896541234', 'ул. Ленина, 17', 'ООО Облик'),
('987', '4568752145', 'ул. Командарма Уборевича, 20', 'Хлебороб'),
('741', '3564289546', 'ул. 23 Августа, 54', 'Колос'),
('852', '3654568795', 'ул. Космонавтов, 18', 'ОАО Граковское'),
('456', '5468752156', 'ул. Роганская, 9а', 'Заря');",$db);
mysql_close($db);
?>
//Файл ZapolnenieIzd.php
//Для заполнения таблицы «Изделия» тестовыми данными
<?php
$db = mysql_connect("localhost","root");
mysql_select_db("Ychet_izdelij",$db);
$result=mysql_query("INSERT INTO `izdelie` ( `Kod_izd` , `Name_izd` , `Stoimost_izd` )
VALUES ('1', 'Корпус трактора', '890'),
('2', 'Корпус комбайна', '1002'),
('3', 'Колесо', '25'),
('4', 'Шасси', '782'),
('5', 'Кабина', '560'),
('6', 'Велосипед', '156');",$db);
mysql_close($db);
?>
//Файл ZapolnenieSirjo.php
//Для заполнения таблицы «Сырье» тестовыми данными
<?php
$db = mysql_connect("localhost","root");
mysql_select_db("Ychet_izdelij",$db);
$result=mysql_query("INSERT INTO `sirjo` ( `Kod_sr` , `Name_sr` , `Stoimost_edinici` , `Kod_pr` )
VALUES ('111', 'Чугун', '15,6', '123'),
('222', 'Алюминий', '20,7', '234'),
('333', 'Сталь', '14,9', '356'),
('444', 'Цветной металл', '23', '123'),
('555', 'Пластмасса', '5', '234'),
('666', 'Резина', '47', '852')",$db);
mysql_close($db);
?>
//Файл ZapolnenieRasxod.php
//Для заполнения таблицы «Расход сырья» тестовыми данными
<?php
$db = mysql_connect("localhost","root");
mysql_select_db("Ychet_izdelij",$db);
$result=mysql_query("INSERT INTO `rasxod` ( `Kod_sr` , `Kod_izd` , `Kol` ) VALUES ('111', '1', '2'), ('222', '1', '1'), ('333', '1', '1'), ('555', '1', '1'), ('111', '2', '3'), ('333', '2', '1'), ('555', '2', '1'), ('333', '3', '1'), ('666', '3', '2'), ('111', '4', '3'), ('111', '5', '1'), ('555', '5', '1'), ('333', '6', '4'), ('666', '6', '1');",$db);
mysql_close($db);
?>
//Файл ZapolnenieReal.php
//Для заполнения таблицы «Реализация товара» тестовыми данными
<?php
$db = mysql_connect("localhost","root");
mysql_select_db("Ychet_izdelij",$db);
$result=mysql_query("INSERT INTO `realizacija` ( `Nom_nakl` , `Kod_pr` , `Kod_izd` , `Kol`, `Data_real` )
VALUES ('1', '987', '5','12', '2007-12-02'),
('2', '741', '1','5', '2007-12-11'),
('3', '741', '2','6', '2007-12-17'),
('4', '852', '3','8', '2007-12-19'),
('5', '456', '6','4', '2007-12-22'),
('6', '456', '2','2', '2007-12-24'),
('7', '741', '2','5', '2007-12-25'),
('8', '987', '5','3', '2007-12-28');",$db);
mysql_close($db);?>
