Название процедуры
|
Назначение
|
Add_chit
|
Добавление записи в таблице читатели
|
Add_biblio
|
Добавление записи в таблице библиотекари
|
Add_vyda4
|
Добавление записи в таблице выдача книг
|
Add_otdel
|
Добавление записи в таблице отделы книг
|
Add_knig
|
Добавление записи в таблице книги
|
Del_chit
|
Удаление записи в таблице читатели
|
Del _knig
|
Удаление записи в таблице книги
|
Del _otdel
|
Удаление записи в таблице отделы книг
|
Del _bibl
|
Удаление записи в таблице библиотекари
|
Del _vyda4a
|
Удаление записи в таблице выдача книг
|
Red_chitatel
|
Изменение записи в таблице читатели
|
Reg _otdel
|
Изменение записи в таблице отделы книг
|
Reg _knig
|
Изменение записи в таблице книги
|
Reg _bibl
|
Изменение записи в таблице библиотекари
|
Reg _vyda4
|
Изменение записи в таблице выдача книг
|
3. Разработка
клиентского приложения
Часть разработанного интерфейса и выполнение различных действий
при работе с БД будем рассматривать на примере таблицы "Читатель" так
как, интерфейс остальных таблиц а так же действия над ними практически
одинаковые.
. Выполняем команду File->New->Other и выбираем значок Data Module на вкладке New.
2. В созданный модуль DB переносим компоненты IBDatabase1 и IBTransaction1.
. Настраиваем свойства DatabaseName, DefaultTransaction для компонента
IBDatabase1 и свойство DefaultDatabase для компонента IBTransaction1.
. В созданный модуль FBDataModule переносим наборы
данных TIBQuery. Формируем запросы ко всем главным таблицам, просмотрам,
процедурам настроив свойство Query->SQL.
. В тот же контейнер переносим компонентs
TIBDataSource
. Связываем источники данных с запросами и таблицами в
свойстве DataSet.
. Добавляем в модуль данных компонент IBStoredProc1
(рис.3) для реализации хранимых процедур, настроив свойства Database и
Transaction
Рисунок 3. Наполнение модуля DB.
Данный DataModule не будет являться единственным. Приложение будет
состоять из множества форм, к которым соответственно будут подключены различные
DataModule.
Следующим этапом является размещение визуальных компонентов с
последующею их настройкой и обработкой событий.
. Переносим на главную форму требуемые компоненты
9. Перетаскиваем на каждую форму необходимое количество
компонентов DBGrid, для представления записей таблиц и свойством DataSource соединяем их с
источником данных, а заголовки столбцов таблиц переименовываем в
соответствующие названия полей.
. Перетаскиваем необходимое количество других
визуальных компонентов: TButton, TLabel, TEdit,
Рисунок 4. Внешний вид приложения и поиск.
. Далее аналогичным образом создаем остальные формы,
подключаем заголовочные файлы и в обработчиках событий кнопок.
17. Добавление реализуем через созданную ранее хранимую
процедуру на добавление: ADD_CHIT, для этого поместим на DataModule2 компонент IBStoredProc3 и настроим у него
следующие свойства:
DataBase=IBDatabase1; StoredProcName= ADD_CHIT.
Рисунок.5. Форма для таблицы читатели.
Для реализации фильтрации, поместим на форму два компонента Edit (для задания диапазона
фильтрации данных) и компонент Button чтобы подать запрос для фильтрации
. Для генерации отчетов добавляем на главную форму
соответствующие кнопки и пишем необходимый код в обработчике событий (см.
Приложение 2).
Для формирования отчетов также будут выделены отдельные
формы.
Рисунок 6. отчет
. Командой Run->Run компилируем, собираем и запускаем приложение.
Полный листинг программы представлен в Приложении 2.
4. Создание
Web приложения. Web-доступ
Web приложение в технологии
"Клиент-Сервер" представляет собой некий интерфейс между
пользователем и базой данных, расположенной на сервере и состоящей под
управлением какой-либо СУБД. Такие приложения отличаются от приложений Windows тем, что пользователю не
требуется наличие никаких установленных дополнительно на компьютере программ,
кроме Web-браузера. Все действия, которые требует выполнить такое
приложение, выполняются непосредственно на сервере. Кроме того, приложение Windows является уже
откомпилированным файлом, а Web-приложение интерпретируются сервером в момент
обращения пользователя к данному приложению.
Для создания такого приложения будет использован язык
программирования PHP - интерпретируемый, скриптовый язык программирования, созданный
для генерации HTML-страниц на Web-сервере и работы с базами данных. А так же язык
гипертекстовой разметки HTML для создания интерфейса приложения.
Итак, приложение будет содержать главную интерфейсную
страницу с заголовком, меню и частью, куда будет загружаться контент.
Остальные страницы будут полностью написаны на PHP: страницы с добавлением
данных в таблицы, удалением данных в таблицы и редактированием данных. Также
будет реализован поиск по базе данных.
В результате приложение будет иметь следующую карту страниц:
Рисунок 7. Схема созданного Web-приложения
Листинги Web-приложения представлены в приложении
"Созданное Web-приложение".
Доступ к приложению: #"784174.files/image008.jpg">
Рисунок 8. Главная страница
Рисунок.9. Таблица Читатели и редактирование
Рисунок.10. Результат редактирования
Рисунок.11. Удаление
Рисунок.12. Результат удаления
Рисунок.13. Поиск
Рисунок.14. Результаты поиска
Рисунок.14. Сортировка
Рисунок.15. Результаты сортировки
Заключение
В результате выполнения курсовой работы нами было создано два
клиентских приложения "Библиотека", это Windows и web - приложения. Были
достигнуты все поставленные цели и задачи: Углублены теоретические и
практические знания в области баз данных и систем управления базами данных.
Пользователям предоставляется широкая возможность одновременной работы в обоих
приложениях с одной базой данных.
Работа над курсовым проектом позволила приобрести навыки
создания информационных систем, основанных на клиент - серверной технологии с
использованием РСУБД Firebird. База данных для информационной системы создана
в среде РСУБД Firebird и разработана с помощью утилиты IBExpert.
Разработанная информационная система обладает всей
необходимой для работы функциональностью и вполне может стать основой в
деятельности библиотеки, т.к. web интерфейс является очень удобным приложением для
работы с БД.
Список
используемых источников
1. А.Я.
Архангельский, "Программирование в C++ Builder 6". - М.:
"БИНОМ", 2003 г.
2. Бори
Х., "FIREBIRD. Руководство разработчика баз
данных". - С-Пб.: "БХВ", 2006 г., 2-е издание.
. Шамис
В., "Borland C++ Builder
6.0". - С - Пб.: "Питер", 2005 г.
. Похомов
Б.И. C\C++ и Borland C++ Builder для студента. СПб.: БХВ-Петербург,
2006. - 448с.
. Хомоненко
А.Д., Ададуров С.Е. Работа с базами данных в C++ Builder. - СПб.:
БХВ-Петербург, 2006. - 496 с: ил.
6. <http://www.ibase.ru>
Приложения
Приложение 1.
SQL код создания БД
Создание таблиц
Читатель
/*** Tables ***/
/************************************************************/
CREATE TABLE CHITATEL (_CHITATELYA D_NAME /*
D_NAME = VARCHAR (45) NOT NULL */,_CHITATELYA D_NAME /* D_NAME = VARCHAR (45)
NOT NULL */,D_NAME /* D_NAME = VARCHAR (45) NOT NULL */,D_NAME /* D_NAME =
VARCHAR (45) NOT NULL */,_DOMA D_INDEXTYPE /* D_INDEXTYPE = INTEGER NOT NULL
*/,D_TEL /* D_TEL = VARCHAR (15) */,_CHITATELYA D_INDEXTYPE NOT NULL /*
D_INDEXTYPE = INTEGER NOT NULL */
);
/************************************************************/
/*** Primary Keys ***/
/************************************************************/TABLE
CHITATEL ADD PRIMARY KEY (NOMER_CHITATELYA);
/***********************************************************/
/*** Indices ***/
/************************************************************/
CREATE INDEX FAMILIYA_CHITATELYA ON CHITATEL
(FAMILIYA_CHITATELYA);INDEX ULICA ON CHITATEL (ULICA);
/************************************************************/
/************************************************************/
/* Trigger: CHITATEL_BI0 */OR ALTER TRIGGER
CHITATEL_BI0 FOR CHITATELBEFORE INSERT OR UPDATE POSITION 0(NEW. nomer_chitatelya
is null) then. nomer_chitatelya=gen_id (gen_chitatel,1);
^
SET TERM; ^
/* Fields descriptions */ON COLUMN CHITATEL.
NOMER_DOMA IS
'VALUE>0';
/************************************************************/
/*** Privileges ***/
/************************************************************/
Библиотекарь
CREATE TABLE BIBLIOTEKOR (_BIBLIOTEKORYA
D_INDEXTYPE NOT NULL /* D_INDEXTYPE = INTEGER NOT NULL */,_OTDELA D_INDEXTYPE
/* D_INDEXTYPE = INTEGER NOT NULL */,_BIBLIOTEKORYA D_NAME /* D_NAME = VARCHAR (45)
NOT NULL */,_BIBLIOTEKORYA D_NAME /* D_NAME = VARCHAR (45) NOT NULL */
);
/************************************************************/
/*** Primary Keys ***/
/************************************************************/TABLE
BIBLIOTEKOR ADD CONSTRAINT PK_BIBLIOTEKOR PRIMARY KEY (NOMER_BIBLIOTEKORYA);
/************************************************************/
/*** Foreign Keys ***/
/************************************************************/TABLE
BIBLIOTEKOR ADD CONSTRAINT FK_BIBLIOTEKOR_1 FOREIGN KEY (NOMER_OTDELA)
REFERENCES OTDEL_KNIG (NOMER_OTDELA);
/**********************************************************/
/*** Indices ***/
/************************************************************/INDEX
FAM ON BIBLIOTEKOR (FAMILIYA_BIBLIOTEKORYA);
/************************************************************/
/*** Triggers ***/
/************************************************************/
SET TERM ^;
/************************************************************/
/*** Triggers for tables ***/
/***********************************************************/
/* Trigger: BIBLIOTEKOR_BI0 */OR ALTER TRIGGER
BIBLIOTEKOR_BI0 FOR BIBLIOTEKORBEFORE INSERT OR UPDATE POSITION 0(NEW.
nomer_bibliotekorya is null) then. nomer_bibliotekorya=gen_id
(gen_bibliotekar,1);
^
SET TERM; ^
/* Fields descriptions */
COMMENT ON COLUMN BIBLIOTEKOR.
NOMER_BIBLIOTEKORYA IS
'VALUE>0';ON COLUMN BIBLIOTEKOR. NOMER_OTDELA
IS
'VALUE>0';
КнигиTABLE KNIGI (_KNIGI D_INDEXTYPE NOT NULL /* D_INDEXTYPE
= INTEGER NOT NULL */,_OTDELA D_INDEXTYPE /* D_INDEXTYPE = INTEGER NOT NULL
*/,_KNIGI D_NAME /* D_NAME = VARCHAR (45) NOT NULL */,_VO_STRANIC D_INDEXTYPE
/* D_INDEXTYPE = INTEGER NOT NULL */,D_NAME /* D_NAME = VARCHAR (45) NOT NULL
*/
);
/************************************************************/
/*** Primary Keys ***/
/************************************************************/TABLE
KNIGI ADD CONSTRAINT PK_KNIGI PRIMARY KEY (NOMER_KNIGI);
/***********************************************************/
/*** Foreign Keys ***/
/************************************************************/TABLE
KNIGI ADD CONSTRAINT FK_KNIGI_1 FOREIGN KEY (NOMER_OTDELA) REFERENCES
OTDEL_KNIG (NOMER_OTDELA);
/************************************************************/
/*** Indices ***/
/************************************************************/INDEX
"_KNIGA" ON KNIGI (NAZVANIE_KNIGI);
/************************************************************/
/*** Triggers ***/
/************************************************************/
SET TERM ^;
/************************************************************/
/*** Triggers for tables ***/
/************************************************************/
/* Trigger: KNIGI_BI0 */OR ALTER TRIGGER
KNIGI_BI0 FOR KNIGIBEFORE INSERT OR UPDATE POSITION 0(NEW. nomer_knigi is null)
then. nomer_knigi=gen_id (gen_knigi,1);
^
/* Trigger: KNIGI_HIST_BI0 */OR ALTER TRIGGER
KNIGI_HIST_BI0 FOR KNIGI
ACTIVE BEFORE INSERT POSITION 0
ASvariable nomer_knigi_tr smallint;variable
nomer_otdela_tr smallint;variable nazvanie_knigi_tr varchar (45);variable
kol_vo_stranic_tr smallint;variable avtor_tr varchar (45);variable IZMEN_TR
varchar (45);variable DATA_TR date;_TR=current_date;(inserting) then_TR=current_date;_knigi_tr=new.
nomer_knigi;_TR='добавление';_otdela_tr=new. nomer_otdela;_knigi_tr=new.
nazvanie_knigi;_vo_stranic_tr=new. kol_vo_stranic;_tr=new. avtor;
^
SET TERM; ^
/* Fields descriptions */
COMMENT ON COLUMN KNIGI. NOMER_KNIGI IS
'VALUE>0';ON COLUMN KNIGI. NOMER_OTDELA IS
'VALUE>0';ON COLUMN KNIGI. KOL_VO_STRANIC IS
'VALUE>0';
Исторя
CREATE TABLE NEW_TABLE (SMALLINT NOT NULL,_KNIGI
SMALLINT,_OTDELA SMALLINT,_KNIGI VARCHAR (45),_VO_STRANIC SMALLINT,VARCHAR
(45),VARCHAR (45),_TR DATE
);
/************************************************************/
/*** Primary Keys ***/
/************************************************************/
ALTER TABLE NEW_TABLE ADD CONSTRAINT
PK_NEW_TABLE_1 PRIMARY KEY (ID);
Отдел книг
CREATE TABLE OTDEL_KNIG (_OTDELA D_NAME /* D_NAME
= VARCHAR (45) NOT NULL */,_OTDELA D_INDEXTYPE NOT NULL /* D_INDEXTYPE =
INTEGER NOT NULL */,_VO_KNIG D_INDEXTYPE /* D_INDEXTYPE = INTEGER NOT NULL
*/,D_TEL /* D_TEL = VARCHAR (15) */,_BIBLIOTEKORYA D_INDEXTYPE /* D_INDEXTYPE =
INTEGER NOT NULL */
);
/************************************************************/
/*** Primary Keys ***/
/************************************************************/TABLE
OTDEL_KNIG ADD CONSTRAINT PK_OTDEL_KNIG PRIMARY KEY (NOMER_OTDELA);
/************************************************************/
/*** Indices ***/
/************************************************************/INDEX
NAZV ON OTDEL_KNIG (NAZVANIE_OTDELA);
/************************************************************/
/*** Triggers ***/
/*************************************************************TERM
^;
/************************************************************/
/*** Triggers for tables ***/
/************************************************************/
/* Trigger: OTDEL_BI0 */OR ALTER TRIGGER
OTDEL_BI0 FOR OTDEL_KNIGBEFORE INSERT OR UPDATE POSITION 0(NEW. nomer_otdela is
null) then. nomer_otdela=gen_id (gen_otdel_knig,1);
^
SET TERM; ^
/* Fields descriptions */
COMMENT ON COLUMN OTDEL_KNIG. NOMER_OTDELA IS
'VALUE>0';ON COLUMN OTDEL_KNIG. KOL_VO_KNIG IS
'VALUE>0';ON COLUMN OTDEL_KNIG.
NOMER_BIBLIOTEKORYA IS
'VALUE>0';
Выдача книг
CREATE TABLE VIDA4A_KNIG (_ZAPISI D_INDEXTYPE NOT
NULL /* D_INDEXTYPE = INTEGER NOT NULL */,_KNIGI D_INDEXTYPE /* D_INDEXTYPE =
INTEGER NOT NULL */,_BIBLIOTEKORYA D_INDEXTYPE /* D_INDEXTYPE = INTEGER NOT
NULL */,_CHITATELYA D_INDEXTYPE /* D_INDEXTYPE = INTEGER NOT NULL
*/,_VYDA4I_KNIGI D_DATETYPE /* D_DATETYPE = DATE NOT NULL */,_VOZVRATA_KNIGI
D_DATETYPE /* D_DATETYPE = DATE NOT NULL */
);
/************************************************************/
/*** Primary Keys ***/
/************************************************************/TABLE
VIDA4A_KNIG ADD CONSTRAINT PK_VIDA4A_KNIG PRIMARY KEY (NOMER_ZAPISI);
/**********************************************************/
/*** Foreign Keys ***/
/************************************************************/
ALTER TABLE VIDA4A_KNIG ADD CONSTRAINT
FK_VIDA4A_KNIG_1 FOREIGN KEY (NOMER_KNIGI) REFERENCES KNIGI (NOMER_KNIGI);TABLE
VIDA4A_KNIG ADD CONSTRAINT FK_VIDA4A_KNIG_2 FOREIGN KEY (NOMER_BIBLIOTEKORYA)
REFERENCES BIBLIOTEKOR (NOMER_BIBLIOTEKORYA);
/************************************************************/
/*** Triggers ***/
/************************************************************/
SET TERM ^;
/************************************************************/
/*** Triggers for tables ***/
/************************************************************/
/* Trigger: VYDACHA_KNIG_BI0 */OR ALTER TRIGGER
VYDACHA_KNIG_BI0 FOR VIDA4A_KNIGBEFORE INSERT OR UPDATE POSITION 0(NEW.
nomer_zapisi is null) then. nomer_zapisi=gen_id (gen_vida4a_knig,1);^TERM; ^
/* Fields descriptions */ON COLUMN VIDA4A_KNIG.
NOMER_ZAPISI IS
'VALUE>0';ON COLUMN VIDA4A_KNIG. NOMER_KNIGI
IS
'VALUE>0';ON COLUMN VIDA4A_KNIG. NOMER_BIBLIOTEKORYA
IS
'VALUE>0';ON COLUMN VIDA4A_KNIG.
NOMER_CHITATELYA IS
'VALUE>0';
Представления
/* View: KNIGI_VIEW */VIEW KNIGI_VIEW
(_KNIGI,_OTDELA,_KNIGI,_VO_STRANIC,)knigi. nomer_knigi,otdel_knig.
nomer_otdela,knigi. nazvanie_knigi,knigi. kol_vo_stranic,knigi.
avtorknigi,otdel_knigknigi. nomer_otdela=otdel_knig. nomer_otdela
;
/* View: VOZVRAT_VIEW */VIEW VOZVRAT_VIEW
(_CHITATELYA,_CHITATELYA,,_CHITATELYA,_KNIGI,_KNIGI,_VOZVRATA_KNIGI)chitatel.
familiya_chitatelya,chitatel. imya_chitatelya,chitatel. otchestvo,a_knig.
nomer_chitatelya,vida4a_knig. nomer_knigi,knigi. nazvanie_knigi,a_knig.
data_vozvrata_knigichitatel,vida4a_knig,knigichitatel.
nomer_chitatelya=vida4a_knig. nomer_chitatelya and knigi.
nomer_knigi=vida4a_knig. nomer_knigi
;
Хранимые процедуры Редактирование и удаление
данных
beginINTO chitatel (chitatel.
familiya_chitatelya,chitatel. imya_chitatelya,chitatel. otchestvo,.
ulica,chitatel. nomer_doma,chitatel. telefon)(: familiya,: name,: otchestvo,:
ulica,: n_doma,: tel);;INTO bibliotekor (bibliotekor. nomer_otdela,.
familiya_bibliotekorya,. name_bibliotekorya)(: n_otdel,: familiya,: name);;
begininto vida4a_knig
(nomer_knigi,nomer_chitatelya,_bibliotekorya,data_vyda4i_knigi,data_vozvrata_knigi)(:
n_knigi,: n_biblio,: n_4itatelya,: data_vyd,: data_vozv);;into otdel_knig
(otdel_knig. nazvanie_otdela,otdel_knig. kol_vo_knig,_knig. TELEFON,otdel_knig.
nomer_bibliotekorya)(: nazvanie,: kol_knig,: telefon,: n_biblio);;INTO knigi
(knigi. nomer_otdela,knigi. nazvanie_knigi, knigi. kol_vo_stranic,knigi. avtor)(:
n_otdela,: new_nazvanie,: kol_vo_stranic,: avtor);;FROM
vida4a_knig(nomer_zapisi =: n_zapisi);FROM otdel_knig(nomer_otdela =:
n_otdela);FROM knigi(nomer_knigi =: n_knigi);FROM
bibliotekor(nomer_bibliotekorya =: n_biblio);FROM chitatel(nomer_CHITATELYA =:
n_CHITAT);chitatelnomer_chitatelya=: n_chit,_doma =: n_doma,_chitatelya =:
familiya,_chitatelya =: name,=: otchestvo,=: ulica,=: tel(nomer_chitatelya =:
n_chit);sqlcode - 530 dokey_ne_ice;bibliotekornomer_bibliotekorya =:
n_biblio,_otdela =: n_otdela, familiya_bibliotekorya =:
familiya,_bibliotekorya=: name(nomer_bibliotekorya =:
n_biblio);vida4a_knignomer_zapisi=: n_zapisi,_knigi =: n_knigi,_chitatelya =:
n_chit,_bibliotekorya =: n_biblio,_vyda4i_knigi=: data_vyd,_vozvrata_knigi=:
data_vozvr(nomer_zapisi =: n_zapisi);sqlcode - 530
dokey_ne_ice;otdel_knignazvanie_otdela=: name_ot,_otdela =: n_otel,_vo_knig =:
kol_knig,_bibliotekorya =: n_biblio,=: tel(nomer_otdela =: n_otel);sqlcode -
530 dokey_ne_ice;(: KOL_VO_STRANIC<=0) then exception stranicy;kniginomer_knigi
=: n_knigi,_otdela =: n_otdela, nazvanie_knigi =: new_nazvanie,_vo_stranic =:
kol_vo_stranic,=: avtor(nomer_knigi =: N_KNIGI);sqlcode - 530 dokey_ne_ice;
Домены
CREATE DOMAIN D_ADRES AS(40) CHARACTER SET
WIN1251NULLWIN1251;DOMAIN D_DATETYPE ASNULL;DOMAIN D_INDEXTYPE ASNULL;ON DOMAIN
D_INDEXTYPE IS
'VALUE>0';
CREATE DOMAIN D_NAME AS(45) CHARACTER SET
WIN1251NULLWIN1251;DOMAIN D_TEL AS(15) CHARACTER SET WIN1251WIN1251;
Приложение
2. Листинг клиентского приложения
// ---------------------------------------------------------------------------
#include <vcl. h>
#pragma hdrstop
#include "Unit1. h"
#include "Unit2. h"
#include "Unit3. h"
//
---------------------------------------------------------------------------
#pragma package (smart_init)
#pragma resource "*. dfm"*Form1;
//
---------------------------------------------------------------------------
__fastcall TForm1:: TForm1 (TComponent* Owner)
: TForm (Owner)
{
}
//
---------------------------------------------------------------------------__fastcall
TForm1:: Edit1Change (TObject *Sender)
{(RadioButton1->Checked==true)
{Set<TLocateOption,0,1> flags;<<
loPartialKey;(! DataModule2->IBTable2->IsEmpty
())->IBTable2->Locate ("nomer_knigi", Edit1->Text, flags);
}(RadioButton2->Checked==true)
{Set<TLocateOption,0,1> flags;<<
loPartialKey;(! DataModule2->IBTable2->IsEmpty
())->IBTable2->Locate ("nazvanie_knigi", Edit1->Text,
flags); }(RadioButton3->Checked==true)
{Set<TLocateOption,0,1> flags;<<
loPartialKey;(! DataModule2->IBTable2->IsEmpty ())->IBTable2->Locate
("avtor", Edit1->Text, flags); }
}
//
---------------------------------------------------------------------------__fastcall
TForm1:: Button1Click (TObject *Sender)
{->IBStoredProc1->ParamByName
("familiya") - >AsString=Edit2->Text;->IBStoredProc1->ParamByName
("name") -
>AsString=Edit3->Text;->IBStoredProc1->ParamByName
("otchestvo") -
>AsString=Edit4->Text;->IBStoredProc1->ParamByName
("ulica") - >AsString=Edit5->Text;->IBStoredProc1->ParamByName
("n_doma") - >AsString=Edit6->Text;->IBStoredProc1->ParamByName
("tel") -
>AsString=Edit7->Text;->IBStoredProc1->ParamByName
("n_chit") -
>AsString=Edit10->Text;->IBStoredProc1->Prepare
();->IBStoredProc1->ExecProc ();->IBTable3->Active=false;->IBTable3->Active=true;
}
// ---------------------------------------------------------------------------
void __fastcall TForm1:: Button2Click (TObject
*Sender)
{->IBStoredProc2->ParamByName
("familiya") -
>AsString=Edit2->Text;->IBStoredProc2->ParamByName
("name") - >AsString=Edit3->Text;->IBStoredProc2->ParamByName
("otchestvo") -
>AsString=Edit4->Text;->IBStoredProc2->ParamByName
("ulica") -
>AsString=Edit5->Text;->IBStoredProc2->ParamByName
("n_doma") - >AsString=Edit6->Text;->IBStoredProc2->ParamByName
("tel") - >AsString=Edit7->Text;->IBStoredProc2->Prepare
();->IBStoredProc2->ExecProc
();->IBTable3->Active=false;->IBTable3->Active=true;
}
//
---------------------------------------------------------------------------__fastcall
TForm1:: Button3Click (TObject *Sender)
{->IBStoredProc3->ParamByName ("n_CHITAT")
- >AsString=Edit8->Text;->IBStoredProc3->Prepare
();->IBStoredProc3->ExecProc
();->IBTable3->Active=false;->IBTable3->Active=true;
}
//
---------------------------------------------------------------------------
void __fastcall TForm1:: Button5Click (TObject
*Sender)
{->IBTable3->Active=false;->IBTable3->Filtered=false;->IBTable3->Filter="NOMER_CHITATELYA='"+Edit9->Text+"'";->IBTable3->Active=true;->IBTable3->Filtered=true;
}
//
---------------------------------------------------------------------------
void __fastcall TForm1:: Button4Click (TObject
*Sender)
{->IBTable3->Filtered=false;
}
//
---------------------------------------------------------------------------
void __fastcall TForm1:: Button6Click (TObject
*Sender)
{(RadioButton4->Checked==true)
{DataModule2->IBTable3->IndexName="RDB$PRIMARY1";
}if (RadioButton5->Checked==true)
{DataModule2->IBTable3->IndexName="familiya_chitatelya";
}if (RadioButton6->Checked==true)
{DataModule2->IBTable3->IndexName="ulica";
}
}
//
---------------------------------------------------------------------------__fastcall
TForm1:: Button7Click (TObject *Sender)
{->IBStoredProc4->ParamByName
("n_biblio") -
>AsString=Edit11->Text;->IBStoredProc4->ParamByName
("n_otdela") - >AsString=Edit12->Text;->IBStoredProc4->ParamByName
("familiya") -
>AsString=Edit13->Text;->IBStoredProc4->ParamByName
("name") -
>AsString=Edit14->Text;->IBStoredProc4->Prepare
();->IBStoredProc4->ExecProc ();->IBTable4->Active=false;->IBTable4->Active=true;
}
// ---------------------------------------------------------------------------__fastcall
TForm1:: Button8Click (TObject *Sender)
{->IBStoredProc5->ParamByName
("n_biblio") -
>AsString=Edit11->Text;->IBStoredProc5->ParamByName
("n_otdel") - >AsString=Edit12->Text;->IBStoredProc5->ParamByName
("familiya") -
>AsString=Edit13->Text;->IBStoredProc5->ParamByName
("name") -
>AsString=Edit14->Text;->IBStoredProc5->Prepare
();->IBStoredProc5->ExecProc ();->IBTable4->Active=false;->IBTable4->Active=true;
}
// ---------------------------------------------------------------------------__fastcall
TForm1:: Button9Click (TObject *Sender)
{->IBStoredProc6->ParamByName
("n_biblio") -
>AsString=Edit15->Text;->IBStoredProc6->Prepare
();->IBStoredProc6->ExecProc ();->IBTable4->Active=false;->IBTable4->Active=true;
}
//
---------------------------------------------------------------------------__fastcall
TForm1:: Button10Click (TObject *Sender)
{->IBTable4->Active=false;->IBTable4->Filtered=false;->IBTable4->Filter="Nomer_BIBLIOtekorya='"+Edit16->Text+"'";->IBTable4->Active=true;->IBTable4->Filtered=true;
}
//
---------------------------------------------------------------------------__fastcall
TForm1:: Button12Click (TObject *Sender)
{(RadioButton7->Checked==true)
{DataModule2->IBTable4->IndexName="pk_bibliotekor";
}if (RadioButton8->Checked==true)
{DataModule2->IBTable4->IndexName="fam";
}
}
//
---------------------------------------------------------------------------
void __fastcall TForm1:: Button11Click (TObject
*Sender)
{->IBTable4->Filtered=false;
}
//
---------------------------------------------------------------------------
void __fastcall TForm1:: Button13Click (TObject
*Sender)
{->IBStoredProc7->ParamByName
("n_knigi") -
>AsString=Edit17->Text;->IBStoredProc7->ParamByName ("n_otdela")
- >AsString=Edit18->Text;->IBStoredProc7->ParamByName
("new_nazvanie") -
>AsString=Edit19->Text;->IBStoredProc7->ParamByName
("kol_vo_stranic") -
>AsString=Edit20->Text;->IBStoredProc7->ParamByName
("avtor") - >AsString=Edit21->Text;->IBStoredProc7->Prepare
();->IBStoredProc7->ExecProc
();->IBTable5->Active=false;->IBTable5->Active=true;
}
//
---------------------------------------------------------------------------
void __fastcall TForm1:: Button14Click (TObject
*Sender)
{
DataModule2->IBStoredProc8->ParamByName
("n_otdela") -
>AsString=Edit18->Text;->IBStoredProc8->ParamByName
("new_nazvanie") -
>AsString=Edit19->Text;->IBStoredProc8->ParamByName
("kol_vo_stranic") -
>AsString=Edit20->Text;->IBStoredProc8->ParamByName ("avtor")
- >AsString=Edit21->Text;->IBStoredProc8->Prepare
();->IBStoredProc8->ExecProc
();->IBTable5->Active=false;->IBTable5->Active=true;
}
//
---------------------------------------------------------------------------
void __fastcall TForm1:: Button15Click (TObject
*Sender)
{->IBStoredProc9->ParamByName
("n_knigi") -
>AsString=Edit22->Text;->IBStoredProc9->Prepare
();->IBStoredProc9->ExecProc
();->IBTable5->Active=false;->IBTable5->Active=true;
}
//
---------------------------------------------------------------------------
void __fastcall TForm1:: Button16Click (TObject
*Sender)
{(RadioButton9->Checked==true)
{DataModule2->IBTable5->IndexName="pk_knigi";
}if (RadioButton10->Checked==true)
{DataModule2->IBTable5->IndexName="_kniga";
}
}
// ---------------------------------------------------------------------------
void __fastcall TForm1:: Button17Click (TObject
*Sender)
{->IBStoredProc10->ParamByName
("name_ot") -
>AsString=Edit23->Text;->IBStoredProc10->ParamByName
("n_otel") - >AsString=Edit24->Text;->IBStoredProc10->ParamByName
("kol_knig") -
>AsString=Edit25->Text;->IBStoredProc10->ParamByName
("tel") -
>AsString=Edit26->Text;->IBStoredProc10->ParamByName
("n_biblio") - >AsString=Edit27->Text;->IBStoredProc10->Prepare
();->IBStoredProc10->ExecProc ();->IBTable6->Active=false;->IBTable6->Active=true;
}
//
---------------------------------------------------------------------------
void __fastcall TForm1:: Button20Click (TObject
*Sender)
{(RadioButton11->Checked==true)
{DataModule2->IBTable6->IndexName="pk_otdel_knig";
}if (RadioButton12->Checked==true)
{DataModule2->IBTable6->IndexName="nazv";
}
}
//
---------------------------------------------------------------------------
void __fastcall TForm1:: Button18Click (TObject
*Sender)
{->IBStoredProc11->ParamByName
("nazvanie") -
>AsString=Edit23->Text;->IBStoredProc11->ParamByName
("kol_knig") -
>AsString=Edit25->Text;->IBStoredProc11->ParamByName
("telefon") - >AsString=Edit26->Text;->IBStoredProc11->ParamByName
("n_biblio") - >AsString=Edit27->Text;->IBStoredProc11->Prepare
();->IBStoredProc11->ExecProc
();->IBTable6->Active=false;->IBTable6->Active=true;
}
//
---------------------------------------------------------------------------
void __fastcall TForm1:: Button19Click (TObject
*Sender)
{->IBStoredProc12->ParamByName
("n_otdela") -
>AsString=Edit28->Text;->IBStoredProc12->Prepare
();->IBStoredProc12->ExecProc
();->IBTable6->Active=false;->IBTable6->Active=true;
}
//
---------------------------------------------------------------------------
void __fastcall TForm1:: Button21Click (TObject
*Sender)
{->IBStoredProc13->ParamByName
("n_zapisi") -
>AsString=Edit29->Text;->IBStoredProc13->ParamByName
("n_knigi") -
>AsString=Edit30->Text;->IBStoredProc13->ParamByName
("n_biblio") - >AsString=Edit31->Text;->IBStoredProc13->ParamByName
("n_chit") -
>AsString=Edit32->Text;->IBStoredProc13->ParamByName
("data_vyd") -
>AsString=Edit33->Text;->IBStoredProc13->ParamByName
("data_vozvr") - >AsString=Edit34->Text;->IBStoredProc13->Prepare
();->IBStoredProc13->ExecProc
();->IBTable7->Active=false;->IBTable7->Active=true;
}
//
---------------------------------------------------------------------------
void __fastcall TForm1:: Button22Click (TObject
*Sender)
{->IBStoredProc14->ParamByName
("n_zapisi") - >AsString=Edit29->Text;->IBStoredProc14->ParamByName
("n_knigi") -
>AsString=Edit30->Text;->IBStoredProc14->ParamByName
("n_biblio") -
>AsString=Edit31->Text;->IBStoredProc14->ParamByName
("n_4itatelya") -
>AsString=Edit32->Text;->IBStoredProc14->ParamByName ("data_vyd")
- >AsString=Edit33->Text;->IBStoredProc14->ParamByName
("data_vozv") -
>AsString=Edit34->Text;->IBStoredProc14->Prepare
();->IBStoredProc14->ExecProc
();->IBTable7->Active=false;->IBTable7->Active=true;
}
// ---------------------------------------------------------------------------
void __fastcall TForm1:: Button23Click (TObject
*Sender)
{->IBStoredProc15->ParamByName
("n_zapisi") -
>AsString=Edit35->Text;->IBStoredProc15->Prepare
();->IBStoredProc15->ExecProc
();->IBTable7->Active=false;->IBTable7->Active=true;
}
//
---------------------------------------------------------------------------
void __fastcall TForm1:: Edit36Change (TObject
*Sender)
{(RadioButton13->Checked==true)
{Set<TLocateOption,0,1> flags;<<
loPartialKey;(! DataModule2->IBTable7->IsEmpty
())->IBTable7->Locate ("nomer_zapisi", Edit36->Text, flags);
}(RadioButton14->Checked==true)
{Set<TLocateOption,0,1> flags;<<
loPartialKey;(! DataModule2->IBTable7->IsEmpty
())->IBTable7->Locate ("nomer_chitatelya", Edit36->Text,
flags); }
}
// ---------------------------------------------------------------------------
void __fastcall TForm1:: Button24Click (TObject
*Sender)
{(RadioButton15->Checked==true)
{DataModule2->IBTable7->IndexName="pk_vida4a_knig";
}if (RadioButton16->Checked==true)
{DataModule2->IBTable7->IndexName="fk_vida4a_knig_1";
}
}
//
---------------------------------------------------------------------------
void __fastcall TForm1:: Button25Click (TObject
*Sender)
{->QuickRep1->Preview ();
}
//
-------------------------------------------------------------------
Приложение 3.
"Создание Web-приложения"
Листинг 3.1.html-файл index.html
<html>
<head>
<title>Библиотека</title>
</head>
<body background=4. jpg>
<p align=center><b><font
size="7" color="indigo"><i><b>Библиотека>>>>>
</i></font></b></p>
<p><b><font size="6"
color="indigo"><i><b><<<Просмотры</i></font></b>
<td><h2><img src="111.
gif"><a href=knigi_view. php target="2">Все книги</h2></a>
<td><h2><img src="211.
gif"><a href=vozvrat_view. php target="2">Возврат книг</h2></a>
<td><h2><img src="211.
gif"><a href=knigi_hist. php target="2">История книг</h2></a>
</td>
<p><b><font size="6"
color="indigo"><i><b><<<<Таблицы</i></font></b>
<td><h2><img src="111.
gif"><a href=chitatel. php target="2">Читатели</h2></a>
<h2><img src="211.
gif"><a href=bibliotekar. php target="2">Библиотекари</h2></a>
<td><h2><img src="111.
gif"><a href=otdel. php target="2">Отделы книг</h2></a>
<td><h2><img src="211.
gif"><a href=knigi. php target="2">Книги</h2></a>
<td><h2><img src="111.
gif"><a href=vydacha. php target="2">Выдача книг</h2></a>
</td>
</body>
</html>
Листинг 3.2 PHP код страницы vozvrat_view.
php
<body background=13. jpg>
<h1 align="center">Просмотр
возврвта книг </h1>
<? php
$host='inf612c00: D: \DB\G140604_KALASHNIKOVA.
FDB';
$usname='SYSDBA';
$pswrd='masterkey';
$db=ibase_pconnect ($host, $usname, $pswrd); (! $db)
{
echo 'Ошибка соединения с БД';
exit;
}
$query="select * from vozvrat_VIEW";
$result=ibase_query ($query);'<table border=1
align=center>';'<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;($row=ibase_fetch_row ($result))
{$i++;"<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>";
}"</table>";_free_result
($result);
? ><a
href="index.html"><li>На главную</li></a>
</body>
</html>
Листинг 3.3 PHP код страницы knigi_hist.
php
<html>
<head>
<title>История книг</title>
</head>
<body background=4. jpg>
<b><font size="7"
color="indigo"><i><b>История
книг</i></font></b><br>
<? php
$host='inf612c00: D: \DB\G140604_KALASHNIKOVA.
FDB';
$usname='SYSDBA';
$pswrd='masterkey';
$db=ibase_pconnect ($host, $usname, $pswrd); (! $db)
{
echo 'Ошибка соединения с БД';
exit;
}
$query="select * from new_table";
$result=ibase_query ($query);'<table border=1
align=center>';'<tr><th bgcolor=\"\">Номер
записи</th>'.
'<th bgcolor=\"\">Номер
книги</th>'.
'<th bgcolor=\"\">Номер
отдела</th>'.
'<th bgcolor=\"\">Название</th>'.
'<th bgcolor=\"\">Кол-во страниц</th>'.
'<th
bgcolor=\"\">Автор</th>'.
'<th
bgcolor=\"\">Изминение</th>'.
'<th
bgcolor=\"\">Дата</th>'.
'<tr>';
$i=0;($row=ibase_fetch_row ($result))
{$i++;"<tr><td>$row [0]
</td>
<td>$row [1] </td>
<td>$row [2] </td>
<td>$row [3] </td>
<td>$row [5] </td>
<td>$row [6] </td>
<td>$row [7] </td></tr>";
}"</table>";_free_result
($result);
? >
</body>
</html>
Листинг 3.4 PHP код страницы knigi. php
<html>
<head>
<title>Таблица Книги</title>
<meta http-equiv="Выберите расширение для
паковки" content="text/html; charset=windows-1251">
</head>
<body background=13. jpg>
<p><b><font size="7"
color="indigo"><i><b>Таблица
Книги</i></font></b><br>
<? php
$host='inf612c00: D: \DB\G140604_KALASHNIKOVA.
FDB';
$usname='SYSDBA';
$pswrd='masterkey';
$db=ibase_pconnect ($host, $usname, $pswrd); (! $db)
{
echo 'Ошибка соединения с БД';
exit;
}
$query="select * from KNIGI";
$result=ibase_query ($query);'<table border=1
align=center>';'<tr><th bgcolor=\"\">№книги</th>'.
'<th bgcolor=\"\">№
отдела</th>'.
'<th
bgcolor=\"\">Название</th>'.
'<th bgcolor=\"\">Кол-во страниц</th>'.
'<th
bgcolor=\"\">Автор</th>'.
'<tr>';
$i=0;($row=ibase_fetch_row ($result))
{$i++;"<tr><td>$row [0]
</td>
<td>$row [1] </td>
<td>$row [2] </td>
<td>$row [3] </td>
<td>$row [4] </td>
</tr>";
}"</table>";_free_result
($result);
? >
<br><p align="center">
<form action="upd_knigi. php"
method="post"><br>
№книги <input type="text"
name="n_knigi" size="3">
№ отдела <input type="text"
name="n_otdela" size="3">
Название <input type="text"
name="new_nazvanie" size="10">
Кол-во страниц <input type="text"
name="kol_vo_ctranic" size="10">
Автор <input type="text"
name="avtor" size="10">
<br><input type="submit"
value="Изменить">
</form></p>
<br><hr>
<p><b><font size="5"
color="indigo"><i><b>Операции над
таблицей</i></font></b>
<a
href="ins_knigi.html"><li>Ввод данных</li></a>
<a
href="del_knigi.html"><li>Удаление
записей</li></a>
<a href="search_knigi.html"><li>Поиск
информации</li></a>
<a
href="sort_knigi.html"><li>Сортировка
записей</li></a>
<a href="index.html"><li>На
главную</li></a>
</body>
</html>
Листинг 3.5 код страницы ins_knigi.html
<html>
<head>
<title>Таблица Книги - форма ввода новой записи</title>
<meta http-equiv="Выберите расширение для
паковки" content="text/html; charset=windows-1251">
</head>
<body background=13. jpg>
<p><b><font size="6"
color="indigo"><i><b>Добавление новой
книги</i></font></b>
<br>
<form action="ins_knigi. php"
method="post"><br>
<p><b><font size="5"
color="indigo"><i><b>Название
</i></font></b><input type="text"
name="new_nazvanie"><br>
<p><b><font size="5"
color="indigo"><i><b>№отдела
</i></font></b><input type="text"
name="n_otdela"><br>
<p><b><font size="5"
color="indigo"><i><b>Кол-во страниц
</i></font></b><input type="text"
name="kol_vo_stranic"><br>
<p><b><font size="5"
color="indigo"><i><b>Автор
</i></font></b><input type="text"
name="avtor"><br>
<br>
<input type="submit" value="Добавить">
</form>
</body>
</html>
Листинг 3.6 PHP код страницы ins_knigi.
php
<html>
<head>
<title>Таблица Книги - результаты ввода</title>
<meta http-equiv="Выберите расширение для
паковки" content="text/html; charset=windows-1251">
</head>
<body background=13. jpg>
<p><b><font size="7"
color="indigo"><i><b>Добавление
книги</i></font></b><br>
<? php
$n_otdela=$_POST ['n_otdela'];
$new_nazvanie=$_POST ['new_nazvanie'];
$kol_vo_stranic=$_POST ['kol_vo_stranic'];
$avtor=$_POST ['avtor'];(! $new_nazvanie)
{ echo 'Вы ввели не все данные';
exit;
}
$host='inf612c00: D: \DB\G140604_KALASHNIKOVA.
FDB';
$usname='SYSDBA';
$pswrd='masterkey';
$db=ibase_pconnect ($host, $usname, $pswrd); (! $db)
{
echo 'Ошибка соединения с БД';
exit;
}
$query="execute procedure ADD_KNIG ('".
$n_otdela. "','". $new_nazvanie. "','". $kol_vo_stranic.
"','". $avtor. "')";
$it=ibase_trans ();'<br>';
$result=ibase_query ($query);
$ic=ibase_commit (); ($result) {echo'Запись успешно
добавлена'; }
? >
<br><br><hr>
<a
href="ins_knigi.html"><li>Назад</li></a>
<a href="knigi.
php"><li>Просмотр таблицы</li></a>
<a
href="index.html>"><li>В начало</li></a>
</body>
</html>
Листинг 3.7 PHP код страницы del_knigi. php
<html>
<head>
<title>Таблица Книги - результаты ввода</title>
<meta http-equiv="Выберите расширение для паковки"
content="text/html; charset=windows-1251">
</head>
<body background=13. jpg>
<p><b><font size="7"
color="indigo"><i><b>Таблица Книга - результаты ввода</i></font></b><br><br>
<? php
$n_knigi=$_POST ['n_knigi'];
if (! $n_knigi)
{ echo 'Вы ввели не все данные';
exit;
}
$host='inf612c00: D: \DB\G140604_KALASHNIKOVA.
FDB';
$usname='SYSDBA';
$pswrd='masterkey';
$db=ibase_pconnect ($host, $usname, $pswrd);
if (! $db)
{'Ошибка соединения с БД';
exit;
}
$query="execute procedure DEL_KNIG ('".
$n_knigi. "')";
$it=ibase_trans ();'<br>';
$result=ibase_query ($query);
$ic=ibase_commit ();
if ($result) {echo'Запись успешно удалена'; }
? >
<br><br><hr>
<a
href="del_knigi.html"><li>Назад</li></a>
<a href="knigi. php"><li>Просмотр таблицы</li></a>
<a href="index.html"><li>В начало</li></a>
</body>
</html>
Листинг 3.8 код страницы del_knigi.html
<html>
<head>
<title>Удаление книги</title>
<meta http-equiv="Выберите расширение для
паковки" content="text/html; charset=windows-1251">
</head>
<body background=13. jpg>
<p><b><font size="6"
color="indigo"><i><b>Удаление
книги</i></font></b>
<br>
<form action="del_knigi. php"
method="post"><br>
<p><b><font size="5"
color="indigo"><i><b>№книги </i></font></b><input
type="text" name="n_knigi"><br>
<br>
<input type="submit"
value="Удалить">
</form>
</body>
</html>
Листинг 3.9 PHP код страницы upd_knigi.
php
<html>
<head>
<title>Таблица Книги - результаты
редактирования</title>
<meta http-equiv="Выберите расширение для
паковки" content="text/html; charset=windows-1251">
</head>
<body background=13. jpg>
<p><b><font size="7"
color="indigo"><i><b>Результаты редактирования
книги</i></font></b><br>
<? php
$n_knigi=$_POST ['n_knigi'];
$n_otdela=$_POST ['n_otdela'];
$new_nazvanie=$_POST ['new_nazvanie'];
$kol_vo_ctranic=$_POST ['kol_vo_ctranic'];
$avtor=$_POST ['avtor'];(! $n_knigi||!
$new_nazvanie||! $avtor)
{ echo 'Вы ввели не все данные';
exit;
}
$host='inf612c00: D: \DB\G140604_KALASHNIKOVA.
FDB';
$usname='SYSDBA';
$pswrd='masterkey';
$db=ibase_pconnect ($host, $usname, $pswrd); (! $db)
{
echo 'Ошибка соединения с БД';
exit;
}
$query="execute procedure RED_KNIG ('".
$n_knigi. "','". $n_otdela. "','". $new_nazvanie.
"','". $kol_vo_ctranic. "','". $avtor. "')";
$it=ibase_trans ();'<br>';
$result=ibase_query ($query);
$ic=ibase_commit (); ($result) {echo'Запись успешно
изменена'; }
? >
<br><br><hr>
<a href="knigi. php"><li>Просмотр таблицы</li></a>
<a href="index.html"><li>В
начало</li></a>
</body>
</html>
Листинг 3.10. код страницы search_knigi.html
<html>
<head>
<title>поиск книги</title>
<meta http-equiv="Выберите расширение для
паковки" content="text/html; charset=windows-1251">
</head>
<body background=13. jpg>
<p><b><font size="6"
color="indigo"><i><b>Поиск
книги</i></font></b>
<br>
<form action="search_knigi. php"
method="post"><br>
<p><b><font size="6"
color="indigo"><i><b>Выберите тип поиска:
</i></font></b><br>
<select name="search_type">
<option value="nomer_knigi">№книги</option>
<option
value="nazvanie_knigi">Название</option>
<option
value="avtor">Автор</option>
</select>
<br><br><br>
<p><b><font size="6"
color="indigo"><i><b>Введите информацию для поиска:
</i></font></b><br>
<input type="text" name="search_term">
<br><br>
<input type="submit"
value="Найти">
</form>
</body>
</html>
Листинг 3.11. PHP код страницы search_knigi.
php
<html>
<head>
<title>Поиск книги</title>
<meta http-equiv="Выберите расширение для
паковки" content="text/html; charset=windows-1251">
</head>
<body background=13. jpg>
<p><b><font size="7"
color="indigo"><i><b> Результаты поиска
книги</i></font></b><br>
<? php
$searchtype=$_POST ['search_type'];
$searchterm=$_POST ['search_term'];
$searchterm=trim ($searchterm);(! $searchtype||!
$searchterm)
{'Вы не ввели параметры поиска';;
}
$host='inf612c00: D: \DB\G140604_KALASHNIKOVA.
FDB';
$usname='SYSDBA';
$pswrd='masterkey';
$db=ibase_pconnect ($host, $usname, $pswrd); (! $db)
{
echo 'Ошибка соединения с БД';
exit;
}
$query="select * from knigi where".
$searchtype." like '%". $searchterm. "%'";
$result=ibase_query
($query);'<p><H3>Найдено: </h3>';
$i=0;($row=ibase_fetch_row ($result))
{$i++;'<p><strong>'. $i. '. № книги:
';($row [0]);'</strong><br> № отдела: ';($row
[1]);'</strong><br> Название: ';($row
[2]);'</strong><br> Кол-во страниц: ';($row
[3]);'</strong><br> Автор: ';($row [4]);'</p><br>';
};_free_result ($result);
? >
<br><br><hr>
<a
href="search_knigi.html"><li>Назад</li></a>
<a href="knigi.
php"><li>Просмотр таблицы</li></a>
<a href="index.html"><li>В
начало</li></a>
</body>
</html>
Листинг 3.12. PHP код страницы sort_knigi.
php
<html>
<head>
<title>Таблица Книги - результаты сортировки</title>
<meta http-equiv="Выберите расширение для
паковки" content="text/html; charset=windows-1251">
</head>
<body background=13. jpg>
<p><b><font size="7"
color="indigo"><i><b>Результаты сортировки
книг</i></font></b><br>
<? php
$sortf=$_POST ['sort_f'];
$sorttype=$_POST ['sort_type'];
$host='inf612c00: D: \DB\G140604_KALASHNIKOVA.
FDB';
$usname='SYSDBA';
$pswrd='masterkey';
$db=ibase_pconnect ($host, $usname, $pswrd); (! $db)
{
echo 'Ошибка соединения с БД';
exit;
}
$query="select * from knigi order by".
$sortf. "". $sorttype. "";
$result=ibase_query ($query);'<table border=1
align=center>';'<tr><th
bgcolor=\"#ccccff\">№книги</th>'.
'<th bgcolor=\"#ccccff\">№
отдела</th>'.
'<th
bgcolor=\"#ccccff\">Название</th>'.
'<th bgcolor=\"#ccccff\">Кол-во
страниц</th>'.
'<th
bgcolor=\"#ccccff\">Автор</th>'.
'<tr>';
$i=0;($row=ibase_fetch_row ($result))
{$i++;"<tr><td>$row [0]
</td>
<td>$row [1] </td>
<td>$row [2] </td>
<td>$row [3] </td>
<td>$row [4] </td>
</tr>";
}"</table>";_free_result
($result);
? >
<br><br><hr>
<a
href="sort_knigi.html"><li>Назад</li></a>
<a href="knigi.
php"><li>Просмотр таблицы</li></a>
<a href="index.html"><li>В
начало</li></a>
</body>
</html>
Листинг 3.13. код страницы sort_knigi.html
<html>
<head>
<title>Таблица Книги - сортировка записей</title>
<meta http-equiv="Выберите расширение для
паковки" content="text/html; charset=windows-1251">
</head>
<body background=13. jpg>
<p><b><font size="6"
color="indigo"><i><b>Сортировка записей
книг</h1>
<br>
<form action="sort_knigi. php"
method="post"><br>
<p><b><font size="5"
color="indigo"><i><b>Выберите поле для сортировки:
</i></font></b><br>
<select name="sort_f">
<option
value="nomer_knigi">№книги</option>
<option
value="nazvanie_knigi">Название</option>
<option
value="avtor">Автор</option>
</select>
<br><br><br>
<p><b><font size="5"
color="indigo"><i><b>Выберите тип сортировки:
</i></font></b><br>
<select name="sort_type">
<option value="asc">По
возрастанию</option>
<option value="desc">По
убыванию</option>
</select>
<br><br>
<input type="submit"
value="Сортировать">
</form>
</body>
</html>
Листинг 3.14. PHP код страницы otdel.html
<html>
<head>
<title>Таблица Отделы книг</title>
</head>
<body background=13. jpg>
<p><b><font size="7"
color="indigo"><i><b>Таблица Отделы
книг</i></font></b>
<? php
$host='inf612c00: D: \DB\G140604_KALASHNIKOVA.
FDB';
$usname='SYSDBA';
$pswrd='masterkey';
$db=ibase_pconnect ($host, $usname, $pswrd); (! $db)
{
echo 'Ошибка соединения с БД';
exit;
}
$query="select * from otdel_knig";
$result=ibase_query ($query);'<table border=1
align=center>';'<tr><th
bgcolor=\"\">Название</th>'.
'<th bgcolor=\"\">№
отдела</th>'.
'<th bgcolor=\"\">Кол-во
книг</th>'.
'<th
bgcolor=\"\">Телефон</th>'.
'<td bgcolor=\"\">№
библиотекаря</th>'.
'</tr>';
$i=0;($row=ibase_fetch_row ($result))
{$i++;"<tr><td>$row [0]
</td>
<td>$row [1] </td>
<td>$row [2] </td>
<td>$row [4] </td>
</tr>";
}"</table>";_free_result
($result);
? >
<br><p align="center">
<form action="upd_otdel. php"
method="post"><br>
Название <input type="text"
name="nazvanie" size="15">
№отдела<input type="text"
name="n_otdela"size="10">
Кол-во книг <input type="text"
name="kol_knig" size="10">
Телефон <input type="text"
name="telefon" size="10">
№библиотекаря <input type="text"
name="n_biblio" size="10">
<br><input type="submit"
value="Изменить">
</form></p>
<br><hr>
<p><b><font size="7"
color="indigo"><i><b>Операции над
таблицей</i></font></b>
<a
href="ins_otdel.html"><li>Ввод данных</li></a>
<a
href="del_otdel.html"><li>Удаление
записей</li></a>
<a
href="search_otdel.html"><li>Поиск
информации</li></a>
<a
href="sort_otdel.html"><li>Сортировка
записей</li></a>
<a href="index.html"><li>На
главную</li></a>
</body>
</html>
Листинг 3.15. PHP код страницы upd_otdel. pxp
<html>
<head>
<title>Таблица Отделы книг - результаты
редактирования</title>
<meta http-equiv="Выберите расширение для паковки"
content="text/html; charset=windows-1251">
</head>
<body background=13. jpg>
<p><b><font size="7"
color="indigo"><i><b>Таблица Отделы книг - результаты редактирования</i></font></b>
<? php
$nazvanie=$_POST ['nazvanie'];
$n_otdela=$_POST ['n_otdela'];
$kol_knig=$_POST ['kol_knig'];
$telefon=$_POST ['telefon'];
$n_biblio=$_POST ['n_biblio'];
if (! $n_otdela||! $nazvanie)
{ echo 'Вы ввели не все данные';;
}
$host='inf612c00: D: \DB\G140604_KALASHNIKOVA.
FDB';
$usname='SYSDBA';
$pswrd='masterkey';
$db=ibase_pconnect ($host, $usname, $pswrd);
if (! $db)
{'Ошибка соединения с БД';
exit;
}
$query="execute procedure RED_OTDEL
('". $nazvanie. "','". $n_otdela. "','". $kol_knig.
"','". $telefon. "','". $n_biblio. "')";
$it=ibase_trans ();'<br>';
$result=ibase_query ($query);
$ic=ibase_commit ();
if ($result) {echo'Запись успешно изменена'; }
? >
<br><br><hr>
<a href="otdel. php"><li>Просмотр
таблицы</li></a>
<a href="index.html"><li>В начало</li></a>
</body>
</html>
Листинг 3.16. PHP код страницы del_otdel. pxp
<html>
<head>
<title>Таблица Отделы книг - результаты ввода</title>
</head>
<body background=13. jpg>
<p><b><font size="7"
color="indigo"><i><b>Результаты удаления
отдела</i></font></b><br>
<? php
$n_otdela=$_POST ['n_otdela']; (! $n_otdela)
{ echo 'Вы ввели не все данные';
exit;
}
$host='inf612c00: D: \DB\G140604_KALASHNIKOVA.
FDB';
$usname='SYSDBA';
$pswrd='masterkey';
$db=ibase_pconnect ($host, $usname, $pswrd); (! $db)
{
echo 'Ошибка соединения с БД';
exit;
}
$query="execute procedure DEL_OTDEL
('". $n_otdela. "')";
$it=ibase_trans ();'<br>';
$result=ibase_query ($query);
$ic=ibase_commit (); ($result) {echo'Запись успешно удалена';
}
? >
<br><br><hr>
<a
href="del_otdel.html"><li>Назад</li></a>
<a href="otdel.
php"><li>Просмотр таблицы</li></a>
<a href="index.html"><li>В
начало</li></a>
</body>
</html>
Листинг 3.17. PHP код страницы search_otdel.
pxp
<html>
<head>
<title>Таблица Отдел книг - результаты поиска</title>
<meta http-equiv="Выберите расширение для
паковки" content="text/html; charset=windows-1251">
</head>
<body background=13. jpg>
<p><b><font size="7"
color="indigo"><i><b>Результаты поиска
отдела</i></font></b><br>
<? php
$searchtype=$_POST ['search_type'];
$searchterm=$_POST ['search_term'];
$searchterm=trim ($searchterm);(! $searchtype||!
$searchterm)
{'Вы не ввели параметры поиска';;
}
$host='inf612c00: D: \DB\G140604_KALASHNIKOVA.
FDB';
$usname='SYSDBA';
$pswrd='masterkey';
$db=ibase_pconnect ($host, $usname, $pswrd); (! $db)
{ echo 'Ошибка соединения с БД';
exit; }
$query="select * from otdel_knig
where". $searchtype." like '%". $searchterm. "%'";
$result=ibase_query
($query);'<p><H3>Найдено: </h3>';
$i=0;($row=ibase_fetch_row ($result))
{$i++;'<p><strong>'. $i. '. Название
отдела: ';($row [0]);'<p><strong>'. $i. '. № отдела: ';($row
[1]);'<p><strong>'. $i. '. Кол-во книг: ';($row
[2]);'<p><strong>'. $i. '. Телефон: ';($row [3]);'</strong><br>№библиотекаря:
';($row [4]);'</p><br>';
};_free_result ($result);
? >
<br><br><hr>
<a
href="search_otdel.html"><li>Назад</li></a>
<a href="otdel.
php"><li>Просмотр таблицы</li></a>
<a href="index.html"><li>В
начало</li></a>
</body>
</html>
Листинг 3.18. PHP код страницы ins_otdel.
pxp
<html>
<head>
<title>Таблица Отделы книг - результаты ввода</title>
<meta http-equiv="Выберите расширение для
паковки" content="text/html; charset=windows-1251">
</head>
<body background=13. jpg>
<p><b><font size="7"
color="indigo"><i><b>Таблица Отделы книг - результаты
ввода</i></font></b>
<? php
$nazvanie=$_POST ['nazvanie'];
$kol_knig=$_POST ['kol_knig'];
$telefon=$_POST ['telefon'];
$n_biblio=$_POST ['n_biblio']; (! $nazvanie)
{ echo 'Вы ввели не все данные';
exit;
}
$host='inf612c00: D: \DB\G140604_KALASHNIKOVA.
FDB';
$usname='SYSDBA';
$pswrd='masterkey';
$db=ibase_pconnect ($host, $usname, $pswrd); (! $db)
{
echo 'Ошибка соединения с БД';
exit; }
$query="execute procedure ADD_OTDEL
('". $nazvanie. "','". $telefon. "','". $kol_knig.
"','". $n_biblio. "')";
$it=ibase_trans ();'<br>';
$result=ibase_query ($query);
$ic=ibase_commit (); ($result) {echo'Запись успешно
добавлена'; }
? >
<br><br><hr>
<a
href="ins_otdel.html"><li>Назад</li></a>
<a href="otdel.
php"><li>Просмотр таблицы</li></a>
<a href="index.html"><li>В
начало</li></a>
</body>
</html>