Разработка информационной системы "Компьютерные комплектующие" с использованием клиент-серверной технологии

Тип работы:
Курсовая
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

Разработка информационной системы «Компьютерные комплектующие» с использованием клиент-серверной технологии

Содержание

  • Введение
  • 1. Основные характеристики субд Firebird
  • 1.1 Доступ к сети
  • 1.2 Многоверсионная архитектура
  • 1.3 Транзакции
  • 1.4 Хранимые процедуры и триггеры
  • 1.5 Безопасность сервера
  • 2. Проектирование базы данных для информационной системы «Компьютерные комплектующие»
  • 2.1 Системный анализ предметной области
  • 2.2 Инфологическое моделирование
  • 2.3 Даталогическое проектирование
  • 2.4 Физическое проектирование
  • 2.5 Создание базы данных
  • 2.6 Программирование бизнес — логики
  • 3. Разработка Windows-приложения
  • 4. Разработка Web-приложения
  • Заключение
  • Список используемой литературы
  • Приложения

Введение

Реляционные базы данных, являющиеся частью корпоративных информационных систем, обычно построены по принципам клиент-серверной технологии. Суть этой технологии в том, что программный продукт в качестве логических компонентов имеет сервер и несколько клиентов. Клиент работает непосредственно с пользователем, а на сервере (или множестве серверов) хранится информация. По мере необходимости клиент посылает запросы на сервер и принимает request’s (ответы сервера). Принято называть клиентом компонент локальной сети, запрашивающий услуги у некоторого сервера и сервером — компонент локальной сети, оказывающий услуги клиентам.

В первом разделе рассмотрены основные характеристики СУБД FIREBIRD, а именно: доступ к сети, многоверсионная архитектура, транзакции, хранимые процедуры и триггеры, безопасность сервера. Во втором разделе описано проектирование базы данных «Компьютерные комплектующие». В третьем разделе написана разработка WINDOWS — приложения, с помощью которого можно вести базу данных локально. В четвертом разделе описана разработка WEB-приложения, для удаленного ведения базы данных.

Данная курсовая работа была выполнена с использованием языков программирования C++, PHP и SQL, HTML, CSS и PSQL, а так же средства РСУБД Firebird 2. 1, PHP и Borland C++Builder 6. 0.

Целью данной курсовой работы является:

· Создание информационной системы «Компьютерные комплектующие» с применением клиент-серверной технологии;

Поставленная цель подразумевает решение следующих задач:

· Проектирование и разработка базы данных в РСУБД Firebird;

· Проектирование и создание приложения, основанного на клиент-серверной технологии и работающего в операционной системе Windows;

· Проектирование и создание web-приложения.

Курсовая работа написана на ___ листах. Так же на ___ страницах содержатся код программ, вынесенных в приложение. Курсовая работа содержит 28 рисунков, 5 таблиц и 2 листинга.

база клиент серверный информационный

1. Основные характеристики субд Firebird

Firebird — это мощная, компактная реляционная система управления базами данных (РСУБД) с архитектурой клиент-сервер. Она может выполняться на разнообразных серверных и клиентских платформах, включая Windows, Linux и на некоторых других платформах UNIX, включая FreeBSD и МасOS Х. Это РСУБД промышленного применения, чьи возможности имеют высокий уровень соответствия стандартам SQL, при этом она реализует некоторые мощные расширения языка процедурного программирования конкретного производителя. [1]

1.1 Доступ к сети

Сервер Firebird, запущенный на любой платформе, принимает ТСР/IР-подключения клиентов с любой клиентской платформы, которая может выполнять Firebird API.

Клиенты не могут подключиться к серверу Firebird через какую-нибудь файловую систему коллективного доступа (NFS, соединение клиентов Samba, общие ресурсы Windows или сетевой диск и т. д.).

Клиент должен подключаться с указанием абсолютного физического пути. Тем не менее в Firebird 1. 5 и выше средство алиасов баз данных позволяет приложениям выполнять «мягкое подключение» с использованием именованных алиасов, абсолютные пути которых указаны специально для каждого сервера.

К серверу Firebird, запушенному на хосте в Windows с сервисами, можно получить доступ от клиентов Windows с помощью сетевого протокола Named Pipes (именованные каналы).

1.2 Многоверсионная архитектура

Модель изоляции и управления работой множества пользователей, принятая в Firebird, является центральной частью архитектуры; она позволяет сохранять в базе данных более одной версии записи одновременно. Множество версий одной записи может существовать одновременно отсюда термин «многоверсионный». Каждая пользовательская задача имеет свой собственный контекстный вид состояния базы данных и записывает свои версии записей на диск сервера. В этот момент новая версия записи (или удаленная запись) недоступна другим задачам пользователей.

Только самая последняя подтвержденная версия записи является видимой за пределами пользовательской задачи, которая успешно сохранила новую версию, и эта запись продолжает оставаться видимой для других задач. Другие задачи будут в курсе того, что что-то произошло с этой записью, поскольку они будут блокированы от изменения или удаления этой записи, пока новая версия не станет «официальной» после подтверждения изменений.

По причине использования многоверсионной архитектуры (называемой также МGА Multi-generational architecture) для Firebird нет необходимости в двухфазной блокировке, используемой другими СУБД для управления многопользовательской работой. [3]

1.3 Транзакции

Все задачи пользователей в Firebird помещаются внутрь транзакций. Задача начинается с оператора START TRANSACTION и завершается, когда выполненная работа подтверждается (commit) или отменяется (rollback), Задача пользователя может выполнять множество запросов к операциям в одной транзакции, включая операции с более чем одной базой данных.

Работа сохраняется в базе данных в два этапа. На первом этапе изменения сохраняются на диске без изменения состояния базы данных. На втором этапе изменения подтверждаются или отменяются клиентским процессом. В версии 1. 5 и выше клиенты могут отменить часть работы, маркируя этапы с помощью точек сохранения (savepoints) и отменяя изменения до точки сохранения без отмены всей транзакции.

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

1.4 Хранимые процедуры и триггеры

Firebird имеет богатый язык процедурных расширений, PSQL, для написания хранимых процедур и триггеров. Это структурированный язык с поддержкой циклов FOR для множеств, условными переходами, обработкой ошибок и пересылкой событий. После создания код PSQL компилируется и сохраняется в двоичном виде.

Триггеры имеют сильную поддержку с фазами До (Before) и После (After) каждого события манипулирования данными. Для каждой фазы/события может существовать множество триггеров, они могут содержать номера, задающие последовательность выполнения. Firebird 1. 5 и выше поддерживает триггеры Before и After, которые обрабатывают все три события манипулирования данными с условными переходами для каждого события. [5]

1.5 Безопасность сервера

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

2. Проектирование базы данных для информационной системы «Компьютерные комплектующие»

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

Функциональный подход — он реализует принцип движения «от задач» и применяется тогда, когда заранее известны функции некоторой группы лиц и комплексов задач, для обслуживания информационных потребностей которых создается рассматриваемая БД.

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

2.1 Системный анализ предметной области

Системный анализ должен заканчиваться подробным описанием информации об объектах предметной области, которая требуется для решения конкретных задач. Эта область должна храниться в БД, формулировкой конкретных задач, которые будут решаться с использованием данной БД с кратким описанием алгоритмов их решения, описанием выходных документов, которые должны генерироваться в системе, описанием входных документов, которые служат основанием для заполнения данными БД. [4]

В базе данных «Компьютерные комплектующие» было выбрано 7 сущностей:

· «Товар» — содержит информацию о товарах;

· «Устройства» — содержит сведения об устройствах;

· «Производитель» — содержит информацию о производителях;

· «Корзина» — отображает количество приобретаемого товара;

· «Покупка» — содержит информацию о приобретаемых товарах;

· «Клиент» — содержит данные о клиентах;

· «Консультант» — содержит данные о работниках.

Для данных сущностей выбраны следующие связи:

· связь 1-ко-многим между сущностями Клиент и Покупка;

· связь 1-ко-многим между сущностями Консультант и Покупка;

· связь 1-ко-многим между сущностями Устройство и Товар;

· связь 1-ко-многим между сущностями Производитель и Товар;

· связь 1-ко-многим между сущностями Товар и Корзина;

· связь 1-ко-многим между сущностями Корзина и Покупка;

2.2 Инфологическое моделирование

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

Выбор СУБД — это отдельная задача, для корректного ее решения необходимо иметь проект, который не привязан ни к какой конкретной СУБД.

Инфологическое проектирование, прежде всего, связано с попыткой представления семантики предметной области в модели БД. Реляционная модель данных в силу своей простоты и лаконичности не позволяет отобразить семантику, то есть смысл предметной области. [2]

В результате системного анализа разработана инфологическая модель базы данных, отображённая на рисунках 2. 2. 1 и 2. 2. 2.

Рис. 2. 2. 1. Логическая модель

Рис. 2. 2. 2. Физическая модель

2.3 Даталогическое проектирование

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

2.4 Физическое проектирование

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

2.5 Создание базы данных

База данных «Компьютерные комплектующие» была создана и зарегистрирована в IB Expert. Регистрационную информацию можно увидеть на рисунке 2. 5. 1.

Рис. 2. 5. 1. Регистрационная информация

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

Таблица 2. 5. 1. Созданные домены.

Имя домена

Тип

Длина

Значение по умолчанию

Ограничения

D_CEN

DECIMAL

10,2

> 0

D_DATA

TIMESTAMP

< ='TODAY'

D_NO

SMALLINT

> 0

D_VCH

VARCHAR

40

нет

В таблице 2, приведенной ниже, можно рассмотреть все определенные таблицы базы данных с указанием их дополнительных свойств. Кроме того, стоит отметить факт наличия связности данных, реализованный путем задания ограничений по внешнему ключу в процессе создания таблиц в программном средстве IBExpert.

Таблица 2. 5. 2. Созданные таблицы.

Имя таблицы

Имя

Поля

Тип

Длина

Десятичная часть

Имя домена

Pokupka

NO_POKUPKI

SMALLINT

D_NO

DATAPRIDAJI

TIMESTAMP

D_DATA

NO_KONS

SMALLINT

D_NO

CENAGLAV

DECIMAL

10

2

D_CEN

NO_KLI

SMALLINT

D_NO

NO_KORZ

SMALLINT

D_NO

Klient

NO_KLI

SMALLINT

D_NO

FAMILIYA

VARCHAR

40

D_VCH

IMYA

VARCHAR

40

D_VCH

OTCHESTVO

VARCHAR

40

D_VCH

TELEFON

VARCHAR

40

D_VCH

E_MAIL

VARCHAR

40

D_VCH

GOROD

VARCHAR

40

D_VCH

ULICA

VARCHAR

40

D_VCH

DOM

VARCHAR

40

D_VCH

Konsultant

NO_KONS

SMALLINT

D_NO

FAMILIYAKONS

VARCHAR

40

D_VCH

IMYAKONS

VARCHAR

40

D_VCH

OTCHESTVOKONS

VARCHAR

40

D_VCH

TELEFONKONS

VARCHAR

40

D_VCH

DATAPRIEMA

VARCHAR

40

D_VCH

GORODKONS

VARCHAR

40

D_VCH

ULICAKONS

VARCHAR

40

D_VCH

DOMKONS

VARCHAR

40

D_VCH

Korzina

NO_KORZ

SMALLINT

D_NO

KOLICHESTVO

VARCHAR

40

D_VCH

NO_TOV

SMALLINT

D_NO

Tovar

NO_TOV

SMALLINT

D_NO

SERIALNO

VARCHAR

40

D_VCH

PERTNO

VARCHAR

40

D_VCH

CENA

DECIMAL

10

2

D_CEN

MODEL

VARCHAR

40

D_VCH

NO_USTR

SMALLINT

D_NO

NO_PROIZ

SMALLINT

D_NO

Ustroistvo

NO_USTR

SMALLINT

D_NO

NAIMENOVANIE

VARCHAR

40

D_VCH

Proizvoditel

NO_PROIZ

SMALLINT

D_NO

NAIMPROIZV

VARCHAR

40

D_VCH

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

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

Таблица 2. 5. 3. Домены.

Домен D_CEN

CREATE DOMAIN D_CEN AS

DECIMAL (10,2)

NOT NULL

CHECK (value> 0);

Домен D_DATA

CREATE DOMAIN D_DATA AS

TIMESTAMP

NOT NULL

CHECK (value< ='TODAY');

Домен D_NO

CREATE DOMAIN D_NO AS

SMALLINT

NOT NULL

CHECK (value > 0);

Домен D_VCH

CREATE DOMAIN D_VCH AS

VARCHAR (40) CHARACTER SET WIN1251

NOT NULL

COLLATE WIN1251;

После создания доменов, началось создание таблиц. Всего в БД будет создано семь таблиц. Таблицы имеют связи, реализуемые с помощью первичных и вторичных (внешних) ключевых полей. Кроме связей эти поля также влияют на целостность данных.

Для создания таблицы KORZINA был написан следующий SQL код, в котором так же указаны ключевые поля:

Таблица 2. 5. 4. Таблица «Корзина».

SQL Код:

CREATE TABLE KORZINA (

NO_KORZ D_NO NOT NULL /* D_NO = SMALLINT NOT NULL CHECK (value > 0) */,

KOLICHESTVO D_VCH NOT NULL /* D_VCH = VARCHAR (40) NOT NULL */,

NO_TOV D_NO NOT NULL /* D_NO = SMALLINT NOT NULL CHECK (value > 0) */

);

); /*** Primary Keys ***/

ALTER TABLE KORZINA ADD PRIMARY KEY (NO_KORZ);

Так же было создано автоинкрементное поле для таблицы KORZINA:

Таблица 2. 5. 5. Автоинкрементное поле.

SQL Код:

CREATE OR ALTER TRIGGER KORZINA_BI0 FOR KORZINA

ACTIVE BEFORE INSERT POSITION 0

AS

begin

if (NEW. no_korz IS NULL) then

NEW. no_korz=GEN_ID (gen_korz_no, 1);

End

Подобным образом были созданы таблицы KLIENT, KONSULTANT, POKUPKA, TOVAR, USTROIYSTVO, PROIZVODITEL. Для этих таблиц так же были заданы ключевые поля, внешние ключи, и разработаны генераторы для создания автоинкрементных полей.

2.6 Программирование бизнес — логики

Бизнес-логика — в разработке информационных систем — совокупность правил, принципов, зависимостей поведения объектов предметной области (области человеческой деятельности, которую система поддерживает). Иначе можно сказать, что бизнес-логика — это реализация правил и ограничений автоматизируемых операций.

В фазе бизнес-моделирования и разработки требований бизнес-логика может описываться в виде:

· текста;

· концептуальных аналитических моделей предметной области;

· бизнес-правил;

· разнообразных алгоритмов;

· диаграмм деятельности;

· графов и диаграмм перехода состояний;

· моделей бизнес-процессов.

РСУБД предоставляет широкий выбор вариантов программирования бизнес — логики позволяя написать просмотры, хранимые процедуры, триггеры, исключения. Для данной БД было создано 8 просмотров, 26 хранимых процедур, 7 триггеров и 2 исключения (см. Приложение 1).

3. Разработка Windows-приложения

Для разработки данного приложения на компонент DataModule2 были помещены не визуальные компоненты, которые показаны на рисунке 3. 1

Рис. 3.1. Компоненты в DataModule2

1. Были настроены все компоненты, в частности IBDatabase1 и IBTransaction1. В свойстве DefaultAction компонента IBTransaction1 было установлено значение TACOMMIT, отвечающее за подтверждение всех действующих транзакций в приложении. Но так как данное действие срабатывает при выходе их приложения, было принято решение подтверждать транзакции как можно раньше после выполнения каждого действия, связанного с изменением состояния базы данных. В коде программы подобные действия обычно реализуются, используя программный код типа «IBTransaction1-> Commit ()». Это позволяет сразу увидеть изменения, не выходя их программы.

В свойстве Transaction Editor было установлено Read Committed. Так же были настроены свойства DatabaseName, DefaultTransaction для компонента IBDatabase1 и свойство DefaultDatabase для компонента IBTransaction1. Данные настройки этих компонентов показаны на рисунках ниже.

Рис. 3.2. Настройка компонента IBDatabase1

Рис. 3.3. Настройка компонента IBTransaction

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

На главную форму поместила компонент MainMenu, для переключения между формами содержащими отчет и информацию о приобретенных товарах.

Рис. 3. 4. Главное окно программы

Для просмотра содержимого таблицы нужно воспользоваться меню, в котором можно выбрать интересующие нас данные. Для отображения таблицы на экране формы добавила на форму компонент DBGrid, а так же не визуальные компоненты в DataModule2 и настроила их.

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

Результат настройки данных компонентов можно увидеть на рисунке 3. 6.

Рис. 3.6. Форма, на которой отображена таблица «Товары».

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

Рис. 3.7. Ввод данных в таблицу Товаров.

На рисунке 3. 8 показана таблица Товаров после добавления в нее данных.

Рис. 3.8. Результат добавления данных в таблицу Товары.

Для изменения данных о товаре — введем номер товара и введем нужную информацию.

Рис. 3.9. Изменение данных в таблице Товары

На рисунке 3. 10 показана таблица Товаров после изменения в ней данных.

Рис. 3. 10. Результат изменения данных в таблице Товары

Для удаления нужно ввести номер товара, как показано на рисунке 3. 11.

Рис. 3. 11. Удаление записи из таблицы Товары

На рисунке 3. 12 показана таблица Товаров после удаления в ней данных.

Рис. 3. 12. Результат удаления из таблицы Товары

Для всех этих действий приведен код в листинге 1.

Листинг 1. Обработчик события кнопки Button1 для удаления, изменения или добавления.

void __fastcall TForm1: Button1Click (TObject *Sender)

{DataModule2-> INS_TOV->ParamByName («NO_TOV») — > AsString=Edit1->Text;

DataModule2-> INS_TOV->ParamByName («NO_USTR») — > AsString=Edit2->Text;

DataModule2-> INS_TOV->ParamByName («NO_PROIZ») — > AsString=Edit3->Text;

DataModule2-> INS_TOV->ParamByName («MODEL») — > AsString=Edit4->Text;

DataModule2-> INS_TOV->ParamByName («SERIALNO») — > AsString=Edit5->Text;

DataModule2-> INS_TOV->ParamByName («PARTNO») — > AsString=Edit6->Text;

DataModule2-> INS_TOV->ParamByName («CENA») — > AsString=Edit7->Text;

if ((Edit1-> Text=="") ||

(Edit2-> Text=="") ||

(Edit3-> Text=="") ||

(Edit4-> Text=="") ||

(Edit5-> Text=="") ||

(Edit6-> Text=="") ||

(Edit7-> Text==""))

{ ShowMessage («заполните все поля корректно»);

Form1-> Repaint (); } else {

DataModule2-> INS_TOV->Prepare (); // подготовка к выполнению транзакции

DataModule2-> INS_TOV->ExecProc (); // выполнение транзакции

DataModule2-> IBTable1->Close ();

DataModule2-> IBTable1->Open (); // закрываем и открываем таблицу для обновления данных

Edit1-> Clear (); // очистка полей ввода

Edit2-> Clear (); // очистка полей ввода

Edit3-> Clear (); // очистка полей ввода

Edit4-> Clear (); // очистка полей ввода

Edit5-> Clear (); // очистка полей ввода

Edit6-> Clear (); // очистка полей ввода

Edit7-> Clear (); // очистка полей ввода

DataModule2-> IBTransaction1->Commit ();

DataModule2-> IBTable1->Close ();

DataModule2-> IBTable1->Open (); // закрываем и открываем таблицу для обновления данных

ShowMessage («запись добавлена»); }}

// ---------------------------------------------------------------------------

void __fastcall TForm1: Button2Click (TObject *Sender)

{DataModule2-> UPD_TOV->ParamByName («NO_TOV») — > AsString=Edit1->Text;

DataModule2-> UPD_TOV->ParamByName («NO_USTR») — > AsString=Edit2->Text;

DataModule2-> UPD_TOV->ParamByName («NO_PROIZ») — > AsString=Edit3->Text;

DataModule2-> UPD_TOV->ParamByName («MODEL») — > AsString=Edit4->Text;

DataModule2-> UPD_TOV->ParamByName («SERIALNO») — > AsString=Edit5->Text;

DataModule2-> UPD_TOV->ParamByName («PARTNO») — > AsString=Edit6->Text;

DataModule2-> UPD_TOV->ParamByName («CENA») — > AsString=Edit7->Text;

if ((Edit1-> Text=="") ||

(Edit2-> Text=="") ||

(Edit3-> Text=="") ||

(Edit4-> Text=="") ||

(Edit5-> Text=="") ||

(Edit6-> Text=="") ||

(Edit7-> Text==""))

{ ShowMessage («заполните все поля корректно»);

Form1-> Repaint (); } else {

DataModule2-> UPD_TOV->Prepare (); // подготовка к выполнению транзакции

DataModule2-> UPD_TOV->ExecProc (); // выполнение транзакции

DataModule2-> IBTable1->Close ();

DataModule2-> IBTable1->Open (); // закрываем и открываем таблицу для обновления данных

Edit1-> Clear (); // очистка полей ввода

Edit2-> Clear (); // очистка полей ввода

Edit3-> Clear (); // очистка полей ввода

Edit4-> Clear (); // очистка полей ввода

Edit5-> Clear (); // очистка полей ввода

Edit6-> Clear (); // очистка полей ввода

Edit7-> Clear (); // очистка полей ввода

DataModule2-> IBTransaction1->Commit ();

DataModule2-> IBTable1->Close ();

DataModule2-> IBTable1->Open (); // закрываем и открываем таблицу для обновления данных

ShowMessage («запись изменена»); }}

// ---------------------------------------------------------------------------

void __fastcall TForm1: Button3Click (TObject *Sender)

{DataModule2-> DEL_TOV->ParamByName («NO_TOV») — > AsString=Edit1->Text;

if (Edit1-> Text=="")

{ ShowMessage («Заполните поле корректно»);

Form1-> Repaint (); } else {

DataModule2-> DEL_TOV->Prepare ();

DataModule2-> DEL_TOV->ExecProc ();

DataModule2-> IBTable1->Close ();

DataModule2-> IBTable1->Open ();

Edit1-> Clear ();

DataModule2-> IBTransaction1->Commit ();

DataModule2-> IBTable1->Close ();

DataModule2-> IBTable1->Open (); // закрываем и открываем таблицу для обновления данных

ShowMessage («Запись удалена»); }}

4. Разработка Web-приложения

Для соединения с базой данных используется метод ibase_connect (). Чтобы создать соединение с БД «Компьютерные комплектующие» был создан код, приведенный на листинге 2. Для запроса к базе данных используется переменная $query, а для получения идентификатора запроса — переменная $result, как показано ниже. Так же в листинге представлен код вывода полученной информации.

Листинг 2.

< html>

< head>

< title>ПРОСМОТР</title>

< /head>

< body bgcolor="E0FFFF">

< table>

< td>

<a href="INDEX. html">НА ГЛАВНУЮ< /a><br>

< table align=center border="0″ cellpadding="0″ cellspacing="0″ class="tbl1″ width="850″ height="100″ bgcolor="008B8B">

< td>

< center>

< font>

< h2><font color="white"> Просмотр записей< br> таблицы < br><i>"Товар"</i></h2></font>

< /td>

< /table>

< /td>

< /table>

< table bgcolor="white">

< td>

<? php

$host='172. 23. 64. 64: // home/ftp/10/1 410 028/G141001_YUSHCHENKO. FDB';

/*$host='knit-614−01: D: /DB/G141001_YUSHCHENKO. FDB'; */

$dbcharset = 'WIN1251';

$usname = 'sysdba';

$pswrd = 'masterkey';

$db = ibase_pconnect ($host, $usname, $pswrd,$dbcharset);

if (! $db)

{echo 'ошибка соединения с базой данных';

exit;

}

$query="select * from TOVAR";

$result=ibase_query ($query);

echo '< table border=1> ';

echo '< tr><th bgcolor="#CCCCFF"> Номер товара < /th>'.

'< th bgcolor="#CCCCFF"> Серийный номер < /th>'.

'< th bgcolor="#CCCCFF"> Парт номер < /th>'.

'< th bgcolor="#CCCCFF"> Цена< /th>'.

'< th bgcolor="#CCCCFF"> Модель< /th>'.

'< th bgcolor="#CCCCFF"> Номер производителя< /th>'.

'< th bgcolor="#CCCCFF"> Номер устройства< /th>'. '< tr>';

$i=0;

while ($row=ibase_fetch_row ($result))

{$i++;

echo «< tr><td>$row [0] < /td>

< td>$row [1] < /td>

< td>$row [2] < /td>

< td>$row [3] < /td>

< td>$row [4] < /td>

< td>$row [5] < /td>

< td>$row [6] < /td><tr>";

}

echo «< /table>»;

ibase_free_result ($result);

? >

< /td>

< /table>

< /body>

< /html>

Результат данного PHP кода представлен на рисунке 4. 1.

Рис. 4.1. Просмотр таблицы Товары

Рис. 4.2. Стартовая страница приложения

Рис. 4.3. Страница манипуляций таблицы Товар.

Для добавления нужно перейти по соответствующей ссылке и ввести нужные данные, как показано на рисунке 4. 4.

Рис. 4. 4. Добавление нового товара

Нажимаем на кнопку Добавить и видим результат, на рисунке 4. 5.

Рис. 4. 5. Результат добавления

Нажимаем на ссылку Просмотр, чтобы убедиться, что данный товар добавлен.

Рис. 4. 6. Таблица после добавления.

Для изменения возвращаемся назад и переходим по ссылке Изменить и вводим нужные значения, как показано на рисунке 4. 7.

Рис. 4. 7. Изменение данных о товаре

Нажимаем на кнопку Изменить и видим результат, на рисунке 4. 8.

Рис. 4. 8. Результат изменения

Для наглядности, что данные таблицы изменились, перейдем по ссылке просмотра, как показано на рисунке 4. 9.

Рис. 4. 9. Результат изменения данных в таблице

Форма с данными для удаления показана на рисунке 4. 10.

Рис. 4. 10. Удаление товара

Нажимаем Удалить и видим результат, как показано на рисунке 4. 11.

Рис. 4. 11. Результат удаления

Просматриваем таблицу ещё раз для того, чтобы увидеть, что клиент удален.

Рис. 4. 12. Таблица после удаления

Программный код, реализующий Web-приложение с использованием РНР и СУБД Firebird приведен в приложении 2.

Заключение

В рамках выполнения курсовой работы была разработана информационная система «Компьютерные комплектующие», основанная на клиент-серверной технологии, а так же получены навыки работы с данной технологией.

Были достигнуты поставленные цели и задачи, а именно:

· создана информационная система «Компьютерные комплектующие» с применением клиент-серверной технологии;

· разработана базы данных в РСУБД Firebird;

· создано приложение, основанное на клиент-серверной технологии и работающее в операционной системе Windows;

· создано web-приложение.

В ходе выполнения поставленных задач и целей были получены навыки работы с базами данных, технологией IBExpert, PHP, а также программирования в среде Borland C++ Builder 6. 0.

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

1. Барри Х. FIREBIRD: руководство разработчика баз данных. СПб.: БХВ-Петербург, 2011. — 1104 с. — ISBN 5−94 157−609−9

2. Кузнецов С. Д. Основы баз данных. — 2-е изд. — М.: Интернет-университет информационных технологий; БИНОМ. Лаборатория знаний, 2010. — 484 с. — ISBN 978−5-94 774−736−2

3. Джаррод Холингворт, Боб Сворт, Марк Кэшмэн, Поль Густавсон Borland C++ Builder 6. Руководство разработчика = Borland C++ Builder 6 Developer’s Guide. — М.: «Вильямс», 2004. — С. 976. — ISBN 0−672−32 480−6

4. Гарсиа-Молина Г., Ульман Дж., Уидом Дж. Системы баз данных. Полный курс = Database Systems: The Complete Book. — Вильямс, 2008. — 1088 с. — ISBN 5−8459−0384-X

5. Коннолли Т., Бегг К. Базы данных. Проектирование, реализация и сопровождение. Теория и практика = Database Systems: A Practical Approach to Design, Implementation, and Management. — 3-е изд. — М.: Вильямс, 2003. — 1436 с. — ISBN 0−201−70 857−4

Приложения

Приложение 1

Windows приложение

// ---------------------------------------------------------------------------

#include < vcl. h>

#pragma hdrstop

#include «Unit1. h»

#include «Unit2. h»

#include «Unit3. h»

#include «Unit4. h»

#include «Unit5. h»

#include «Unit6. h»

#include «Unit7. h»

#include «Unit8. h»

// ---------------------------------------------------------------------------

#pragma package (smart_init)

#pragma resource «*. dfm»

TForm1 *Form1;

// ---------------------------------------------------------------------------

__fastcall TForm1: TForm1 (TComponent* Owner)

: TForm (Owner)

{}

// ---------------------------------------------------------------------------

void __fastcall TForm1: Button1Click (TObject *Sender)

{DataModule2-> INS_TOV->ParamByName («NO_TOV») — > AsString=Edit1->Text;

DataModule2-> INS_TOV->ParamByName («NO_USTR») — > AsString=Edit2->Text;

DataModule2-> INS_TOV->ParamByName («NO_PROIZ») — > AsString=Edit3->Text;

DataModule2-> INS_TOV->ParamByName («MODEL») — > AsString=Edit4->Text;

DataModule2-> INS_TOV->ParamByName («SERIALNO») — > AsString=Edit5->Text;

DataModule2-> INS_TOV->ParamByName («PARTNO») — > AsString=Edit6->Text;

DataModule2-> INS_TOV->ParamByName («CENA») — > AsString=Edit7->Text;

if ((Edit1-> Text=="") ||

(Edit2-> Text=="") ||

(Edit3-> Text=="") ||

(Edit4-> Text=="") ||

(Edit5-> Text=="") ||

(Edit6-> Text=="") ||

(Edit7-> Text==""))

{ ShowMessage («заполните все поля корректно»);

Form1-> Repaint (); } else {

DataModule2-> INS_TOV->Prepare (); // подготовка к выполнению транзакции

DataModule2-> INS_TOV->ExecProc (); // выполнение транзакции

DataModule2-> IBTable1->Close ();

DataModule2-> IBTable1->Open (); // закрываем и открываем таблицу для обновления данных

Edit1-> Clear (); // очистка полей ввода

Edit2-> Clear (); // очистка полей ввода

Edit3-> Clear (); // очистка полей ввода

Edit4-> Clear (); // очистка полей ввода

Edit5-> Clear (); // очистка полей ввода

Edit6-> Clear (); // очистка полей ввода

Edit7-> Clear (); // очистка полей ввода

DataModule2-> IBTransaction1->Commit ();

DataModule2-> IBTable1->Close ();

DataModule2-> IBTable1->Open (); // закрываем и открываем таблицу для обновления данных

ShowMessage («запись добавлена»); }}

// ---------------------------------------------------------------------------

void __fastcall TForm1: Button2Click (TObject *Sender)

{DataModule2-> UPD_TOV->ParamByName («NO_TOV») — > AsString=Edit1->Text;

DataModule2-> UPD_TOV->ParamByName («NO_USTR») — > AsString=Edit2->Text;

DataModule2-> UPD_TOV->ParamByName («NO_PROIZ») — > AsString=Edit3->Text;

DataModule2-> UPD_TOV->ParamByName («MODEL») — > AsString=Edit4->Text;

DataModule2-> UPD_TOV->ParamByName («SERIALNO») — > AsString=Edit5->Text;

DataModule2-> UPD_TOV->ParamByName («PARTNO») — > AsString=Edit6->Text;

DataModule2-> UPD_TOV->ParamByName («CENA») — > AsString=Edit7->Text;

if ((Edit1-> Text=="") ||

(Edit2-> Text=="") ||

(Edit3-> Text=="") ||

(Edit4-> Text=="") ||

(Edit5-> Text=="") ||

(Edit6-> Text=="") ||

(Edit7-> Text==""))

{ ShowMessage («заполните все поля корректно»);

Form1-> Repaint (); } else {

DataModule2-> UPD_TOV->Prepare (); // подготовка к выполнению транзакции

DataModule2-> UPD_TOV->ExecProc (); // выполнение транзакции

DataModule2-> IBTable1->Close ();

DataModule2-> IBTable1->Open (); // закрываем и открываем таблицу для обновления данных

Edit1-> Clear (); // очистка полей ввода

Edit2-> Clear (); // очистка полей ввода

Edit3-> Clear (); // очистка полей ввода

Edit4-> Clear (); // очистка полей ввода

Edit5-> Clear (); // очистка полей ввода

Edit6-> Clear (); // очистка полей ввода

Edit7-> Clear (); // очистка полей ввода

DataModule2-> IBTransaction1->Commit ();

DataModule2-> IBTable1->Close ();

DataModule2-> IBTable1->Open (); // закрываем и открываем таблицу для обновления данных

ShowMessage («запись изменена»); }}

// ---------------------------------------------------------------------------

void __fastcall TForm1: Button3Click (TObject *Sender)

{DataModule2-> DEL_TOV->ParamByName («NO_TOV») — > AsString=Edit1->Text;

if (Edit1-> Text=="") { ShowMessage («Заполните поле корректно»);

Form1-> Repaint (); } else {

DataModule2-> DEL_TOV->Prepare ();

DataModule2-> DEL_TOV->ExecProc ();

DataModule2-> IBTable1->Close ();

DataModule2-> IBTable1->Open ();

Edit1-> Clear ();

DataModule2-> IBTransaction1->Commit ();

DataModule2-> IBTable1->Close ();

DataModule2-> IBTable1->Open (); // закрываем и открываем таблицу для обновления данных

ShowMessage («Запись удалена»); }}

// ---------------------------------------------------------------------------

void __fastcall TForm1: Edit1Change (TObject *Sender)

{TLocateOptions LO;

DataModule2-> IBTable1->Locate («NO_TOV»,

Edit1-> Text, LO< <loPartialKey<< loCaseInsensitive); }

// ---------------------------------------------------------------------------

void __fastcall TForm1: DBGrid1TitleClick (TColumn *Column)

{DataModule2-> IBTable1->Active=false;

DataModule2-> IBTable1->IndexFieldNames=Column->FieldName;

DataModule2-> IBTable1->Active=true; }

// ---------------------------------------------------------------------------

void __fastcall TForm1: Edit8Change (TObject *Sender)

{ DataModule2-> IBTable1->Filtered=true;

if (Edit8-> Text=="") { DataModule2-> IBTable1->Filtered=false; }}

// ---------------------------------------------------------------------------

void __fastcall TForm1: N1Click (TObject *Sender)

{Form3-> QuickRep1->Preview (); }

// ---------------------------------------------------------------------------

void __fastcall TForm1: Button4Click (TObject *Sender)

{Form4-> Show (); }

// ---------------------------------------------------------------------------

void __fastcall TForm1: Button5Click (TObject *Sender)

{Form5-> Show (); }

// ---------------------------------------------------------------------------

void __fastcall TForm1: N2Click (TObject *Sender)

{ Form6-> Show (); }

// ---------------------------------------------------------------------------

void __fastcall TForm1: Timer1Timer (TObject *Sender)

{DataModule2-> IBTable1->Close ();

DataModule2-> IBTable1->Open ();

DataModule2-> IBTable2->Close ();

DataModule2-> IBTable2->Open ();

DataModule2-> IBTable3->Close ();

DataModule2-> IBTable3->Open (); }

// ---------------------------------------------------------------------------

Приложение 2

WEB приложение

html

< html> < head>

< title>Главная страница < /title>

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

< /head><body>

< table align=center border="0″ cellpadding="0″ cellspacing="0″ class="tbl1″ width="850″ bgcolor="008B8B">

< tr>

< td colspan="4"> </td>

< tr valign="top">

< td width="60%" height="91"> </td>

< td width="40%" height="91″ colspan="3″ valign="top">

< /td>

< tr>

< td colspan="3″ >

< tr>

< td valign="top" colspan="4">

< table width="100%" border="0″ cellspacing="15″ bgcolor="E0FFFF">

< tr>

< td width="17%" valign="top">

< br>

< /td>

< td width="100%">

< font color="white">

< p><h1>

<a href="TOVAR. html">таблица ТОВАР< /a><br>

<a href="USTROIYSTVO. html">таблица УСТРОЙСТВА< /a><br>

<a href="PROIZVODITEL. html">таблица ПРОИЗВОДИТЕЛЬ< /a><br>

<a href="KONSULTANT. html">таблица КОНСУЛЬТАНТ< /a><br>

<a href="KLIENT. html">таблица КЛИЕНТ< /a><br>

<a href="KORZINA. html">таблица КОРЗИНА< /a><br>

<a href="POKUPKA. html">таблица ПОКУПКА< /a><br>

< /p></h1><p></p><p>

< /p></td>

< /tr>

< /table>

< h2>  < /h2>

< /td>

< /tr>

< /table></body></html>

Html добавления

< html>

< head>

< title>Добавление в таблицу Товар< /title>

< /head>

< body bgcolor="#32CD32">

< table>

< td width="200″ bgcolor="#7FFFD4"> <b>

<a href="SELECT_TOV. php"> Просмотреть список товаров< /a><br>

<a href="SEARCH_TOV. html">Осуществить поиск товара по устройству< /a><br>

<a href="SEARCH_TOV_V. html">Осуществить поиск товара < /a><br>

<a href="INSERT_TOV. html">Добавить данные о товаре < /a><br>

<a href="UPD_TOV. html"> Изменить данные о товаре < /a><br>

<a href="DEL_TOV. html"> Удалить данные о товаре < /a><br>

<a href="INDEX. html">НА ГЛАВНУЮ< /a><br>

< /td>

< td>

< table align=center border="0″ cellpadding="0″ cellspacing="0″ class="tbl1″ width="600″ height="400″ bgcolor="#32CD32">

< td>

< center>

< font>

< h2><font color="white"> Добавление записей< br> в таблицу < br><i>"Товар"</i></h2></font>

< FORM action="INSERT_TOV. php" method="POST">

< TABLE border="0″ align=center bgcolor="#528B8B">

< TR><TD><font color="white"> Номер товара< /TD><TD>

< INPUT type="number" name="NO_TOV" maxlength="3"> </TD></TR>

< TR><TD><font color="white"> Серийный номер< /TD><TD>

< INPUT type="text" name="SERIALNO" maxlength="40"> < /TD></TR>

< TR><TD><font color="white"> Парт номер< /TD><TD>

< INPUT type="text" name="PARTNO" maxlength="40"> < /TD></TR>

< TR><TD><font color="white"> Цена</TD><TD>

< INPUT type="text" name="CENA" maxlength="13"> < /TD></TR>

< TR><TD><font color="white"> Модель</TD><TD>

< INPUT type="text" name="MODEL" maxlength="40"> </TD></TR>

< TR><TD><font color="white"> Номер устройства< /TD><TD>

< INPUT type="number" name="NO_USTR" maxlength="3"> </TD></TR>

< TR><TD><font color="white"> Номер производителя< /TD><TD>

< INPUT type="number" name="NO_PROIZ" maxlength="3"> </TD></TR>

< TR><TD></TD>

< TD><INPUT type="submit" value="ДОБАВИТЬ В БД"> </TD><tr>

< td></td>

< TD><INPUT type="reset" value="ОЧИСТИТЬ ПОЛЯ"> </TD></TR>

< td>

< /td>

< /TABLE>

< /td>

< /table>

< /td>

< /table>

< table bgcolor="black">

< td>

< /td>

< /table>

< /body>

< /html>

Php добавления

<? php

$NO_TOV=$_POST ['NO_TOV'];

$SERIALNO=$_POST ['SERIALNO'];

$PARTNO=$_POST ['PARTNO'];

$CENA=$_POST ['CENA'];

$MODEL=$_POST ['MODEL'];

$NO_USTR=$_POST ['NO_USTR'];

$NO_PROIZ=$_POST ['NO_PROIZ'];

$host='172. 23. 64. 64: // home/ftp/10/1 410 028/G141001_YUSHCHENKO. FDB';

/*$host='knit-614−01: D: /DB/G141001_YUSHCHENKO. FDB'; */

$dbcharset = 'WIN1251';

$usname = 'sysdba';

$pswrd = 'masterkey';

$db = ibase_pconnect ($host, $usname, $pswrd,$dbcharset);

if (! $db)

{echo 'Ошибка соединения с базой данных'; exit; }

$query1 ="execute procedure INSERT_TOV1 ('". $NO_TOV. «','». $SERIALNO. «','». $PARTNO. «','». $CENA. «','». $MODEL. «','». $NO_USTR. «','». $NO_PROIZ. «')»;

$it=ibase_trans ();

echo '< br>';

$result=ibase_query ($query1);

$ic=ibase_commit ();

if ($result)

echo '<p style="color:GREEN;«>Запись добавлена в базу данных</p>';

? >

Html изменения

<html>

<head>

<title>ИЗМЕНЕНИЕ</title>

</head>

<body bgcolor="#BA55D3">

< table>

< td width="200″ bgcolor="#D8BFD8"> <b>

<a href="SELECT_TOV. php"> Просмотреть список товаров< /a><br>

<a href="SEARCH_TOV. html">Осуществить поиск товара по устройству< /a><br>

<a href="SEARCH_TOV_V. html">Осуществить поиск товара < /a><br>

<a href="INSERT_TOV. html">Добавить данные о товаре < /a><br>

<a href="UPD_TOV. html"> Изменить данные о товаре < /a><br>

<a href="DEL_TOV. html"> Удалить данные о товаре < /a><br>

<a href="INDEX. html">НА ГЛАВНУЮ< /a><br>

< /td>

< td>

< table align=center border="0″ cellpadding="0″ cellspacing="0″ class="tbl1″ width="600″ height="100″ bgcolor="#BA55D3">

< td>

< center>

< font>

< h2><font color="white"> Изменение записей< br> в таблицу < br><i>"Товар"</i></h2></font>

< FORM action="UPD_TOV. php" method="POST">

< TABLE border="0″ align=center bgcolor="#528B8B">

< TR><TD><font color="white"> Номер товара< /TD><TD>

< INPUT type="number" name="NO_TOV" maxlength="3"> </TD></TR>

< TR><TD><font color="white"> Серийный номер< /TD><TD>

< INPUT type="text" name="SERIALNO" maxlength="40"> < /TD></TR>

< TR><TD><font color="white"> Парт номер< /TD><TD>

< INPUT type="text" name="PARTNO" maxlength="40"> < /TD></TR>

< TR><TD><font color="white"> Цена</TD><TD>

< INPUT type="text" name="CENA" maxlength="13"> < /TD></TR>

< TR><TD><font color="white"> Модель</TD><TD>

< INPUT type="text" name="MODEL" maxlength="40"> </TD></TR>

< TR><TD><font color="white"> Номер устройства< /TD><TD>

< INPUT type="number" name="NO_USTR" maxlength="3"> </TD></TR>

< TR><TD><font color="white"> Номер производителя< /TD><TD>

< INPUT type="number" name="NO_PROIZ" maxlength="3"> </TD></TR>

< TR><TD></TD>

< TD><INPUT type="submit" value="ИЗМЕНИТЬ «> </TD><tr>

< td></td>

< TD><INPUT type="reset" value="ОЧИСТИТЬ ПОЛЯ"> </TD>

< /TABLE>

< /td>

< /table>

< /td>

< /table>

< table bgcolor="black">

< td>

< /td>

< /table>

< /body>

< /html>

Php изменения

<? php

$NO_TOV=$_POST ['NO_TOV'];

$SERIALNO=$_POST ['SERIALNO'];

$PARTNO=$_POST ['PARTNO'];

$CENA=$_POST ['CENA'];

$MODEL=$_POST ['MODEL'];

$NO_USTR=$_POST ['NO_USTR'];

$NO_PROIZ=$_POST ['NO_PROIZ'];

$host='172. 23. 64. 64: // home/ftp/10/1 410 028/G141001_YUSHCHENKO. FDB';

/*$host='knit-614−01: D: /DB/G141001_YUSHCHENKO. FDB'; */

$usname = 'sysdba';

$pswrd = 'masterkey';

$db = ibase_pconnect ($host, $usname, $pswrd);

if (! $db)

{echo 'Ошибка соединения с базой данных '; exit; }

$query1 ="execute procedure UPD_TOV1 ('". $NO_TOV. «','». $SERIALNO. «','». $PARTNO. «','». $CENA. «','». $MODEL. «','». $NO_USTR. «','». $NO_PROIZ. «')»;

$it=ibase_trans ();

echo '< br>';

$result=ibase_query ($query1);

$ic=ibase_commit ();

if ($result)

echo '<p style="color:lime;«>Запись успешно изменена</p>';

? >

Html удаления

<html>

<head>

<title>УДАЛЕНИЕ товара</title>

</head>

<body bgcolor=#CD5555>

<table>

<td width="200″ bgcolor="#FFC1C1"> <b>

<a href="SELECT_TOV. php"> Просмотреть список товаров< /a><br>

<a href="SEARCH_TOV. html">Осуществить поиск товара по устройству< /a><br>

<a href="SEARCH_TOV_V. html">Осуществить поиск товара < /a><br>

<a href="INSERT_TOV. html">Добавить данные о товаре < /a><br>

<a href="UPD_TOV. html"> Изменить данные о товаре < /a><br>

<a href="DEL_TOV. html"> Удалить данные о товаре < /a><br>

<a href="INDEX. html">НА ГЛАВНУЮ< /a><br>

< /td>

< td>

< table align=center border="0″ cellpadding="0″ cellspacing="0″ class="tbl1″ width="600″ height="100″ bgcolor="CD5555">

< td>

< center>

< font>

< h2><font color="white"> Удаление записей< br> из таблицы < br><i>"Товар"</i></h2></font>

< FORM action="DEL_TOV. php" method="POST">

< TABLE border="0″ align=center bgcolor="#8B3A3A">

< TR><TD><font color="white"> Номер товара< /TD><TD>

< INPUT type="number" name="NO_TOV" maxlength="3"< /TD></TR>

< TD></TD>

< TD><INPUT type="submit" value="УДАЛИТЬ «> </TD><tr>

< td></td>

< TD><INPUT type="reset" value="ОЧИСТИТЬ ПОЛЕ"> </TD></TR>

< td>

< /td>

< /TABLE>

< /td>

< /table>

< /td>

< /table>

< table bgcolor="black">

< td>

< /td>

< /table>

< /body>

< /html>

php удаления

< html>

< head>

< title>УДАЛЕНИЕ</title>

< /head>

< body bgcolor=#CD5555>

< table>

< td width="200″ bgcolor="CCCCCC"> <b>

<a href="SELECT_TOV. php"> Просмотреть список товаров< /a><br>

<a href="SEARCH_TOV. html">Осуществить поиск товара по устройству< /a><br>

<a href="SEARCH_TOV_V. html">Осуществить поиск товара < /a><br>

<a href="INSERT_TOV. html">Добавить данные о товаре < /a><br>

<a href="UPD_TOV. html"> Изменить данные о товаре < /a><br>

<a href="DEL_TOV. html"> Удалить данные о товаре < /a><br>

<a href="INDEX. html">НА ГЛАВНУЮ< /a><br>

< /td>

< td>

< table align=center border="0″ cellpadding="0″ cellspacing="0″ class="tbl1″ width="600″ height="100″ bgcolor="CD5555">

< td>

< center>

< font>

< h2><font color="white"> Удаление записей< br> из таблицы < br><i>"Товар"</i></h2></font>

< FORM action="DEL_TOV. php" method="POST">

< TABLE border="0″ align=center bgcolor="#8B3A3A">

< TR><TD><font color="white"> Номер товара< /TD><TD>

< INPUT type="text" name="NO_TOV" maxlength="3"> </TD></TR>

< TD></TD>

< TD><INPUT type="submit" value="УДАЛИТЬ «> </TD><tr>

< td></td>

< TD><INPUT type="reset" value="ОЧИСТИТЬ ПОЛЕ"> </TD></TR>

< td>

< /td>

< /TABLE>

< /td>

< /table>

< /td>

< /table>

< table bgcolor="black">

< td>

<? php

$NO_TOV=$_POST ['NO_TOV'];

if (! $NO_TOV)

{echo '<p style="color:red;«>Вы ввели не всю информацию!</p>';exit;}

$host='172. 23. 64. 64:// home/ftp/10/1 410 028/G141001_YUSHCHENKO. FDB';

$dbcharset='WIN1251';

$usname='sysdba';

$pswrd='masterkey';

$db=ibase_pconnect($host,$usname,$pswrd,$dbcharset);

if(!$db)

{echo 'Ошибка соединения с базой данных';exit;}

$query1="execute procedure DEL_TOV ('". $NO_TOV. «')»;

$it=ibase_trans ();

echo '< br>';

$result=ibase_query ($query1);

$ic=ibase_commit ();

if ($result)

echo '<p style="color:lime;«>Запись удалена</p>';

? >

</td>

</table>

</body>

</html>

Html просмотра

<html>

<head>

<title>ПРОСМОТР товара</title>

<META charset=windows-1251>

</head>

<body bgcolor="E0FFFF">

< table>

< td>

< table align=center border="0″ cellpadding="0″ cellspacing="0″ class="tbl1″ width="850″ height="100″ bgcolor="008B8B">

< td>

<a href="SELECT_TOV. php"> Просмотреть список товаров< /a><br>

<a href="SEARCH_TOV. html">Осуществить поиск товара по устройству< /a><br>

<a href="SEARCH_TOV_V. html">Осуществить поиск товара < /a><br>

<a href="INSERT_TOV. html">Добавить данные о товаре < /a><br>

ПоказатьСвернуть
Заполнить форму текущей работой