close

Вход

Забыли?

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

?

записка(1)

код для вставкиСкачать
 Введение
Современная жизнь невозможна без эффективного управления. Важной категорией являются системы обработки информации, от которых во многом зависит эффективность работы любой организации или учреждения. Такая система должна:
* обеспечивать получение общих или детализированных отчетов по итогам работы;
* позволять легко определять тенденции изменения важнейших показателей;
* обеспечивать получение информации без существенных задержек;
* выполнять точный и полный анализ данных.
Данный проект направлен на разработку информационной системы "Бассейн" с использованием клиент-серверной технологии. В настоящее время фактическим стандартом для многопользовательских СУБД стала архитектура "клиент-сервер", при которой предполагается, что часть функций прикладной программы будет реализована в программе-клиенте, а другая - в программе-сервере, причем для их взаимодействия будет определен некоторый протокол. Взаимодействие "клиент-сервер" осуществляется следующим образом: клиентская часть приложения формирует запрос к серверу баз данных, на котором выполняются все команды, а результат исполнения запроса отправляется клиенту для просмотра и использования.
В данной курсовой работе будет спроектирована и разработана удаленная БД по технологии "Клиент-сервер". Она будет спроектирована и создана в СУБД FireBird 2.1 с использованием утилиты IBExpert, а также - в C++Builder 6.0 с помощью технологии доступа к данным InterBaseExpress и РНР.
Цели:
1. Знакомство с СУБД Firebird и утилитой IBExpert; 2. Проектирование базы данных;
3. Приобретение навыков создания web-приложений для и win-приложений для доступа к БД.
Задачи:
4. Выбор сущностей для БД и определение связей между ними - проектирование БД;
5. Создание БД с помощью утилиты IBExpert; 6. Создание web-приложения;
7. Создание win-приложения.
В курсовой работе содержится 42 страницы, 33 рисунока и 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>
4
Документ
Категория
Рефераты
Просмотров
60
Размер файла
1 858 Кб
Теги
записка
1/--страниц
Пожаловаться на содержимое документа