close

Вход

Забыли?

вход по аккаунту

?

записка (2)

код для вставкиСкачать
 Введение
Современная жизнь невозможна без эффективного управления. Важной категорией являются системы обработки информации, от которых во многом зависит эффективность работы любой организации или учреждения. Такая система должна:
* обеспечивать получение общих или детализированных отчетов по итогам работы;
* позволять легко определять тенденции изменения важнейших показателей;
* обеспечивать получение информации без существенных задержек;
* выполнять точный и полный анализ данных.
Данный проект направлен на разработку информационной системы "Бассейн" с использованием клиент-серверной технологии. В настоящее время фактическим стандартом для многопользовательских СУБД стала архитектура "клиент-сервер", при которой предполагается, что часть функций прикладной программы будет реализована в программе-клиенте, а другая - в программе-сервере, причем для их взаимодействия будет определен некоторый протокол. Взаимодействие "клиент-сервер" осуществляется следующим образом: клиентская часть приложения формирует запрос к серверу баз данных, на котором выполняются все команды, а результат исполнения запроса отправляется клиенту для просмотра и использования.
В данной курсовой работе будет спроектирована и разработана удаленная БД по технологии "Клиент-сервер". Она будет спроектирована и создана в СУБД FireBird 2.1 с использованием утилиты IBExpert, а также - в C++Builder 6.0 с помощью технологии доступа к данным InterBaseExpress и РНР.
Цели:
1. Знакомство с СУБД Firebird и утилитой IBExpert; 2. Проектирование базы данных;
3. Приобретение навыков создания web-приложений для и win-приложений для доступа к БД.
Задачи:
4. Выбор сущностей для БД и определение связей между ними - проектирование БД;
5. Создание БД с помощью утилиты IBExpert; 6. Создание web-приложения;
7. Создание win-приложения.
В курсовой работе содержится 56 рисунков, 45 страницы и 5 использованных источников, 1 таблица.
1. Средства проектирования и разработки удаленной БД
1.1 Архитектура "клиент-сервер"
В настоящее время фактическим стандартом для многопользовательских СУБД, стала архитектура "клиент-сервер". "Клиент-сервер" - это модель взаимодействия компьютеров в сети. Как правило, компьютеры не являются равноправными. Каждый из них имеет свое, отличное от других, назначение, играет определенную роль. Некоторые компьютеры в сети владеют и распоряжаются информационно-вычислительными ресурсами, такими как процессоры, файловая система, почтовая служба, служба печати, база данных. Другие имеют возможность обращаться к этим службам, пользуясь услугами первых. Компьютер, управляющий тем или иным ресурсом, принято называть сервером этого ресурса, а компьютер, желающий им воспользоваться - клиентом. Конкретный сервер определяется видом ресурса, которым он владеет. Так, если ресурсом являются базы данных, то речь идет о сервере баз данных, назначение которого - обслуживать запросы клиентов, связанные с обработкой данных; если ресурс - это файловая система, то говорят о файловом сервере или файл-сервере и т.д. В сети один и тот же компьютер может выполнять как роль клиента, так и роль сервера. Этот же принцип распространяется и на взаимодействие программ. Если одна из них выполняет некоторые функции, предоставляя другим соответствующий набор услуг, то такая программа рассматривается в качестве сервера. Программы, которые пользуются этими услугами, принято называть клиентами. Если предполагается, что проектируемая информационная система будет построена по технологии "клиент-сервер", то это означает, что часть функций прикладной программы будет реализована в программе-клиенте, другая - в программе-сервере, причем для их взаимодействия будет определен некоторый протокол. Клиент-серверная СУБД позволяет обмениваться клиенту и серверу минимально необходимыми объёмами информации. Клиент может выполнять функции предварительной обработки перед передачей информации серверу, но в основном его функции заключаются в организации доступа пользователя к серверу.
В большинстве случаев клиент-серверная СУБД гораздо менее требовательна к пропускной способности компьютерной сети, чем файл-серверная СУБД. Поэтому на данное время наиболее предпочтительной из технологий доступа к распределенным БД является именно "клиент-серверная" технология.
1.2 СУБД FireBird, основанная на технологии доступа к распределенным БД InterBase
Firebird является сервером баз данных. Мощный с минимальными требованиями к настройке и администрированию, он легко масштабируется от однопользовательских приложений до крупных корпоративных систем. Один сервер Firebird может обрабатывать несколько независимых баз данных, каждую с множеством пользовательских соединений. Firebird предлагает удобный путь миграции от коммерческих СУБД с закрытым исходным кодом к продуктам Open Source, в то же время предлагая разработчику намного больше свободы в создании приложений. Firebird позволяет сделать этот переход легко и быстро. СУБД Firebird имеет практически все черты, характерные лучшим серверам баз данных без нанесения значительного вреда производительности, что подтверждают многочисленные промышленные тесты.
1.3 IBExpert
IBExpert - инструмент для разработки Firebird баз данных на основе технологии InterBase. IBExpert позволяет осуществить данное проектирование с заметной легкостью, быстротой, надежностью и удобством для разработчика. IBExpert включает много инструментов и особенностей кодирования: визуальные редакторы для всех типов Базы данных, SQL-редакторы и сценарии, отладчик для хранимых процедур, генераторов и триггеров, исключения, роли, домены и многое другое.
Визуальные особенности редактирования IBExpert позволяют даже полному новичку в данной области быстро создавать базу данных и добавлять объекты в базы данных без особых трудов и временных затрат.
1.4 C++Builder - средство разработки клиентской части и серверных Web-приложений
Разработка СУБД раньше всегда была очень трудоемким и медленным процессом, отягощенным необходимостью учитывать массу специфических деталей подсистем обслуживания различных баз данных на низком уровне. C++Builder принимает на себя выполнение этих рутинных операций позволяя сосредоточиться на решении основной задачи.
Все приложения СУБД, создаваемые в среде C++Builder, являются клиентами в архитектуре программного взаимодействия клиент/сервер. Клиент выдает запросы к серверу базы данных на получение или передачу информации. Сервер обрабатывает запросы от множества клиентов одновременно, координируя доступ к данным и их обновление. Все приложения СУБД, создаваемые в среде C++Builder, основаны на компонентах пользовательского интерфейса с некоторой базой данных, которые предоставляют удивительно легкие в использовании средства разработки специальных приложений. Удачно спроектированное приложение всегда обеспечивает простоту просмотра и редактирования данных пользователем, независимо от сложности структуры используемой модели данных.
2. Проектирование и создание БД "Бассейн"
2.1 Системный анализ
Первым этапом проектирования базы данных является ее системный анализ, или подробное описание информационных объектов предметной области.
В данной курсовой работе осуществляется разработка БД, которая называется "Бассейн". Перед началом разработки данной предметной области осуществлялся сбор информации, необходимый для полного и подробного описания объектов, из которых предполагалось построение и создание базы данных. Данная БД состоит из 5-ти взаимосвязанных таблиц "Курсы", "Дисциплины", "Инструкторы", "Группы", "Посетители бассейна". 2.2 Инфологическое проектирование
1. Проектирование инфологической модели заключается в формализованном описании объектов предметной области с помощью семантической модели Entity-Relationship (Сущность-Связь). Сущность - это реальный или представляемый объект, информация о котором должна сохраняться и быть доступна. Связь - это графически изображаемая ассоциация, устанавливаемая между двумя сущностями. Рис. 1. Логическая модель
2.3 Физическое проектирование БД
Физическое проектирование - определение особенностей хранения данных и методов доступа. Этап физического проектирования заключается в увязке логической структуры БД и физической среды хранения с целью наиболее эффективного размещения данных. Решается вопрос размещения хранимых данных в пространстве памяти, выбора эффективных методов доступа к различным компонентам БД. Результаты этого этапа документируются в форме схемы хранения на языке определения хранимых данных. Принятые на этом этапе решения оказывают определяющее влияние на производительность системы. Рис. 2. Физическая модель
2.4 Программирование на стороне SQL-сервера
Современные информационные системы создаются на основе клиент-серверных СУБД, обычно называемых SQL-серверами. Такие СУБД обычно выполняются на отдельном компьютере и берут на себя большую часть работы по обслуживанию запросов пользователей, поиску, отбору, сортировке записей в таблицах и другие операции.
Сервер БД представляет собой достаточно сложный программный комплекс. В данной работе будет использоваться сервер СУБД Firebird 2.1, разработанный в рамках Open Source-проекта. Для создания баз данных и разработки бизнес-правил на стороне сервера SQL будет использоваться утилита IBExpert .
Все 5 таблиц БД были созданы с помощью следующих определенных последовательных действий: 1. Создание доменов;
2. Создание таблиц и атрибутов полей (тип и длина);
3. Определение ограничений (PK и FK) для связи таблиц;
4. Создание генераторов и триггеров для автоинкрементных полей, которыми являются PK каждой таблицы;
5. Создание дополнительных индексов для упрощения поиска и сортировки данных, а также для уменьшения времени этих операций;
6. Занесение данных в таблицу;
7. Разработка бизнес-логики:
8. создание просмотров (представлений) для выборки данных из нескольких таблиц;
9. создание хранимых процедур (с обработкой исключений) для работы с приложениями на сервере и решения поставленной задачи в предметной области.
Создание базы данных выглядит следующим образом:
Рис. 3. Создание БД в IBExpert
Для логически правильной работы БД и правильного преобразования типов свойств заданных объектов были созданы домены: Рис. 4. Список доменов
Таблицы можно создавать при помощи утилиты IBExpert, в котором мы задаем поля, первичные, вторичные ключи, автоинкрементные поля.
Рис. 5. Таблица "Дисциплины"
Далее приведем SQL код при помощи которого мы определим внешние ключи во всех таблицах (SQL код можно просмотреть в приложении):
Рис. 6. Приведение внешних ключей
После того как созданы домены и таблицы тоже, можно в БД определить индексы, система автоматически создает индексы по первичным и внешним ключам но можно добавить и свои по надобности как при помощи утилиты IBExpert.
Рис. 7. Создание индексов
После того как созданы, домены, таблицы, индексы, можно приступить к созданию генераторов.
Рис. 8. Создание генераторов
В утилите IBExpert создание триггеров выглядит следующим образом:
Рис. 9. Создание триггера для таблицы Дисциплины
Заполненная таблица выглядит следующим образом:
Рис. 10. Пример заполнения таблицы
Чтобы создать представление в утилите IBExpert в SQL редакторе введу следующий sql-код . Рис. 11. Создание представлений
Приведем примеры хранимых процедур на обновление, добавление и удаления.
Создадим процедуру на удаление, на примере удаления записи в таблице "Дисциплины". Процедура будет называться DEL_DISC. Создается в редакторе утилиты IBExpert.
Рис. 12. Процедура удаления
Рис. 13. Удалим запись под номером 5
Рис. 14. Удаление
Далее создадим процедуру на обновление информации, рассмотрим это на примере создания такой процедуры также для таблицы "Дисциплины", эта процедура будет называться UP_DISC.
Рис. 15. Создание процедура обновления
Рис. 16. Выполнение процедуры
Рис. 17. Запись изменена
В своей базе данных у меня будет 2 исключительных ситуации. Коды для их создания следующие:
1. CREATE EXCEPTION NAME_DIS 'Вы должны ввести название плавательного урока'; Рис. 18. Ввожу без фамилии
Рис. 19. Сообщение об ошибке
2.5 Разработка клиентской части в Borland C++ Builder 6.0
Создание клиентского приложения осуществляется в среде программирования C++ Builder. Создание такого приложения заключается в добавлении в окно формы элементов объектов C++ Builder, называемых компонентами. Все эти компоненты имели свое специальное назначение:
* IBDatabase - для осуществления соединения с базой данных;
* IBTransaction - для работы с транзакциями;
* IBQuery - для связи визуальных компонент, а также поиска, выборки и фильтрации данных в таблицах БД;
* IBTable - для сортировки по индексированным полям таблиц БД;
* IBStoredProc - для выполнения хранимых процедур;
* QuickRep, QRSubDetail, QRLabel, QRDBText, QRBand, QRSysData - для правильного создания, удобного просмотра и печати отчета по данным из таблиц БД;
* Button - для навигации и для некоторых других действий;
* Label - для надписей;
* LabeledEdit - для ввода информации, добавления, удаления, изменения;
* PageControl - для структурирования информации;
* DataSource - для управления взаимодействием между компонентами визуализации данных и компонентами управления данными;
* DBGrid - для визуализации данных таблиц и данных запросов;
* И другие
Создадим новый проект, затем создадим DataModule, на котором будем размещать все невидимые компоненты для доступа и работы с БД. Рис. 20. Контейнер DataModule
Чтобы соединить приложение с необходимой БД и выполнить действия над ней, нужно было настроить следующие свойства некоторых из вышеперечисленных компонентов. Рис. 21. Подключение к БД, компонента DataBase
Главная вид формы Windows-приложения.
Рис. 21. Главная форма Windows-приложения.
Рассмотрим пример добавления записи в таблицу Клиенты. Код, который отвечает за добавление записи в таблицу: DataModule2->IBTable1->Active=false;
DataModule2->IBStoredProc1->ParamByName("ID_PREP")->AsString=Edit1->Text;
DataModule2->IBStoredProc1->ParamByName("ID_COURSE")->AsString=Edit2->Text;
DataModule2->IBStoredProc1->ParamByName("NAME_DIS")->AsString=Edit3->Text;
DataModule2->IBStoredProc1->Prepare();
DataModule2->IBStoredProc1->ExecProc();
DataModule2->IBTable1->Active=true;
Рис. 22. Добавление записи
После нажатия на кнопку ADD мы убедились, что данные успешно внесены. Далее обновим добавленную запись. Код, отвечающий за обновление записи следующий : DataModule2->IBTable1->Active=false;
DataModule2->IBStoredProc2->ParamByName("ID_DISC")->AsString=Edit4->Text;
DataModule2->IBStoredProc2->ParamByName("NAME_DIS")->AsString=Edit5->Text;
DataModule2->IBStoredProc2->Prepare();
DataModule2->IBStoredProc2->ExecProc();
DataModule2->IBTable1->Active=true;
Рис. 23. Обновление записи
Последним этапом работы с таблицей удалим запись с ID=8. Код, который будет производить удаление записи : DataModule2->IBTable1->Active=false;
DataModule2->IBStoredProc3->ParamByName("ID_DISC")->AsString=Edit6->Text;
DataModule2->IBStoredProc3->Prepare();
DataModule2->IBStoredProc3->ExecProc();
DataModule2->IBTable1->Active=true;
Рис. 24. Удаление записи
Далее реализуем поиск по таблице. Введем название города и нажмем кнопку "Поиск". В обработчик кнопки напишем следующий код : TLocateOptions LO;
DataModule2->IBTable1->Locate("NAME_DIS", Edit8->Text, LO<<loPartialKey<<loCaseInsensitive); Рис. 24. Поиск
Фильтр применим к полю № клиента. Код для фильтрации будет следующим:
DataModule2->IBTable1->Active=false;
DataModule2->IBTable1->Filtered=false;
DataModule2->IBTable1->Filter="ID_DISC="+Edit7->Text;
DataModule2->IBTable1->Filtered=true;
DataModule2->IBTable1->Active=true;
Рис. 25. Фильтр
Далее идет работа с компонентом QReport, который нужен для отчета по заданной таблице. Как выглядит отчет на этапе построения можно убедиться на следующем рисунке:
Рис. 26. Макет отчета
Работа отчета представлена на рисунке 27.
Рис. 27. Работа отчета
2.6 Разработка клиентской части с помощью Web-технологий
С помощью стандартного языка разметки документов в Интернет - html, создаем web-приложение, которое начинается с главной страницы (index.html). С помощью php будет осуществляться связь с БД. На рисунке 27 изображена главная страница web-приложения. С помощью php будет осуществляться связь с БД. Рис. 27. Главная страница
Для осуществления доступа к базе данных Firebird в языке PHP существует специальный набор функций. Чтобы подключиться к БД в PHP необходимо разместить следующий программный код:
$dbhost="D:\NIKISHEV.FDB ";
$dbusname="SYSDBA";
$dbpswrd="masterkey";
$db=ibase_pconnect($dbhost,$dbusname,$dbpswrd);
if(!$db){echo 'Ошибка соединения с базой данных!';exit;}
Приведем пример работы web-приложения на примере таблицы Клиенты. Для отображения всех записей в таблице используем запрос:
$query = "select * from disc";
$result = ibase_query($query);
Рис. 28. Добавление записи
Далее, после добавления, выводится отчет о том, что данные добавлены. Код для добавления записи в таблицу:
<?php
$id_prep=$_POST['id_prep'];
$id_course=$_POST['id_course'];
$name_dis=$_POST['name_dis'];
$query = "EXECUTE PROCEDURE ADD_DISC('".$id_prep."','".$id_course."','".$name_dis."')";
$it=ibase_trans();
echo '<br>';
$result=ibase_query($query);
$ic=ibase_commit();
if ($result) echo 'Данные внесены в таблицу.<br><br><br>';
echo '<script>document.location.href = "1.php"; </script>';
Если же нет, то выводится запись о том, что данные по каким либо причинам не могут быть внесены.
Следующим этапом обновим запись с id=9.
Рис. 29. Обновление записи
За обновление записи отвечает следующий код:
$id_disc=$_POST['id_disc'];
$name_dis=$_POST['name_dis'];
$query = "EXECUTE PROCEDURE UP_DISC('".$id_disc."','".$name_dis."')";
$it=ibase_trans();
echo '<br>';
$result=ibase_query($query);
$ic=ibase_commit();
if ($result) echo 'Данные обновлены.<br><br><br>';
echo '<script>document.location.href = "1.php"; </script>';
Рис.30. Запись обновилась
Рис. 31. Удаление записи с ID = 9
Последим этапом написания кода для модификации таблицы является удаление записей. Код , который будет осуществлять будет следующим: $id_disc=$_POST['id_disc'];
$query = "EXECUTE PROCEDURE DEL_DISC('".$id_disc."')";
$it=ibase_trans();
echo '<br>';
$result=ibase_query($query);
$ic=ibase_commit();
if ($result) echo 'Данные удалены.<br><br><br>';
echo '<script>document.location.href = "1.php"; </script>';
Далее сделаем фильтр. SQL код будет такой:
$id_disc=$_POST['id_disc'];
$query = "select * from disc where id_disc=".$id_disc."";
$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>' .
'<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>
</tr>";
}
echo "</table>";
ibase_free_result($result);
Рис. 32. Фильтр для таблицы Клиент
Рис. 33. Активный фильтр
Заключение
В настоящее время фактическим стандартом для многопользовательских СУБД, стала архитектура "клиент-сервер", при которой предполагается, что прикладные программы, реализованные в ее рамках, будут иметь распределенный характер. Иными словами, часть функций прикладной программы будет реализована в программе-клиенте, другая - в программе-сервере, причем для их взаимодействия будет определен некоторый протокол.
В данной курсовой работе была спроектирована и разработана удаленная БД по технологии "Клиент-сервер". Программирование на стороне сервера было осуществлено в СУБД FireBird 2.0 с использованием утилиты IBExpert, а клиентское приложение в C++Builder с помощью технологии доступа к данным InterBaseExpress (IBX) и с помощью Web-технологий .
В процессе написания курсовой работы, мною была осуществлена задача по проектированию и созданию удаленной базы данных в выбранной предметной области. Была проведена работа по освоению и изучению сведений о СУБД FireBird 2.0, утилиты IBExpert, компонентах IBX, C++Builder и Web-технологий.
Список использованных источников
1. А. Хомоненко, С. Ададуров "Работа с базами данных в C++Builder" 2. Петров В.Н. Информационные системы. - СПб.: Питер, 2002
3. Шамис В., "Borland C++ Builder 6.0". - С - Пб.: "Питер", 2005 г 4. В. М. Михелев "Базы данных и СУБД". - Белгород, 2007 г.
5. Атре Ш. Структурный подход к организации баз данных. - М.: Финансы и статистика, 1983. - 320 с. Приложение 1. Код создания Windows-приложения //---------------------------------------------------------------------------
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn6Click(TObject *Sender)
{
QuickRep1->Preview();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn7Click(TObject *Sender)
{
QuickRep1->Print(); }
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
DataModule2->IBTable1->Active=false;
DataModule2->IBStoredProc1->ParamByName("ID_PREP")->AsString=Edit1->Text;
DataModule2->IBStoredProc1->ParamByName("ID_COURSE")->AsString=Edit2->Text;
DataModule2->IBStoredProc1->ParamByName("NAME_DIS")->AsString=Edit3->Text;
DataModule2->IBStoredProc1->Prepare();
DataModule2->IBStoredProc1->ExecProc();
DataModule2->IBTable1->Active=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn2Click(TObject *Sender)
{
DataModule2->IBTable1->Active=false;
DataModule2->IBStoredProc2->ParamByName("ID_DISC")->AsString=Edit4->Text;
DataModule2->IBStoredProc2->ParamByName("NAME_DIS")->AsString=Edit5->Text;
DataModule2->IBStoredProc2->Prepare();
DataModule2->IBStoredProc2->ExecProc();
DataModule2->IBTable1->Active=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn3Click(TObject *Sender)
{
DataModule2->IBTable1->Active=false;
DataModule2->IBStoredProc3->ParamByName("ID_DISC")->AsString=Edit6->Text;
DataModule2->IBStoredProc3->Prepare();
DataModule2->IBStoredProc3->ExecProc();
DataModule2->IBTable1->Active=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn4Click(TObject *Sender)
{
DataModule2->IBTable1->Active=false;
DataModule2->IBTable1->Filtered=false;
DataModule2->IBTable1->Filter="ID_DISC="+Edit7->Text;
DataModule2->IBTable1->Filtered=true;
DataModule2->IBTable1->Active=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn5Click(TObject *Sender)
{
TLocateOptions LO;
DataModule2->IBTable1->Locate("NAME_DIS", Edit8->Text, LO<<loPartialKey<<loCaseInsensitive); }
//---------------------------------------------------------------------------//---------------------------------------------------------------------------
Код создания веб-приложения //добавление
<html>
<head>
<title></title>
</head>
<body bgcolor=lightgrey>
<?php
$host='D:\nikishev.fdb';
$usname = 'SYSDBA';
$pswrd = 'masterkey';
$db = ibase_pconnect($host, $usname, $pswrd);
if (!$db)
{
echo 'Ошибка соединения с базой данных';
exit;
}
?>
<?php
$id_prep=$_POST['id_prep'];
$id_course=$_POST['id_course'];
$name_dis=$_POST['name_dis'];
$query = "EXECUTE PROCEDURE ADD_DISC('".$id_prep."','".$id_course."','".$name_dis."')";
$it=ibase_trans();
echo '<br>';
$result=ibase_query($query);
$ic=ibase_commit();
if ($result) echo 'Данные внесены в таблицу.<br><br><br>';
echo '<script>document.location.href = "1.php"; </script>';
?>
</body>
</html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title></title>
</head>
<body bgcolor=lightgrey>
<?php
$host='D:\nikishev.fdb';
$usname = 'SYSDBA';
$pswrd = 'masterkey';
$db = ibase_pconnect($host, $usname, $pswrd);
if (!$db)
{
echo 'Ошибка соединения с базой данных';
exit;
}
?>
<?php
$id_disc=$_POST['id_disc'];
$query = "EXECUTE PROCEDURE DEL_DISC('".$id_disc."')";
$it=ibase_trans();
echo '<br>';
$result=ibase_query($query);
$ic=ibase_commit();
if ($result) echo 'Данные удалены.<br><br><br>';
echo '<script>document.location.href = "1.php"; </script>';
?>
</body>
</html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title></title>
</head>
<body bgcolor=lightgrey>
<p align="center"><b><font size="5">Водные занятия</font></b><br>
<?php
$host='D:\nikishev.fdb';
$usname = 'SYSDBA';
$pswrd = 'masterkey';
$db = ibase_pconnect($host, $usname, $pswrd);
$query = "select * from disc";
$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>' .
'<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>
</tr>";
}
echo "</table>";
ibase_free_result($result);
?>
<form method="POST" action="filter_1.php" ><input type="text" name="id_disc" size="20"> <input type="submit" value="Применить фильтр по № дисциплины" name="send"></p></form><hr>
<form method="POST" action="add_1.php" >
<p><input type="text" name="id_prep" size="10" value="№ инструктора">
<input type="text" name="id_course" size="13" value="№ курса">
<input type="text" name="name_dis" size="13" value="Название занятия"> <input type="submit" value="Добавить" name="send"></p>
</form>
<form method="POST" action="up_1.php" >
<p><input type="text" name="id_disc" size="15" value="№ дисциплины">
<input type="text" name="name_dis" size="15" value="Название занятия">
&nbsp;&nbsp;
<input type="submit" value="Обновить" name="send0"></p>
</form>
<form method="POST" action="del_1.php" method=post>
<input type="text" name="id_disc" size="12" value="№ занятия">
<input type="submit" value="Удалить" name="send"></p>
</form>
</body>
</html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Лаб 6</title>
</head>
<body bgcolor=lightgrey>
<?php
$host='D:\nikishev.fdb';
$usname = 'SYSDBA';
$pswrd = 'masterkey';
$db = ibase_pconnect($host, $usname, $pswrd);
if (!$db)
{
echo 'Ошибка соединения с базой данных';
exit;
}
$id_disc=$_POST['id_disc'];
$name_dis=$_POST['name_dis'];
$query = "EXECUTE PROCEDURE UP_DISC('".$id_disc."','".$name_dis."')";
$it=ibase_trans();
echo '<br>';
$result=ibase_query($query);
$ic=ibase_commit();
if ($result) echo 'Данные обновлены.<br><br><br>';
echo '<script>document.location.href = "1.php"; </script>';
?>
</body>
</html>
5
Документ
Категория
Рефераты
Просмотров
14
Размер файла
1 872 Кб
Теги
записка
1/--страниц
Пожаловаться на содержимое документа