Допомога у написанні освітніх робіт...
Допоможемо швидко та з гарантією якості!

HTML та фінансової бази данных

РефератДопомога в написанніДізнатися вартістьмоєї роботи

Як згадувалося, у Мережі є велика число сервісів. Нас в надалі цікавити WWW чи навіть Web (Word-Wide Webвсесвітня павутиння). Це найпопулярніша сервіс Мережі і зручний спосіб роботи з інформацією. Сьогодні є по меншою мірою 30 тис. серверів WWW. Саме у передчутті рахунок WWW Мережа росте так стрімко. Користуючись нескладним мовою описи, можна складати гипермедийные документи їхнього наступної… Читати ще >

HTML та фінансової бази данных (реферат, курсова, диплом, контрольна)

[pic].

Кафедра математичної статисти та эконометрики.

Курсова работа.

По курсу:

«Математична статистика».

«HTML та фінансової бази даних «.

Група: ДІ 302.

Студент: Шеломанов Р.Б.

Студент: Мельников А.А.

Керівник: Шевченка К.К.

Москва 1999.

Содержание Введение. 3.

Internet — інтеграція технологій 3.

Цели і завдання проекту 6.

Формы в HTML 7.

ISAPI докладання 16.

Исходный код ISAPI модуля мовою Delphi 4 17.

Библиографический список. 24.

Свою роботу вирішив офрмить у проекту. У ньому крім теорії присутній приклад програмного проекту, важко назвати з іншого об'єднання HTML коду і коду мови програмування. Проекту це створення сервер у якому базі даних товарів «народного споживання», який через Internetброузер одержує вигоду від віддаленого користувача запити, обслуговує їх і відправляє відповідь користувачеві як HTML страниц.

Відразу наголошу, що це робота расчитана на читача вже котра має досвід роботи у Інтернеті, що становить собі що таке HTML документ, знайомого із самою мовою гіпертекстової розмітки, і навіть має навички програмування у сприйнятті сучасних объектно — орієнтованих засобах розробки додатків. Тому описувати все специфікації HTML мені представляється за потрібне. Знову-таки, у цій роботі ви знайдете описи HTML, лише тій частині, присвячена працювати з формами і певною мірою проектування таблиць. Що ж до програмування, я — не буду заглиблюватись у опис програмної логіки проекту, описувати призначення всіх процедур та зняття функцій мого модуля, лише зупинюся на можливостях створення ISAPI/NSAPI додатків, адже основна мета проекту це показати можливості використання HTML для взаємодії користувача і віддаленій бази данных.

Свій проект я побудував наступним образом:

У теоритической частини викладу основи технологій як у роботі. Це форми HTML, побудова ISAPI / NSAPI модулів серед розробки додатків DELPHI 4.0. На практичної, відповідно, вихідний код програми розвитку й код HTML документов.

Internet — інтеграція технологий.

Останні кілька років можна було помітити бурхливий ріст кількості користувачів глобальної комп’ютерну мережу Інтернет у Росії. Значно збільшилася кількість інтернет провайдерів. Завдяки створенню «домашніх» комп’ютерних мереж у деяких районах Москви можна було якісне підключення до Інтернету за невеликі гроші Всі ці заходи покликані задовольнити дедалі більші потреби товариства в інформації, і найкращим джерелом цієї інформації стала всесвітня глобальна комп’ютерна мережу — Інтернет Нині мені би сказати кілька слів що ж представляє з себе Інтернет .

З технічною погляду Internet — воно транснаціональних комп’ютерних мереж, які працюють у різним протоколів, що пов’язують різноманітні типи комп’ютерів, фізично передавальних дані про всім доступним типам ліній — від кручений пари телефонних дротів до оптоволокна і супутникових каналів. Більшість комп’ютерів в Internet пов’язано за протоколом TCP/IP. Можна сміливо сказати, що Internetце мережу мереж, обплутує всю земну шар.

Протокол TCP/IP дозволяє передавати інформацію, яке використовують різноманітні мережні сервіси, порізного котрі з цієї інформацією. Internet не вирішила проблеми збереження і упорядкування інформації, але вирішила проблему її передачі, давши можливість отримувати її коли завгодно. Оскільки Мережа (тут і далі Мережаз великої літериозначатиме Internet) децентралізована, то відключення навіть значній своїй частині комп’ютерів вплине її функціональність. За оцінками аналітиків, в 1995 року кількість повноцінно подключённых до Мережі комп’ютерів становить близько 7 мільйонів і продовжує стрімко зростати. З тих самих оцінкам, на початку наступного століття Мережа може бути так само доступна, як телефон чи телебачення сегодня.

Як згадувалося, у Мережі є велика число сервісів. Нас в надалі цікавити WWW чи навіть Web (Word-Wide Webвсесвітня павутиння). Це найпопулярніша сервіс Мережі і зручний спосіб роботи з інформацією. Сьогодні є по меншою мірою 30 тис. серверів WWW. Саме у передчутті рахунок WWW Мережа росте так стрімко. Користуючись нескладним мовою описи, можна складати гипермедийные документи їхнього наступної публікації у Мережі (під гипермедийным я маю на увазі документ, котрі можуть утримувати всі види інформації - від простого тексту до мултимедийных роликів). Щоб побачити зміст документа оскільки його сподівається його автор треба мати за комп’ютеромклієнта програму переглядубраузер. Найпопулярніші сьогодні Internet Explorer і Netscape Navigator, підтримують багато розширення HTML (Hyper Text Markup Languageмову гіпертекстової розмітки документів — саме з його за допомогою оформляється інформація в WWW). Далі під словами браузер чи програма перегляду я буду розуміти саме ця программы.

Я вже сказав вище Мережа найвищою мірою зобов’язана своєї популярністю службі WWW. Саме з цим службою в багатьох асоціюється поняття Інтернет. WWWце простота доступна навіть дитині, наочність і широкі надання інформації, можна навіть відзначити такий критерій як видовищність, оскільки багато WWW документи є твір дизайнерського і мистецького искусства.

Тепер трохи інформації про технології «клієнтсервер». Вона відома вже досить тривалий час, але раніше найчастіше використовувалася в великих мережах масштабу підприємства. Сьогодні, з недостатнім розвитком Internet, ця технологія дедалі більше приваблює погляди розробників програмного забезпечення. Її можна так: клієнт формує і посилає запит до бази даних серверу, вірніше — до програмі, обробній запити. цю програму виробляє маніпуляції з БД, що зберігається на сервері, в відповідність до запитом, формує результат і передає його клієнту. Клієнт отримує результат, відображає його за дисплеї і чекає подальших дій користувача. Цикл повторюється, поки користувач не закінчить роботи з сервером.

У накопичено дуже багато інформації з різним питанням. Найчастіше цю інформацію зберігається в базах даних (БД). Щоб опублікувати їх у Мережі доводилося експортувати БД в HTMLдокументи, що потребувало великих витрат і ускладнювало пошук інформації. Сьогодні є великий політичний досвід подібних робіт. Практично кожен користувач Мережі неодноразово стоїть перед подібними БД. Наприклад, головна складова роботі популярного пошукового серверу Altavista (адресуhttp:internet це запити до бази даних WWWсерверу по ключовим словами. Відповідь серверусписок гіпертекстових посилань на характерні для Мережі сторінки, містять важливу інформацію. Аналогічний приклад: коли ми шукаємо иформацию ціни потім -або у Иитернете ми маємо працювати з базою даних, наприклад сервер internet Саме сьогодні проблема Webінтерфейсу до БД як ніколи актуальна. І саме цієї проблеми хотів би висвітлити у своїй работе.

Цели і завдання проекта Данный ескіз показує, як працює система загалом. Конкретно все залежить від цього, де знаходиться клієнт, сервер, як клієнт подсоединён до серверу. Користувач на клиентском комп’ютері у програмі перегляду заповнює запропоновану форму чи вибирає подальше дію. Браузер по натискання одній з кнопок у вигляді пересилає дані з заповненою форми власності чи відображає знову отримані внаслідок якийабо операції. Байдуже, до який із мереж підключений клієнт (він навіть то, можливо удалённым користувачем і з'єднатися по модему). Програма приймає дані, перевіряє їх і формує запит (запитом називається будь-яку дію яке користувач пропонує зробити БД) до монітора БД чи одержує вигоду від нього результат. Отримавши запит, монітор обробляє його. Не сталося помилок, чекає запиту від програми про відправлення програмі результату. На диску серверу зберігається БД, модифицируемая на запит клиента.

Формы в HTML.

А, щоб користувач міг сформувати та відправити запит серверу через HTML документ, використовуються звані форми введення. Це блок документа HTML укладений у тегах у якому різні текстові поля і кнопки відправлення і службовець на формування та відправлення серверу запиту користувача. Форми мають наступний синтаксис.

зміст форми, включаючи елементи INPUT і, можливо, елементи TEXTAREA і SELECT.

де: |ім'я |можливі |Сенс атрибута |примітки | |атрибут|значения | | | |а | | | | |ACTION |URL |адресу серверу, |сервер HTTP чи URL | | | |який використовує | | | | |форма | | |METHOD |GET, POST |метод передачі |за умовчанням — GET | | | |даних, отриманих | | | | |від користувача, на | | | | |сервер | | |ENCTYPE|строка |механізм, |за умовчанням додаток | | | |використовуваний для |/x-www-form-url-кодирова| | | |кодування |ние | | | |вмісту форми | |.

У змісті форми ми можемо мати такі поля: Є певні елементи, що можуть з’явитися лише доти елемента FORM. У частности:

INPUT — поля входження у формах Мета цього поля уточняти не більше форми вступні поля: одностроковые текстові поля, поля пароля, перемикачі, радиокнопки, кнопки посилання і перезавантаження, приховані поля, вивантаження файла, кнопки зображення т.д. Типове відображення Змінюється відповідно до типу поля. Основний синтаксис Возможные атрибути |ім'я |можливі |сенс |примітки | |атрибута|значения | | | |TYPE |TEXT, PASSWORD, |тип поля для введення |за умовчанням | | |CHECKBOX, RADIO,| |TEXT | | |SUBMIT, RESET, | | | | |FILE, HIDDEN, | | | | |IMAGE | | | |NAME |рядок |ім'я для ідентифікації |потрібно | | | |поля, що його |всіх атрибутів,| | | |вміст передається |крім SUBMIT і | | | |серверу |RESET | |VALUE |рядок |початкове |обов'язковий, | | | |значення вступного |якщо TYPE = | | | |поля; для атрибутів |RADIO чи | | | |SUBMIT чи RESET — |CHECKBOX | | | |текстова мітка | | |CHECKED |встановлений |коли TYPE = RADIO чи| | | | |CHECKBOX, | | | | |инициализирует полі до | | | | |встановленому | | | | |стану | | |SIZE |ціле |видимий розмір поля; | | | | |кількість символів | | |MAXLENGT|целое |максимальне |за умовчанням не| |H | |кількість символів, |обмежена | | | |прийнятих у | | | | |текстовому полі | | |SRC |URL |адресу зображення |для полів з | | | | |фоновими | | | | |зображеннями | |ALIGN |TOP, MIDDLE, |вирівнювання |за умовчанням | | |BOTTOM, LEFT, |зображення для |BOTTOM | | |RIGHT |графічних | | | | |управляючих кнопок | |.

Різні значення атрибута TYPE відповідають різних видів вступних полів. TYPE=TEXT (тип=текст — за умовчанням) Одностроковое текстове полі, чий видимий розмір може бути встановлений атрибутом SIZE, наприклад, SIZE=40 для 40-символьного поля. Користувачі можуть вводити і більше символів, аніж цей межа, але з текстовим скроллингом (пролистыванием) поля, щоб курсор введення залишався видимим. Ви можете поставити верхня межа кількості символів атрибутом MAXLENGTH. Атрибут NAME використовується для найменування поля, а атрибут VALUE инициализирует текстову рядок на полі, коли документ вперше завантажений. Зауважимо, що текстовий введення обмежений однієї рядком. Використовуйте елемент TEXTAREA, щоб визначити многостроковые текстові поля. Приклад: TYPE=PASSWORD (тип=пароль) Цей тип подібний до TYPE=TEXT, проте не всі запроваджувані символи видаються в вигляді *, щоб приховати текст від подсматривающих очей, коли вводиться пароль. Можете використовувати атрибути SIZE і MAXLENGTH, щоб керувати видимої і максимальної довжинами поля точно як і, як звичайного текстового поля. Пример:

TYPE=CHECKBOX (тип=поле установки — перемикач) Використовується простих булевых атрибутів (тобто. атрибутів, приймаючих значення ІСТИНА чи БРЕХНЮ) або заради атрибутів, що можуть приймати силу-силенну значень. Кожне заповнене переключательное полі генерує окрему пару имя/значение в формованих даних, навіть якщо це призводить до дублювання імен. Використовуйте атрибут CHECKED для ініціалізації поля установки за умовчанням. Пример:

TYPE=RADIO (тип=радиокнопка) Використовується для атрибута, який може приймати єдине значення з безлічі. Кожне полі радиокнопки групи має бути поставлено лише одною значенням атрибута NAME. Радиокнопки вимагають явного атрибута VALUE. Єдина натиснута радиокнопка групи генерує пару имя/значение в формованих даних. Одна радиокнопка групи атрибутом CHECKED мусить бути попередньо встановлено відповідно до вмовчанням. Пример:

TYPE=SUBMIT (тип=отсылка) Визначає кнопку, яку користувач може натиснути, щоб передати вміст форми серверу. Мітка встановлюється атрибутом VALUE. Якщо атрибут NAME заданий, то пара наименование/значение для виконуваної кнопки буде включено до передані дані. Можете включити кілька виконуваних кнопок до форми. Дивіться TYPE=IMAGE для графічних виконуваних кнопок. Примеры:

TYPE=RESET (тип=перезагрузка) Визначає кнопку, яку користувач може натиснути, аби повернути поля форми до вихідному стану, коли документ уперше завантажений. Можете встановити мітку з допомогою атрибута VALUE. Кнопки перезавантаження ніколи не посилаються як частину вмісту форми. Пример:

TYPE=FILE (тип=файл) Цей тип дає можливість користувачам прикріпити файл до форми. Елемент зазвичай відображається, як текстове полі з кнопкою, при натисканні яку з’являється файловий броузер для відбору імені файла. Ім'я файла також може бути введено просто у текстове полі. Так само, як TYPE=TEXT, для TYPE=FILE можна використовувати атрибут SIZE, аби з’ясувати видиму ширину поля. Ви також можете встановити верхня межа для довжини імені файла, використовуючи атрибут MAXLENGTH. Деякі програми перегляду підтримують здатність обмежувати види файлів, які можна прикріплено до форми, перерахуванням яке поділяється комами списку файлів зі змістом типу MIME, задаваемого атрибутом ACCEPT. Наприклад, ACCEPT= «image/* «обмежить файли зображеннями. Додаткова інформація можна знайти в RFC 1867. Пример:

TYPE=HIDDEN (тип=скрытый) Цей тип поля не відображається користувачеві. Приховане полі дає можливість для серверів зберігати інформацію про стан разом із формою. Коли форма «виповнюється «при натискання відповідної кнопки, серверу передадуть пара имя/значение, певна з допомогою відповідних атрибутів. Цей тип створює робоче оточення для повноти можливостей HTTP і є альтернативою від використання так званої HTTP cookies. Пример:

TYPE=IMAGE Використовується для графічних кнопок відсилань, відображуваних зображенням. URL для зображень специфицируется атрибутом SRC. Вирівнювання зображення то, можливо специфицировано атрибутом ALIGN. У цьому плані графічні кнопки посилання ідентичні елементам IMG (так, Можете встановити ALIGN — LEFT, RIGHT, TOP, MIDDLE чи BOTTOM). Атрибути NAME і VALUE трактуються так само, як текстові кнопки посилання повинні бути задано для забезпечення роботи неграфічних програм перегляду. Пример:

Допустимый контекст Текстовий контейнер, тобто. будь-який елемент, котрі можуть утримувати текстові елементи. Включає більшість елементів HTML. Текстовий контейнер може з’явитися у межах елемента FORM. Вміст Ніяке. Примеры Примечания Використання INPUT для введення тексту обмежена одностроковыми полями. Використовуйте TEXTAREA, щоб визначити многостроковые текстові поля.

SELECT (ВИБРАТИ) — меню вибору формі Мета Специфікація не більше форми: меню, з яких користувач може вибрати чи кілька елементів. Типове відображення Меню вибору, що може бути «активізовано «деяким залежать від броузера чином; зазвичай, у графічних броузерах це спадаюче меню. Залежно від броузера все варіанти вибору може бути видимі одночасно чи користувач може переглядати елементи меню. Основний синтаксис.

елементи OPTION.

Можливі атрибути |ім'я |можливі |сенс |примітки | |атрибута|значения | | | |NAME |рядок |ім'я, яке |обов'язковий; кожна | | | |використовується для |відібрана опція | | | |ідентифікації |утворює пару | | | |вибору меню, когда|имя/значение, включаемую| | | |форма передається |в вміст форми | | | |серверу | | |SIZE |ціле |встановлює |використовується, коли | | | |число одновременно|задан MULTIPLE | | | |видимих опцій | | |MULTIPLE|MULTIPLE |означає, що |за умовчанням дозволено | | | |користувач может|только один вибір | | | |зробити | | | | |множинний | | | | |вибір з меню | |.

Допустимий контекст Текстовий контейнер, тобто. будь-який елемент, котрі можуть утримувати текстові елементи. Це і більшість HTML елементів. Проте, текстовий контейнер може з’явитися в межах елемента FORM. Вміст OPTION елементи. Приклади Пример:

Vanilla Strawberry Rum and Raisin Peach and Orange.

Примечания Дивіться обговорення форми. Як альтернативу SELECT, Можете використовувати елемент INPUT з TYPE=CHECKBOX чи TYPE=RADIO, який за відображенні дозволяє користувачеві побачити все варіанти сразу.

TEXTAREA — многострочное полі текстового входження у формі Мета Уточняти не більше форми область для многострочного користувальницького введення. Типове відображення Область введення, з’являється як окремого прямокутника, можливо, має свій фоновий колір і звичайно зі скроллингом деякого типу як і вертикальному, і у горизонтальному напрямі. Область инициализирована вмістом елемента TEXTAREA, використовує одноразмерный шрифт. Основний синтаксис.

текст.

Можливі атрибути |ім'я |возможны|смысл |примі| |атриб|е | |чания| |ута |значення| | | |NAME |рядок |ім'я, що використовується для ідентифікації поля |обяза| | | |з текстовим вмістом, коли форма передається |тельн| | | |серверу |про | |ROWS |ціле |кількість ліній видимого тексту |обяза| | | | |тельн| | | | |про | |COLS |ціле |число, який задає видиму ширину тексту |обяза| | | | |тельн| | | | |про |.

Програма перегляду має інтерпретувати атрибути ROWS і COLS, як обмежують розмір дійсного введення. Броузер має надати певні кошти скроллинга вмісту області який вводимо тексту, коли її розмір виходить поза межі видимій ділянці. Броузер може перенести рядок видимого тексту, аби вкластися у довжину рядки видимого тексту без скроллинга. Допустимий контекст Текстовий контейнер, тобто. будь-який елемент, котрі можуть включати текстові елементи. Це і більшість елементів HTML. Проте, текстовий контейнер може з’являтися лише доти елемента FORM. Вміст Рядок. Escape послідовність дозволена, проте ніякі теги не розпізнаються. Вміст використовується для ініціалізації тексту, який виводиться в вступному полі за першої завантаженні документа. Приклади Your address here…

Примечания Дивіться обговорення форм. Для однострокового поля введення можна використовувати елемент INPUT з TYPE=TEXT.

Форма буде правильно працювати тільки у разі, коли всі вищевказані поля укладено між тегами і кожному текстовому полю обов’язково має бути присвоєно ім'я NAME=. Отак форма відображається в браузері. І це HTML код цієї формы.

Cервер «Електронний магазин «Залишіть ваше сообщение.

Запровадьте Ваш адресу електронної почты.

Запровадьте Ваші побажання здесь.

При натисканні кнопки «Введення» відбувається подія SUBMIT і змістом текстових полів цієї форми вирушає за адресою що у ACTION властивості форми action= «/Scripts/test/webshop.dll/addmsg. У разі адресу свідчить про динамічну бібліотеку webshop. dll завантажену на сервері і цієї бібліотеці передається команда addmsg тоесть отримати гроші з текстового поля саме повідомлення користувача, адресу його електронної пошти та не записати ці дані як і або файл на сервері. Повний вид запиту що посилається серверу має такий вигляд: internet, де xxx і сбс зміст відповідних полів текстовій форми. Якщо відкинути адресу серверу, то запит має вигляд командної рядки DOS webshop. dll/addmsg?sender=xxx@xxx&message=ccc Бібліотека webshop. dll -називається ISAPI додатком (ISAPI — Internet Services АПІ). Саме огляду інтерфейсу ISAPI буде присвячений наступний глава.

ISAPI приложения.

Місце програмування в публікації даних таке. Прийомом і обробкою запитів від клієнтів займається WEB сервер. Більшість серверів Internet працює під керівництвом UNIX і популярного в цій платформі серверу Apache, зростає популярність платформи Windows NT Server і серверу Microsoft Internet Information Server. Сервер реалізує підтримку протокала HTTP, приймаючи від браузерів клієнтів запити, й видаючи у відповідь ті чи інші WWW сторінки. Але їх можливих запитів не передбачиш тому після після отримання запиту сервер передає управління WEB -інтерфейсу БД (модулю розширення). Найчастіше ці модулі розширення називають сценаріями чи скриптами (scripts). Завдання такого скрипта — обробити запит, отримати від бази даних чи іншого зовнішнього джерела важливу інформацію, оформити його вигляді HTML документи й передати її назад серверу, який він працю відправити її браузеру клента.

Першим і загальноприйнятим інтерфейсом до створення модулів розширення є CGI (Common Gateway Interface), побутував у Unix. Улюбленим мовою написання CGI скриптов є PERL, хоча можна писати і З, Basic і Delphi.

Microsoft постачила свій сервер Internet протоколом для взаємодії з модулями розширення ISAPI (ISAPI — Internet Services АПІ), яким скрипт є динамічну бібліотеку, загружаемую сервером і працюючу із ним одному адресному просторі. Бібліотека повинна експортувати цілком конкретні функції (їх три: GetExtensionVersion, HttpExtensionProc, TerminateExtension), які й викликатися сервером. Одна библиотика може обробляти хоч греблю гати запросов.

Приклад сгенеренной ISAPI модулем HTML сторінки, яка видає у відповідь зпрос:

Исходный код ISAPI модуля мовою Delphi 4.

unit webshopunit;

interface.

uses Windows, Messages, SysUtils, Classes, HTTPApp, DBWeb, Db, DBTables;

type TWebModule1 = class (TWebModule).

GroupQuery: TQuery;

WebSession: TSession;

StoreQTP: TQueryTableProducer;

GroupQueryMainGroup: TIntegerField;

GroupQuerySubGroup: TIntegerField;

GroupQueryGroupName: TStringField;

StoreQuery: TQuery;

ValidateQuery: TQuery;

AddMsgQuery: TQuery; procedure WebModule1GetGroupAction (Sender: TObject;

Request: TWebRequest; Response: TWebResponse; var Handled: Boolean); procedure WebModule1Create (Sender: TObject); procedure StoreQTPFormatCell (Sender: TObject; CellRow,.

CellColumn: Integer; var BgColor: THTMLBgColor; var Align: THTMLAlign; var VAlign: THTMLVAlign; var CustomAttrs,.

CellData: String); procedure WebModule1Destroy (Sender: TObject); procedure WebModule1ValidateAction (Sender: TObject;

Request: TWebRequest; Response: TWebResponse; var Handled: Boolean); procedure StoreQTPGetTableCaption (Sender: TObject; var Caption: String; var Alignment: THTMLCaptionAlignment); procedure WebModule1AcceptOrderAction (Sender: TObject;

Request: TWebRequest; Response: TWebResponse; var Handled: Boolean); procedure WebModule1SearchAction (Sender: TObject; Request: TWebRequest;

Response: TWebResponse; var Handled: Boolean); procedure WebModule1AddMSgAction (Sender: TObject; Request: TWebRequest;

Response: TWebResponse; var Handled: Boolean); private.

ScriptName: String;

{ Private declarations } public.

{ Public declarations } function GroupListProducer (Query: TQuery; Kind: Integer): string; function CreateGroupList (Gr1,Gr2,Kind:Integer): string; end;

var WebModule1: TWebModule1; resourcestring sOrderAccepted = «Tр° чрърч єёях°эю яЁшэ Є «; sContent = «+уыртыхэшх » ;

implementation uses inifiles; {$R *.DFM} var HTMLPath, TemplatesPath, DBAliasName, iniName, CommonLook, CommonEnd: string;

UserStatus: Integer; csect: TRTLCriticalSection;

procedure TWebModule1. WebModule1Create (Sender: TObject); var ini: TINIFile; FN: array[0.MAX_PATH- 1] of char; s1, s2: string; fs: TFileStream; bgpath, txtcol, lcol, vcol, acol: string; begin GetWindowsDirectory (FN, SizeOf (FN)); s1:= StrPas (fn); GetModuleFileName (hInstance, FN, SizeOf (FN)); s2 := ExtractFileName (StrPas (fn)); if not (Char (s1[Length (s1)]) in [ «/ «, «» ]) then AppendStr (s1, «/ «);

if Pos («. », s2)0 then s2 := Copy (s2,1,Pos («. », s2)-1); iniName := s1+s2+ " .ini "; ini := TINIFile. Create (iniName);

HTMLPath := ini. ReadString («Paths », «HTMLPath », «/test »); TemplatesPath := ini. ReadString («Paths », «TemplatesPath », s1); DBAliasName := ini. ReadString («Paths », «DBAliasName », «webtest »);

if Assigned (WebSession) and WebSession. IsAlias (DBAliasName) then begin.

GroupQuery.DatabaseName := DBAliasName;

StoreQuery.DatabaseName := DBAliasName;

ValidateQuery.DatabaseName := DBAliasName; end;

bgpath := ini. ReadString («Design », «Background », «imgsand.jpg »); txtcol := ini. ReadString («Design », «text », «black »); lcol := ini. ReadString («Design », «link », «blue »); acol := ini. ReadString («Design », «alink », «aqua »); vcol := ini. ReadString («Design », «vlink », «aqua »); ini. Free;

CommonLook := Format («» ,.

[HTMLPath, bgpath, txtcol, lcol, acol, vcol]); CommonEnd := «»; end;

procedure TWebModule1. WebModule1Destroy (Sender: TObject); begin; end;

function TWebModule1. GroupListProducer (Query: TQuery; kind: Integer): string; var p. s: string;gn1,gn2: Integer; begin with Query do try.

Open;

Result := «» ;

First; while not Eof do begin gn1 := Query. Fields[0]. AsInteger; gn2 := Query. Fields[1]. AsInteger; if Gn2=0 then p. s:= «» else s:=IntToStr (Gn2);

Result := Result + Format («%d.%s %p.s » ,.

[Request.ScriptName, gn1, gn2,Kind, gn1, s, Query. Fields[2]. AsString]);

Next; end; finally.

Close; end; end;

function TWebModule1. CreateGroupList (Gr1,Gr2,Kind:Integer): string; var fs: TFileStream; і: Integer; begin Result := «» +sContent+ «»; with GroupQuery do begin if Gr1=0 then.

SQL.Text := «SELECT * FROM Groups WHERE SubGroup=0 «else.

SQL.Text := Format («SELECT * FROM Groups WHERE (MainGroup=%d) and (SubGroup>0) » ,[Gr1]); try.

Result := Result + GroupListProducer (GroupQuery, Kind); if Gr10 then.

Result := Result + Format («TхЁэєЄ№ё ъ юуыртыхэш¦ «,.

[Request.ScriptName, 0,0, Kind]); except on E: EDBEngineError do begin.

Result := Result + «+°шсър BDE «+ «»; for i:=0 to E. ErrorCount -1 do.

Result := Result + E. Errors[i]. Message + «»; end; end; end; Result := Result+ «¦юшёъ «.

+CommonEnd; end;

// QueryAction — GetGroup тvтюф ЄрсышЎv яю Єют.уЁєяях threadvar OperKind: Integer;

procedure TWebModule1. WebModule1GetGroupAction (Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean); var gn1, gn2: Integer; OrderCol: THTMLTableColumn; begin with Request. QueryFields do begin gn1 := IndexOfName («Kind »); if (gn10) then OperKind := StrToIntDef (Values[ «Kind «, 0); if gn1>=0 then Delete (gn1); gn1 := StrToIntDef (Values[ «Gr1 «, 0); gn2 := StrToIntDef (Values[ «Gr2 «, 0); end; //with if gn1=0 then Response. Content := CommonLook+CreateGroupList (gn1,gn2,OperKind) else if gn2=0 then Response. Content := CommonLook+CreateGroupList (gn1,gn2,OperKind) else begin //define group name with GroupQuery do begin.

SQL.Text := «SELECT * FROM Groups WHERE (MainGroup=:gn1) and (SubGroup=:gn2) » ;

Params[0]. AsInteger := gn1;

Params[1]. AsInteger := gn2;

Open; with StoreQTP do begin.

Header.Clear;

Header.Add (CommonLook); if OperKind>0 then begin.

OrderCol := THTMLTableColumn. Create (StoreQTP.Columns);

OrderCol.Title.Caption := «¦рърч »; end else.

OrderCol := nil; case OperKind of.

1: Header. Add («»);

2: Header. Add («»); end;//case.

Header.Add («¦рЄхуюЁш: «+FieldByName («GroupName »).AsString+ «»);

Close; //.

Footer.Clear; if OperKind=1 then Footer. Add («TЁюъ юяырЄv »); if OperKind>0 then begin.

Footer.Add (««.

+ «»); end;

Footer.Add (Format («TхЁэєЄ№ё ъ юуыртыхэш¦ «,.

[Request.ScriptName, gn1,0, OperKind])); end;//with storeqtp end;//with groupquery Response. Content := StoreQTP. Content; if Assigned (OrderCol) then OrderCol. Free; end; //generating table end;

procedure TWebModule1. StoreQTPFormatCell (Sender: TObject; CellRow, CellColumn: Integer; var BgColor: THTMLBgColor; var Align: THTMLAlign; var VAlign: THTMLVAlign; var CustomAttrs, CellData: String); var p. s: string; begin if (CellRow0) then if (CellRow mod 2=0) then BgColor:= «silver «else BgColor:= «Gray »; if (OperKind>0) and (CellColumn=0) and (CellRow>0) then begin CellData := «» +CellData; end; if (OperKind>0) and (CellColumn=StoreQTP.Columns.Count-1) and (CellRow>0) then begin CellData := «¦рърчрЄ№ «; p. s := «»; end; end;

procedure TWebModule1. StoreQTPGetTableCaption (Sender: TObject; var Caption: String; var Alignment: THTMLCaptionAlignment); begin Caption := «=рщфхэю чряшёхщ: «+ IntToStr (StoreQTP.Query.RecordCount); end;

procedure TWebModule1. WebModule1ValidateAction (Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean); begin with ValidateQuery do begin Params[0]. AsString := Request.QueryFields.Values[ «UserName «]; Params[1]. AsString := Request.QueryFields.Values[ «Password «]; try Open; if RecordCount>0 then begin.

UserStatus := FieldByName («UserCategory »).AsInteger;

Response.Content := CommonLook+ «Tv єёях°эю чрЁхушёЄЁшЁютрэv »; if UserStatus>0 then.

Response.Content := Response. Content + «TvсхЁшЄх ЄютрЁэє¦ уЁєяяє ш ттхфшЄх чрърч «+CreateGroupList (0,0,1) else begin.

Response.Content := Response. Content + «T ърўхёЄтх рфьшэшёЄЁрЄюЁр «.

+ «TЄЁрэшЎр рфьшэшёЄЁрЄюЁр »; end; end else.

Response.Content := CommonLook+ «Tр°ш фрээvх юЄёєЄёЄтє¦Є т срчх. +сЁрЄшЄхё№ ъ эрь яю рфЁхёє [email protected] »; finally.

Close; end;

end;

end;

procedure TWebModule1. WebModule1AcceptOrderAction (Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean); begin Response. Content := CommonLook+sOrderAccepted+CommonEnd; // -ры№°х тёЄрт№Єх ётющ ъюф фы тъы¦ўхэш чрърчр т срчє end;

procedure TWebModule1. WebModule1SearchAction (Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean); var p. s: string; begin p. s:= Request.QueryFields.Values[ «Phrase «]; GroupQuery.SQL.Text := «SELECT * FROM Groups WHERE GroupName LIKE «% «+p.s+ «% «»; Response. Content := CommonLook+ «¦хчєы№ЄрЄv яюшёър «+p.s+ »: «+GroupListProducer (GroupQuery, 0)+CommonEnd; end;

procedure TWebModule1. WebModule1AddMSgAction (Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean); var MCookies: TStringList;i: integer; begin Response. Content := CommonLook; with AddMsgQuery do try Params[0]. AsString:=Request.QueryFields.Values[ «Sender «]; Params[1]. AsString:=Request.Host; Params[2]. AsDateTime:=Request.Date; Params[3]. AsMemo:=Request.QueryFields.Values[ «Message «]; Prepare; ExecSQL;

MCookies := TStringList. Create; MCookies. Add («User= «+Request.PathTranslated); MCookies. Add («Test= «+Request.RemoteHost); MCookies. Add («Time= «+Request.UserAgent); Response. SetCookieField (MCookies, «», Request. PathInfo, Date+1, False); MCookies. Free;

Response.Content := Response. Content + «Tр°х ёююс•хэшх яЁшэ Єю «+ CommonEnd; except on E: EDBEngineError do begin.

Response.Content := Response. Content + «+°шсър BDE «+ «»; for i:=0 to E. ErrorCount -1 do.

Response.Content := Response. Content + E. Errors[i]. Message + «» ;

Response.Content := Response. Content + CommonEnd; end; end; end;

end.

Библиографический список.

1. Комп’ютер Пресс N2 1997 р. 2. П. Дарахвелидзе, Є. Марков «Програмування в Delphi 4» 3. Комп’ютер Пресс N4 1997 р. 4. Комп’ютер Пресс N5 1998 р. 5. Computer Week Москва N4(210) 1999 р. 6. Computer Week Москва N17(223) 1996 р. 7. Computer Week Москва N18(224) 1998 р. 8. Компютерра N15(142) 1996.

———————————;

Браузер клиента.

Пользователь.

Internet / Intranet чи ЛВС.

Webінтерфейс до БД.

Монітор БД (Postmaster).

БД.

Клиент.

сервер

Клиент.

Програма на сервере.

БД Запрос до сервера БД Ответ сервера Манипуляции з БД.

Показати весь текст
Заповнити форму поточною роботою