Доклад: Использование пакета Cold Fusion для MS Windows при построении WWW - интерфейсов к базам данных

Cold Fusion позволяет динамически генерировать HTML документы основанные на запросах пользователя. Эти запросы передаются в Cold Fusion CGI - скрипт (DBML.EXE), который пересылает данные в Cold Fusion Engine обрабатывающий эти данные в соответствии с заданным шаблоном, выполняя необходимые запросы и генерируя HTML документ, который отправляется пользователю.

Основой динамического создания документов являются специальные теги, входящие в язык разметки DBML, ориентированные на работу с базами данных. Почти все основные возможности Cold Fusion сосредоточены в четырех тегах:

  • DBQUERY - выполнение SQL - запроса к базе данных;
  • DBINSERT & DBUPDATE - создание и модификация записей в базе данных;
  • DBOUTPUT - отображение результата запроса, допускающее его произвольное размещение среди HTML - тегов.

Шаблон, на основе которого генерируется HTML - документ, представляет собой комбинацию тегов HTML и DBML:

  • HTML - теги используются для форматирования как постоянной части документа, так и результатов запросов. Например, можно определить полужирный шрифт для каждого поля и разделительные линии между записями.
  • DBML - теги используются для формирования запроса к базе данных, а также определяют где и как будут отображены результаты запросов.

На рисунке 5-1 показывается, как Cold Fusion обрабатывает запрос, полученный от клиента:


Рисунок 5-1

  1. Когда пользователь нажимает кнопку типа "Submit" в форме или выбирает гипертекстную ссылку в документе, Web - браузер отправляет запрос на Web - сервер.
  2. Web - сервер, если в запросе указан DBML - шаблон, запускает процесс Cold Fusion, отправляя ему данные полученные от клиента.
  3. Cold Fusion принимает данные полученные от клиента обрабатывает теги DBML в шаблоне, включая подготовку запроса к базе данных и форматирование, которое будет использоваться в результирующем документе.
  4. Cold Fusion взаимодействует с базой данных используя ODBC.
  5. Cold Fusion динамически генерирует HTML - документ содержащий результат выполнения запросов к базе данных и возвращает его Web - серверу. Cold Fusion может также динамически генерировать почтовое сообщение и отправлять его через почтовый SMTP - сервер.
  6. Web - сервер возвращает сгенерированный HTML - документ Web - клиенту.

5.5 Передача параметров в DBML-шаблон

Существует несколько способов передачи параметров между шаблонами. Можно передавать параметры непосредственно в URL, использовать для этого форму либо cookie.

Если параметры передаются через URL, то они добавляются к адресу вызываемого шаблона через символ "&" (амперсант) в виде параметр = значение . Например, гипертекстовая ссылка, приведенная ниже, отправляет параметр с именем 'user_id' и значением 5 в шаблон 'example.dbm':

<A HREF="cgi-shl/dbml.exe?Template=example.dbm&user_id=5">

При передаче параметров через форму используются поля формы, которые должны иметь имена, совпадающие с именами параметров, которые требуется передать. Ниже приведен пример передачи параметра, из предыдущего примера используя форму:

<FORM ACTION="cgi-shl/dbml.exe?Template=example.dbm">
<INPUT TYPE="HIDDEN" NAME="user_id" VALUE="5">
<INPUT TYPE="SUBMIT" VALUE="Enter">
</FORM>

Заметим, что при обращении к CGI - программе DBML.EXE должен быть определен стандартный параметр Template, указывающий на конкретный шаблон.

Переменные, занесенные в cookie браузера и переменные окружения CGI доступны в любом шаблоне. Способы занесения информации в cookie описаны в п.5.11.

5.6 Занесение и модификация данных с использованием тегов DBINSERT и DBUPDATE

При использовании тегов DBINSERT и DBUPDATE для занесения или модификации данных, параметры должны быть переданы в шаблон обязательно из формы, используя метод POST.

Для создания новой записи в базе данных используется тег DBINSERT, а для модификации существующей записи используется тег DBUPDATE. При использовании этих тегов необходимо определить атрибуты DATASOURCE и TABLENAME. DATASOURCE это название источника данных ODBC, содержащего редактируемую таблицу, а TABLENAME - имя этой таблицы.

Например, если источник данных ODBC называется 'Person DB', а таблица, в которой требуется создать запись - 'Person', то тег DBINSERT в шаблоне будет иметь следующий вид:

<DBINSERT DATASOURCE="Person DB" TABLENAME="Person">

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

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

Теги DBINSERT и DBUPDATE могут иметь также еще два необязательных атрибута:

  • TABLEOWNER - для тех источников данных которые поддерживают права собственности на таблицы (например, SQL Server, Oracle и др.), этот атрибут можно использовать, чтобы указать собственника таблицы.
  • TABLEQUALIFIER - для различных источников данных этот атрибут может иметь разный смысл. Так, для SQL Server и Oracle - это имя базы данных, в которой содержится таблица, а для Intersolv dBase - это директория в которой расположены DBF файлы.

Пример
Пусть определена HTML - форма для ввода данных:

<HTML>
<HEAD>
<TITLE>Пример ввода данных для создания записи</TITLE>
</HEAD>
<BODY>
<FORM ACTION="/cgi-shl/dbml.exe?Template=example.dbm"
METHOD="POST">
ФИО : <INPUT TYPE="Text" NAME="FullName">
Телефон : <INPUT TYPE="Text" NAME="Phone">
Дата рождения : <INPUT TYPE="Text" NAME="Birthday">
</FORM>
</BODY>
</HTML>

Следующий шаблон, example.dbm, которому будут переданы данные из формы создает запись в таблице и выдает подтверждающее сообщение:

<DBINSERT DATASOURCE="Person DB" TableName="Persons"
FORMFIELDS="FullName,Phone,Birthday">
<HTML>
<HEAD><TITLE>Подтверждение</TITLE></HEAD>
<BODY>
<H1>Запись создана!</H1>
</BODY>
</HTML>

5.7 Выполнение запросов к базам данных

Для выполнения запросов к базе данных используется тег DBQUERY. Этот тег имеет следующий синтаксис:

<DBQUERY NAME="имя запроса"
DATASOURCE="имя источника данных odbc"
SQL="sql выражение" TIMEOUT=n MAXROWS=n DEBUG>

Атрибут NAME определяет имя запроса, которое используется далее для отображения результата выполнения запроса. Имя запроса должно начинаться с буквы и может содержать буквы и цифры (пробелов быть не должно).

Атрибут DATASOURCE задает имя источника данных ODBC, который должен быть создан с помощью интерфейса администратора Cold Fusion.

К-во Просмотров: 806
Бесплатно скачать Доклад: Использование пакета Cold Fusion для MS Windows при построении WWW - интерфейсов к базам данных