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

Посмотреть архив целиком

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

5.1Введение

5.2Установка Cold Fusion

5.3Администрирование Cold Fusion

5.4Взаимодействие Cold Fusion с базами данных

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

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

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

5.8Использование результатов запроса для динамического создания HTML - документа

5.9Вывод результата выполнения запроса в виде таблицы

5.10Дополнительные замечания по созданию DBML - шаблонов

5.11Использование параметров и переменных в шаблонах
5.11.1Поля формы и параметры URL
5.11.2Переменные окружения CGI
5.11.3Применение тега DBSET для создания переменных
5.11.4HTTP Cookies
5.11.5Использование результатов выполнения запросов

5.12Проверка корректности данных и форматирование вывода
5.12.1Проверка корректности данных в полях формы
5.12.2Функции вывода в DBML

5.13Динамическое изменение содержимого документа
5.13.1Условный оператор (DBIF & DBELSE)
5.13.2Перенаправление на другой URL (DBLOCATION & DBABORT)
5.13.3Включение в шаблон других шаблонов
5.13.4Определение типа данных MIME для содержимого документа

5.14Расширенные возможности
5.14.1Динамическое определение SQL выражения
5.14.2Поддержка транзакций
5.14.3Вложенные области вывода и группирования
5.14.4Использование списочных полей с множественным выбором
5.14.5Дополнительные команды SQL

При подготовке данной главы отчета использовались материалы " Cold Fusion User Guide " (Руководство пользователя пакета Cold Fusion).

5.1 Введение

Пакет Cold Fusion фирмы Allaire - это средство для быстрой разработки интерактивных, динамических документов для Web основанное на обработке информации из баз данных, в основе которого лежит следующий набор технологий:

  • HTML (Hyper-Text Markup Language)

  • CGI (Common Gateway Interface)

  • SQL (Structured Query Language)

  • ODBC (Open Database Connectivity)

Разработка приложений с использованием Cold Fusion не требует программирования на таких языках как Perl, C/C++, Visual Basic или Delphi. Вместо этого вы создаете приложение, встраивая в обычный (стандартный) HTML файл специальные теги для работы с базами данных.

В данной главе рассматривается Cold Fusion версии 1.5 .

5.2 Установка Cold Fusion

Cold Fusion запускается как CGI приложение на различных Web-серверах под Windows NT и Windows 95 и должен быть совместим с любым сервером поддерживающим CGI.

Cold Fusion тестировался на совместимость со следующими серверами:

  • O'Reilly WebSite

  • Microsoft Internet Server

  • EMWAC HTTPS

  • Process Software Purveyor

  • Netscape Communications/Commerce Server

  • Internet Factory Communications/Commerce Builder

  • Spry Safety Web Server

  • CSM Alibaba

Для связи с различными СУБД Cold Fusion использует 32-разрядные ODBC - драйвера. Для корректной работы с Cold Fusion ODBC - драйвер должен удовлетворять следующим требованиям:

  • Это должен быть 32-разрядный драйвер.

  • Он должен поддерживать Уровень 1 ODBC API.

  • Должна поддерживаться базовая грамматика SQL.

  • Для совместимости с функциями ввода даты/времени, драйвер должен поддерживать соответствующие типы данных.

Для установки и использования Cold Fusion система должна удовлетворять следующим требованиям:

  • Операционная система Windows NT 3.51(или выше) или Windows 95.

  • Микропроцессор 80386 или выше; рекомендуется Pentium.

  • 10Mb свободного дискового пространства.

  • 24Mb RAM для Windows NT или 16Mb для Windows 95

  • Установленная сетевая поддержка TCP/IP.

  • Установленный WWW сервер.

Для установки Cold Fusion нужно запустить программу SETUP.EXE, которая должна находится на инсталляционном диске 1.

Помимо копирования файлов, необходимых для работы Cold Fusion, в процессе установки, в корневой директории с документами Web сервера создается директория с именем CFPRO. Эта директория содержит:

  • Тест, для проверки правильности установки системы.

  • Мини-учебник, в формате HTML, помогающий освоить азы Cold Fusion.

  • Примеры приложений, демонстрирующие различные способы использования Cold Fusion.

Чтобы проверить правильность установки Cold Fusion, нужно открыть документ, URL до которого имеет вид http://myserver/cfpro/getstart.htm, где myserver - имя или IP адрес вашего Web сервера.

5.3 Администрирование Cold Fusion

Для администрирования в Cold Fusion предусмотрен специальный интерфейс администратора. Этот интерфейс позволяет изменять различные параметры настройки Cold Fusion по четырем категориям:

  • Data Sources - используется для настройки источников данных ODBC, для использования их с Cold Fusion. Чтобы добавить источник данных, нужно нажать на кнопку "Add...", выбрать один из установленных в системе драйверов ODBC и задать определенные для него настройки. Переопределить эти настройки можно воспользовавшись кнопкой "Setup...", предварительно выделив конкретный источник данных. Если нужно определить способы взаимодействия Cold Fusion с источником данных, то нужно нажать на кнопку "Preferences..." и определить такие атрибуты как имя пользователя, пароль, допустимые операции с базой данных и др.

  • Templates - используется для настройки логических путей до директорий в которых расположены файлы с шаблонами Cold Fusion.

  • Debugging - используется для настройки отладочных сообщений и сообщений об ошибках.

  • Mail - используется для настройки параметров SMTP mail и позволяет просматривать журнал сообщений и ошибок.

5.4 Взаимодействие Cold Fusion с базами данных

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':

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




Заметим, что при обращении к 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 в шаблоне будет иметь следующий вид:

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

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

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

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

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

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



Пример ввода данных для создания записи



METHOD="POST">
ФИО :
Телефон :
Дата рождения :


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


FORMFIELDS="FullName,Phone,Birthday">

Подтверждение<</span></font></font></font></font></font><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">/TITLE></HEAD></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><BODY></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"><H1>Запись создана!</H1></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"></BODY></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"></HTML></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font></font></font> </p> <h3 lang="ru-RU" align="left" class="western CL_1"> <font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"><b>5.7 Выполнение запросов к базам данных</b></span></font></font></font></h3> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Для выполнения запросов к базе данных используется тег DBQUERY. Этот тег имеет следующий синтаксис: </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"><DBQUERY NAME="имя запроса"</span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">DATASOURCE="имя источника данных odbc"</span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">SQL="sql выражение" TIMEOUT=n MAXROWS=n DEBUG></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Атрибут NAME определяет имя запроса, которое используется далее для отображения результата выполнения запроса. Имя запроса должно начинаться с буквы и может содержать буквы и цифры (пробелов быть не должно). </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Атрибут DATASOURCE задает имя источника данных ODBC, который должен быть создан с помощью интерфейса администратора Cold Fusion. </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Ключевым атрибутом тега DBQUERY, является атрибут SQL, который собственно и определяет запрос к базе данных на языке SQL (для улучшения читабельности, допускается расположение значения атрибута SQL на нескольких строках). </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Создавая SQL запрос, следует помнить, что конкретная база данных может иметь свои особенности в синтаксисе SQL, использование которых ограничивается этой базой данных. Чтобы проверить, является ли конкретное SQL выражение совместимым с ODBC и независимым от конкретной базы данных, лучше всего использовать Microsoft Query, входящий в состав Microsoft Office. Для этого нужно в меню Microsoft Query выбрать "</span></font></font></font><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Файл/Выполнить SQL</span></font></font></font></font></font><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">", в появившемся окне диалога ввести предложение SQL, выбрать источник данных ODBC, нажав на кнопку "</span></font></font></font><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Источники...</span></font></font></font></font></font><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">", после чего нажать на кнопку "</span></font></font></font><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Выполнить</span></font></font></font></font></font><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">". Этот продукт можно также использовать и для создания SQL - выражений, используя для этого визуальные средства создания запросов. Получить SQL - выражение созданного таким образом запроса можно нажав на кнопку "SQL" в панели инструментов. </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Атрибут MAXROWS является необязательным и определяет максимальное количество записей, которые могут быть возвращены в результате выполнения запроса. </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Атрибут TIMEOUT также является необязательным и определяет максимальное количество миллисекунд для выполнения запроса, до выдачи сообщения об ошибке. Заметим, что этот атрибут поддерживается только некоторыми ODBC - драйверами (например, драйвером для MS SQL Server 6.0). </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Атрибут DEBUG используется для отладки запросов. При наличии этого атрибута пользователю отправляется дополнительная информация о выполнении этого запроса, такая как текст выполненного SQL - запроса, число возвращенных записей и др. </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Приведем пример запроса с именем 'AllPersons', который возвращает все записи таблицы 'Persons' из базы данных, с которой связан источник данных ODBC с именем 'Person DB': </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><DBQUERY NAME="AllPersons" DATASOURCE="Person DB"</span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">SQL="select * from Persons"></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Для динамической настройки SQL - выражения можно использовать параметры, переданные в шаблон. Это могут быть параметры, переданные из формы, URL, а также переменные CGI. Параметры, используемые внутри SQL - выражения, должны быть обрамлены символом "#" (например #Name#). При обработке запроса Cold Fusion ищет параметр с таким именем среди параметров, полученных из формы, в URL или среди переменных CGI. При нахождении подходящего параметра его значение подставляется вместо соответствующей ссылки на параметр. </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"><b>Примеры использования параметров в SQL -выражении</b></span></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Пример 1 </span></font></font></font><br><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Предположим что обрабатывается URL </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">"/cgi-shl/dbml.exe?Template=prs.dbm&Id=22"</span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">, </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">а атрибут SQL в DBQUERY имеет вид </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">SQL="select * from Persons where Id = #Id#"</span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">, </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">тогда в базу данных будет передано следующее SQL - выражение: </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">select * from Persons where Id = 22 </span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">. </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Пример 2 </span></font></font></font><br><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Предположим, что в шаблон передан параметр FirstLetters и нужно найти в таблице Persons записи, в которых первые буквы в поле FullName совпадают со значением этого параметра. Значение атрибута SQL в этом случае будет следующим: </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">SQL="select * from Persons</span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">where FullName like '#FirstLetters#%'"</span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Следует обратить внимание на то, что маска, состоящая из параметра и символа '%', в отличие от предыдущего примера, обрамлена одинарными кавычками. Это связано с тем, что поле Id из примера 1 имеет числовой тип, а поле FullName - текстовый тип (синтаксис SQL требует, чтобы текстовые значения всегда были обрамлены одинарными кавычками). </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Для того чтобы задать маску, в примере использовался символ '%', который в SQL - запросах соответствует произвольной последовательности символов. Также для определения маски может использоваться символ '_' (подчерк), соответствующий одному произвольному символу. </span></font></font></font></font></font> </p> <h3 lang="ru-RU" align="left" class="western CL_1"> <font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"><b>5.8 Использование результатов запроса для динамического создания HTML - документа</b></span></font></font></font></h3> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Для вывода данных возвращаемых в результате выполнения запроса определенного в DBQUERY применяется тег DBOUTPUT. Внутри этого тега, связанного с конкретным запросом, может находиться обычный текст, теги HTML, ссылки на поля определенные в запросе. При обработке шаблона, содержимое тега DBOUTPUT отправляется клиенту для каждой записи, возвращаемой в результате выполнения запроса, с подстановкой соответствующих значений параметров и полей. </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Тег DBOUTPUT имеет следующий синтаксис: </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"><DBOUTPUT QUERY="имя запроса" MAXROWS=n></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Текст, теги HTML,</span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">ссылки на поля и параметры (т.е. #Name#)</span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"></DBOUTPUT></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Атрибут QUERY применяется для указания имени запроса DBQUERY, результат выполнения которого будет использоваться, а атрибут MAXROWS определяет максимальное количество записей этого запроса, которые будут переданы для вывода в тег DBOUTPUT. </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Пример </span></font></font></font><br><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Для вывода результата выполнения запроса с именем 'AllPersons', отображая имя персоны и телефон, и разделяя записи горизонтальной линией, может использоваться следующая конструкция: </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><DBOUTPUT QUERY="AllPersons" MAXROWS=50></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><HR></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">#FullName# (Телефон: #Phone# ) <BR></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"></DBOUTPUT></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Результат обработки этого тега будет иметь вид: </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><HR></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Иванов Иван Иванович (Телефон: 222-22-22 ) <BR></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><HR></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Петров Петр Петрович (Телефон: 444-44-44 ) <BR></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font></font></font> </p> <h3 lang="ru-RU" align="left" class="western CL_1"> <font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"><b>5.9 Вывод результата выполнения запроса в виде таблицы</b></span></font></font></font></h3> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Теги DBTABLE и DBCOL всегда употребляются вместе для отображения результата выполнения запроса в виде таблицы. </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Атрибуты тега DBTABLE: </span></font></font></font></font></font> </p> <table width="647" cellpadding="0" cellspacing="0"> <col width="147"> <col width="499"> <tr> <td colspan="2" width="647" class="CL_6"> <p lang="ru-RU" align="left" class="western CL_1">   </p> </td> </tr> <tr valign="top"> <td width="147" class="CL_6"> <p lang="ru-RU" align="left" class="western CL_7">  <font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">QUERY </span></font></font> </p> </td> <td width="499" class="CL_6"> <p lang="ru-RU" align="left" class="western CL_1"> <font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">- имя DBQUERY, для которого нужно отобразить данные;</span></font></font></p> </td> </tr> <tr valign="top"> <td width="147" class="CL_6"> <p lang="ru-RU" align="left" class="western CL_7">  <font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">MAXROWS </span></font></font> </p> </td> <td width="499" class="CL_6"> <p lang="ru-RU" align="left" class="western CL_1"> <font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">- максимальное количество записей, которое может быть отображено в таблице;</span></font></font></p> </td> </tr> <tr valign="top"> <td width="147" class="CL_6"> <p lang="ru-RU" align="left" class="western CL_7">  <font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">COLSPACING </span></font></font> </p> </td> <td width="499" class="CL_6"> <p lang="ru-RU" align="left" class="western CL_1"> <font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">- количество пробелов, которые будут вставлены между колонками (по умолчанию 2);</span></font></font></p> </td> </tr> <tr valign="top"> <td width="147" class="CL_6"> <p lang="ru-RU" align="left" class="western CL_7">  <font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">HEADERLINES </span></font></font> </p> </td> <td width="499" class="CL_6"> <p lang="ru-RU" align="left" class="western CL_1"> <font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">- количество строк, которые будут отведены для заголовка (по умолчанию 2);</span></font></font></p> </td> </tr> <tr valign="top"> <td width="147" class="CL_6"> <p lang="ru-RU" align="left" class="western CL_7">  <font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">HTMLTABLE </span></font></font> </p> </td> <td width="499" class="CL_6"> <p lang="ru-RU" align="left" class="western CL_1"> <font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">- при наличие этого тега результат запроса будет отображен в виде HTML - таблицы, в противном случае будет использован тег HTML <PRE>.</span></font></font></p> </td> </tr> <tr valign="top"> <td width="147" class="CL_6"> <p lang="ru-RU" align="left" class="western CL_7">  <font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">BORDER </span></font></font> </p> </td> <td width="499" class="CL_6"> <p lang="ru-RU" align="left" class="western CL_1"> <font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">- используетя только вместе с атрибутом HTMLTABLE для отображения рамки в таблице.</span></font></font></p> </td> </tr> </table> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Атрибуты тега DBTABLE: </span></font></font></font></font></font> </p> <table width="647" cellpadding="0" cellspacing="0"> <col width="101"> <col width="546"> <tr> <td colspan="2" width="647" class="CL_6"> <p lang="ru-RU" align="left" class="western CL_1">   </p> </td> </tr> <tr valign="top"> <td width="101" class="CL_6"> <p lang="ru-RU" align="left" class="western CL_7">  <font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">HEADER </span></font></font> </p> </td> <td width="546" class="CL_6"> <p lang="ru-RU" align="left" class="western CL_1"> <font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">- текст, который будет выводиться как заголовок колонки;</span></font></font></p> </td> </tr> <tr valign="top"> <td width="101" class="CL_6"> <p lang="ru-RU" align="left" class="western CL_7">  <font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">WIDTH </span></font></font> </p> </td> <td width="546" class="CL_6"> <p lang="ru-RU" align="left" class="western CL_1"> <font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">- ширина колонки в символах (по умолчанию 20);</span></font></font></p> </td> </tr> <tr valign="top"> <td width="101" class="CL_6"> <p lang="ru-RU" align="left" class="western CL_7">  <font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">ALIGN </span></font></font> </p> </td> <td width="546" class="CL_6"> <p lang="ru-RU" align="left" class="western CL_1"> <font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">-выравнивание содержимого колонки (LEFT, RIGHT и CENTER);</span></font></font></p> </td> </tr> <tr valign="top"> <td width="101" class="CL_6"> <p lang="ru-RU" align="left" class="western CL_7">  <font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">TEXT </span></font></font> </p> </td> <td width="546" class="CL_6"> <p lang="ru-RU" align="left" class="western CL_1"> <font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">-заключенный в кавычки текст, определяющий содержимое колонки, в котором могут находиться те же теги, ссылки на параметры и др., что и в теге DBOUTPUT.</span></font></font></p> </td> </tr> </table> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Приведем пример использования тегов DBTABLE и DBCOL: </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><DBTABLE QUERY "AllPersons" MAXROWS=20></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><</span></font></font></font></font></font><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">DBCOL HEADER="Фамилия Имя Отчество" WIDTH="30" TEXT="#FullName#"></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"><DBCOL HEADER="Телефон" WIDTH="10" TEXT="#Phone#"></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"><DBCOL HEADER="Дата рождения" WIDTH="9" TEXT="# DateFormat(Birthday)#"></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"></DBTABLE></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font></font></font> </p> <h3 lang="ru-RU" align="left" class="western CL_1"> <font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"><b>5.10 Дополнительные замечания по созданию DBML - шаблонов</b></span></font></font></font></h3> <ul> <li/> <p lang="ru-RU" align="left" class="western CL_3"> <font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">В шаблонах DBML, для комментариев, используется три тире (<!---), в отличие от двух в HTML (<!--). Эта специальная форма синтаксиса для комментариев позволяет Cold Fusion игнорировать теги и текст, содержащиеся внутри этого комментария. </span></font></font> </p> <li/> <p lang="ru-RU" align="left" class="western CL_3"> <font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Ссылки на другие файлы (графические, HTML и CGI программы), содержащиеся в DBML шаблоне, должны использовать полный путь, начиная с корневого каталога сервера. </span></font></font> </p> <li/> <p lang="ru-RU" align="left" class="western CL_3"> <font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Так как символ '#' является специальным символом в Cold Fusion, то чтобы включить его в область вывода, определяемую тегом DBOUTPUT, нужно в шаблоне использовать два символа '#' вместо одного. Это же правило относится и к двойной кавычке, если этот символ нужно вставить, например, в атрибут SQL (см. следующий абзац). </span></font></font> </p> <li/> <p lang="ru-RU" align="left" class="western CL_3"> <font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Cold Fusion не поддерживает имена полей, содержащих пробелы, внутри тега DBOUTPUT. Если в имени поля все же встречаются пробелы, то при определении SQL выражения в теге DBQUERY, для каждого такого поля следует задать псевдоним. Например, </span></font></font> </p> </ul> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">SQL="select ""Full Name"" as FullName from Persons"</span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Псевдонимы бывает, также, полезно применять для удобства, в случаях, если имя поля велико. </span></font></font></font></font></font> </p> <h3 lang="ru-RU" align="left" class="western CL_1"> <font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"><b>5.11 Использование параметров и переменных в шаблонах</b></span></font></font></font></h3> <h4 lang="ru-RU" align="left" class="western CL_1"> <font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"><b>5.11.1 Поля формы и параметры URL</b></span></font></font></font></h4> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Если в шаблон, с помощью полей формы или в URL, были переданы параметры, то внутри любого тега DBML к этим параметрам можно обращаться, используя следующий синтаксис: #Form.Name#, #URL.Name#. На самом деле, префиксы 'Form.' и 'URL.' могут опускаться, если заранее известно, что не может быть параметров других типов с такими же именами. Это правило относится ко всем типам параметров и переменных. </span></font></font></font></font></font> </p> <h4 lang="ru-RU" align="left" class="western CL_1"> <font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"><b>5.11.2 Переменные окружения CGI</b></span></font></font></font></h4> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Каждый сеанс связи вызывающий CGI - программу имеет конкретные переменные окружения. Доступ к ним из шаблона осуществляется, также как и к другим параметрам, только используется префикс 'CGI.', например #CGI.REMOTE_ADDR#. </span></font></font></font></font></font> </p> <h4 lang="ru-RU" align="left" class="western CL_1"> <font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"><b>5.11.3 Применение тега DBSET для создания переменных</b></span></font></font></font></h4> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">С помощью тега DBSET можно создавать переменные непосредственно в самом шаблоне и использовать их. Приведем пример, в котором создается переменная #UserId# и ей присваивается значение 10. </span></font></font></font></font></font> </p> <p lang="ru-RU" align="center" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><DBSET #UserId#=10> </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">В правой части операции присваивания в DBSET, может находиться как число, текст (заключенный в кавычки), так и любые параметры доступные в шаблоне, например #CGI.SCRIPT_NAME#. Обращаясь к этим переменным, следует использовать префикс Variable, например #Variable.UserId#. </span></font></font></font></font></font> </p> <h4 lang="ru-RU" align="left" class="western CL_1"> <font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><b>5.11.4 HTTP Cookies</b></span></font></font></font></h4> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Cookies - это механизм, позволяющий приложениям о стороны сервера сохранять и использовать параметры на стороне клиента. Этот механизм поддерживается всеми версиями Netscape Navigator, MS Internet Explorer начиная с версии 2.0, и будет поддерживаться остальными Web - браузерами в ближайшем будущем. </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Для сохранения параметров в Cookies. Используется тег DBCOOKIE, имеющий следующий синтаксис: </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><DBCOOK</span></font></font></font></font></font><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">IE NAME="Имя_параметра" VALUE="Значение параметра" EXPIRES="Срок действия" SECURE></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">В атрибутах NAME и VALUE определяются имя и значение параметра соответственно. Атрибут EXPIRES определяет, когда закончится срок действия этого параметра. Этот атрибут может быть задан как дата т.е. '10/09/97', количество дней (т.е. 10, 100), NOW (удаляет параметр) или NEVER. Наличие необязательного атрибута SECURE запрещает отправлять параметр браузеру, если тот не поддерживает стандарт SSL. </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">К параметрам, хранимым в cookies можно обращаться внутри любого тега DBML, добавляя префикс 'Cookies.', например: </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><DBOUTPUT></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">#Cookies.User_Id#</span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"></DBOUTPUT> .</span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font></font></font> </p> <h4 lang="ru-RU" align="left" class="western CL_1"> <font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"><b>5.11.5 Использование результатов выполнения запросов</b></span></font></font></font></h4> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">После выполнения запроса, результат его выполнения может быть использован в качестве динамического параметра для спецификации другого запроса. Например, если создан запрос с именем 'FindUser', который возвращает идентификатор записи, расположенный в поле 'USER_ID', то можно использовать этот идентификатор в другом запросе, используя имя запроса как префикс к имени поля, разделяя их точкой (т.е. #FindUser.UserId#). </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Каждый запрос, описанный тегом DBQUERY, после выполнения имеет два специальных атрибута, RecordCount и CurrentRow, содержащих информацию о количестве возвращенных в результате выполнения запроса записей и о текущей записи, обрабатываемой тегом DBOUTPUT, соответственно. Используются эти атрибуты так же как и поля запроса (#FindUser.RecordCount#). </span></font></font></font></font></font> </p> <h3 lang="ru-RU" align="left" class="western CL_1"> <font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"><b>5.12 Проверка корректности данных и форматирование вывода</b></span></font></font></font></h3> <h4 lang="ru-RU" align="left" class="western CL_1"> <font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"><b>5.12.1 Проверка корректности данных в полях формы</b></span></font></font></font></h4> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">В Cold Fusion предусмотрен механизм проверки корректности заполнения полей формы. Этот механизм основан на добавлении в форму дополнительных полей типа HIDDEN (скрытые), с именем, составленным из имени поля, значение которого нужно проверить и одного из допустимых в Cold Fusion суффиксов, задающих контекст проверки. </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">В следующей таблице приведен список всех суффиксов используемых для проверки: </span></font></font></font></font></font> </p> <table width="647" cellpadding="0" cellspacing="1"> <col width="72"> <col width="186"> <col width="383"> <tr> <td width="72" class="CL_8"> <p lang="ru-RU" align="left" class="western CL_1"> <font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"><b>Суффикс</b></span></font></font><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font> </p> </td> <td width="186" class="CL_8"> <p lang="ru-RU" align="left" class="western CL_1"> <font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"><b>Значение атрибута VALUE</b></span></font></font><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font> </p> </td> <td width="383" class="CL_8"> <p lang="ru-RU" align="left" class="western CL_1"> <font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"><b>Описание</b></span></font></font><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font> </p> </td> </tr> <tr> <td width="72" class="CL_8"> <p lang="ru-RU" align="left" class="western CL_1"> <font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">_required </span></font></font> </p> </td> <td width="186" class="CL_8"> <p lang="ru-RU" align="left" class="western CL_1"> <font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Текст сообщения об ошибке</span></font></font></p> </td> <td width="383" class="CL_8"> <p lang="ru-RU" align="left" class="western CL_1"> <font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Проверяется произведен ли ввод в поле формы. </span></font></font> </p> </td> </tr> <tr> <td width="72" class="CL_8"> <p lang="ru-RU" align="left" class="western CL_1"> <font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">_integer </span></font></font> </p> </td> <td width="186" class="CL_8"> <p lang="ru-RU" align="left" class="western CL_1"> <font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Текст сообщения об ошибке</span></font></font></p> </td> <td width="383" class="CL_8"> <p lang="ru-RU" align="left" class="western CL_1"> <font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Проверяется, является ли значение, введенное пользователем, целым числом. </span></font></font> </p> </td> </tr> <tr> <td width="72" class="CL_8"> <p lang="ru-RU" align="left" class="western CL_1"> <font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">_float</span></font></font></p> </td> <td width="186" class="CL_8"> <p lang="ru-RU" align="left" class="western CL_1"> <font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Текст сообщения об ошибке</span></font></font></p> </td> <td width="383" class="CL_8"> <p lang="ru-RU" align="left" class="western CL_1"> <font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Проверяется, является ли значение, введенное пользователем, числом. </span></font></font> </p> </td> </tr> <tr> <td width="72" class="CL_8"> <p lang="ru-RU" align="left" class="western CL_1"> <font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">_range</span></font></font></p> </td> <td width="186" class="CL_8"> <p lang="ru-RU" align="left" class="western CL_1"> <font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">MIN = Минимальное_Значение </span></font></font><br><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">MAX = Максимальное_Значение </span></font></font> </p> </td> <td width="383" class="CL_8"> <p lang="ru-RU" align="left" class="western CL_1"> <font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Проверяется, находится ли введенное число в определенных границах. </span></font></font> </p> </td> </tr> <tr> <td width="72" class="CL_8"> <p lang="ru-RU" align="left" class="western CL_1"> <font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">_date</span></font></font></p> </td> <td width="186" class="CL_8"> <p lang="ru-RU" align="left" class="western CL_1"> <font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Текст сообщения об ошибке</span></font></font></p> </td> <td width="383" class="CL_8"> <p lang="ru-RU" align="left" class="western CL_1"> <font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Проверяется, находится ли введенная пользователем дата в одном из следующих форматов: DD/MM/YY, DD/MM/YYYY, DD/MM (используется текущий год). В качестве разделителя можно, также, использовать тире (т.е. DD-MM-YY). </span></font></font> </p> </td> </tr> </table> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Пример </span></font></font></font><br><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Ниже приведен фрагмент описания формы, состоящий из двух текстовых полей: обязательное для заполнения поле FullName и поле типа дата Birthday, и для каждого из этих полей описано поле типа HIDDEN задающее контекст проверки. </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Фамилия Имя Отчество : <INPUT T</span></font></font></font></font></font><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">YPE="TEXT" NAME="FullName"></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><INPUT TYPE="HIDDEN" NAME="FullName_required"</span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">VALUE="Фамилия Имя Отчество должны быть заданы!"></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Дата рождения : <INPUT TYPE="TEXT" NAME="Birthday"></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><INPUT TYPE="HIDDEN" NAME="Birtday_date"</span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">VALUE="Дата рождения должна быть в формате DD/MM/YYYY (например, 20.08.1968)"></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font></font></font> </p> <h4 lang="ru-RU" align="left" class="western CL_1"> <font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"><b>5.12.2 Функции вывода в DBML</b></span></font></font></font></h4> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Для отображения, данные в нужном формате, в Cold Fusion предусмотрены специальные функции. При использовании такой функции, примененной к конкретному параметру, она заключается в символ '#', например, #DateFormat(Form.LastUpdate)#. </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"><i><b>Список основных функций</b></i></span></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font></font></font> </p> <table width="647" cellpadding="0" cellspacing="1"> <col width="129"> <col width="435"> <col width="76"> <tr> <td width="129" class="CL_8"> <p lang="ru-RU" align="left" class="western CL_1"> <font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"><b>Функция</b></span></font></font><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font> </p> </td> <td width="435" class="CL_8"> <p lang="ru-RU" align="left" class="western CL_1"> <font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"><b>Описание</b></span></font></font><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font> </p> </td> <td width="76" class="CL_8"> <p lang="ru-RU" align="left" class="western CL_1"> <font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"><b>Пример</b></span></font></font><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font> </p> </td> </tr> <tr> <td width="129" class="CL_8"> <p lang="ru-RU" align="left" class="western CL_1"> <font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">DateFormat </span></font></font> </p> </td> <td width="435" class="CL_8"> <p lang="ru-RU" align="left" class="western CL_1"> <font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Отображает поле базы данных типа 'дата/время' или 'дата' в формате DD/MM/YY. </span></font></font> </p> </td> <td width="76" class="CL_8"> <p lang="ru-RU" align="left" class="western CL_1"> <font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">12/01/96 </span></font></font> </p> </td> </tr> <tr> <td width="129" class="CL_8"> <p lang="ru-RU" align="left" class="western CL_1"> <font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">TimeFormat </span></font></font> </p> </td> <td width="435" class="CL_8"> <p lang="ru-RU" align="left" class="western CL_1"> <font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Отображает поле базы данных типа 'дата/время' в формате HH:MI AM/PM.. </span></font></font> </p> </td> <td width="76" class="CL_8"> <p lang="ru-RU" align="left" class="western CL_1"> <font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">10:22 AM </span></font></font> </p> </td> </tr> <tr> <td width="129" class="CL_8"> <p lang="ru-RU" align="left" class="western CL_1"> <font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">NumberFormat </span></font></font> </p> </td> <td width="435" class="CL_8"> <p lang="ru-RU" align="left" class="western CL_1"> <font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Отображает числовые значения как целые числа, разделяя разряды запятой. </span></font></font> </p> </td> <td width="76" class="CL_8"> <p lang="ru-RU" align="left" class="western CL_1"> <font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">10,256</span></font></font></p> </td> </tr> <tr> <td width="129" class="CL_8"> <p lang="ru-RU" align="left" class="western CL_1"> <font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">DecimalFormat </span></font></font> </p> </td> <td width="435" class="CL_8"> <p lang="ru-RU" align="left" class="western CL_1"> <font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">То же, что и NumberFormat, плюс отображаются два знака после десятичной точки. </span></font></font> </p> </td> <td width="76" class="CL_8"> <p lang="ru-RU" align="left" class="western CL_1"> <font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">10,256.3 </span></font></font> </p> </td> </tr> <tr> <td width="129" class="CL_8"> <p lang="ru-RU" align="left" class="western CL_1"> <font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">DollarFormat </span></font></font> </p> </td> <td width="435" class="CL_8"> <p lang="ru-RU" align="left" class="western CL_1"> <font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">То же, что и DecimalFormat, плюс добавляется символ $ и вместо знака минус перед отрицательным значением оно помещается в скобки. </span></font></font> </p> </td> <td width="76" class="CL_8"> <p lang="ru-RU" align="left" class="western CL_1"> <font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">$10,256.73 </span></font></font> </p> </td> </tr> <tr> <td width="129" class="CL_8"> <p lang="ru-RU" align="left" class="western CL_1"> <font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">YesNoFormat </span></font></font> </p> </td> <td width="435" class="CL_8"> <p lang="ru-RU" align="left" class="western CL_1"> <font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Отображает данные логического типа как Yes или No. Все ненулевые значения интерпретируются как Yes, нуль - как No. </span></font></font> </p> </td> <td width="76" class="CL_8"> <p lang="ru-RU" align="left" class="western CL_1"> <font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">Yes</span></font></font></p> </td> </tr> <tr> <td width="129" class="CL_8"> <p lang="ru-RU" align="left" class="western CL_1"> <font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">ParagraphFormat </span></font></font> </p> </td> <td width="435" class="CL_8"> <p lang="ru-RU" align="left" class="western CL_1"> <font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Применяется при отображении данных введенных в поле TEXTAREA. Преобразует символ перевода строки в пробел, два перевода строки подряд - в тег параграфа HTML (<P>). </span></font></font> </p> </td> <td width="76" class="CL_8"> <p lang="ru-RU" align="left" class="western CL_1">  </p> </td> </tr> <tr> <td width="129" class="CL_8"> <p lang="ru-RU" align="left" class="western CL_1"> <font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">HTMLCodeFormat </span></font></font> </p> </td> <td width="435" class="CL_8"> <p lang="ru-RU" align="left" class="western CL_1"> <font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Удаляет символ перевода строки и пропускает все специальные символы (</span></font></font><font face="Courier New, serif"><font size="2" class="CL_5"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">>, <, ", &</span></font></font></font></font><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">), применяя к тексту тег преформатирования HTML (<PRE>). </span></font></font> </p> </td> <td width="76" class="CL_8"> <p lang="ru-RU" align="left" class="western CL_1">  </p> </td> </tr> <tr> <td width="129" class="CL_8"> <p lang="ru-RU" align="left" class="western CL_1"> <font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">HTMLEditFormat </span></font></font> </p> </td> <td width="435" class="CL_8"> <p lang="ru-RU" align="left" class="western CL_1"> <font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">То же, что и HTMLCodeFormat, только без добавления тега <PRE>. </span></font></font> </p> </td> <td width="76" class="CL_8"> <p lang="ru-RU" align="left" class="western CL_1">  </p> </td> </tr> </table> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Кроме вышеперечисленных есть еще несколько функций обеспечивающих дополнительные возможности манипулирования параметрами в шаблоне: </span></font></font></font></font></font> </p> <ul> <li/> <p lang="ru-RU" align="left" class="western CL_3"> <font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">ParameterExists </span></font></font> </p> </ul> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Эта функция проверяет, доступен ли в шаблоне параметр с заданным именем, возвращая Yes или No. Например, чтобы проверить был ли отправлен из формы параметр UserId, используется следующее выражение: </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><DBIF #ParameterExists(Form.UserId)# is Yes></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font></font></font> </p> <ul> <li/> <p lang="ru-RU" align="left" class="western CL_3"> <font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">PreserveSingleQuotes </span></font></font> </p> </ul> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Эта функция обычно используется в SQL выражениях для устранения из значений параметров одиночных кавычек, которые являются специальным символом в SQL. Приведем пример использования этой функции: </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">SELECT * FROM Persons WHERE</span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">FullName Like '#PreserveSingleQuotes(Form.FullName)#%'</span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font></font></font> </p> <ul> <li/> <p lang="ru-RU" align="left" class="western CL_3"> <font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">URLEncodedFormat </span></font></font> </p> </ul> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Функция заменяет пробелы на символ "+" и все не латинские символы и цифры - шестнадцатеричным эквивалентом, что позволяет использовать результат в строке URL. </span></font></font></font></font></font> </p> <ul> <li/> <p lang="ru-RU" align="left" class="western CL_3"> <font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">IncrementValue и DecrementValue</span></font></font><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font> </p> </ul> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Эти функции возвращают переданный им параметр, прибавив или отняв от него единицу соответственно. Например, чтобы увеличить параметр 'OrderCount' можно воспользоваться следующим выражением: </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><DBSET #OrderCount# = #IncrementValue(OrderCount)#</span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font></font></font> </p> <ul> <li/> <p lang="ru-RU" align="left" class="western CL_3"> <font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">ValueList и</span></font></font><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> QuotedValueList </span></font></font> </p> </ul> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Используя в качестве аргумента имя поля конкретного запроса, эти функции возвращают разделенный запятыми список значений этого поля для каждой записи, возвращенной в результате выполнения запроса. </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Например, если запрос возвращает четыре записи, то результат функции ValueList будет иметь вид 11,22,33,44, а результат функции QuotedValueList, примененной к этим же данным, будет возвращать '11','22','33','44'. </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Эти функции могут применятся для использования результата одного запроса в операции IN последующего запроса, например: </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"><DBQUERY NAME="Customers" ...определение запроса...></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><</span></font></font></font><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">DBQUERY NAME="CustomerOrders" DATASOURCE="EXAMPLE"</span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">SQL="SELECT * FROM Orders WHERE Customer_ID</span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">IN ( #ValueList(Customer.CustomerID)# )"></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font></font></font> </p> <h3 lang="ru-RU" align="left" class="western CL_1"> <font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"><b>5.13 Динамическое изменение содержимого документа</b></span></font></font></font></h3> <h4 lang="ru-RU" align="left" class="western CL_1"> <font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"><b>5.13.1 Условный оператор (DBIF & DBELSE)</b></span></font></font></font></h4> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Основным средством динамического определения содержимого документа являются теги DBIF и DBELSE, позволяющие производить проверку некоторого условия и в зависимости от этого формировать результат. </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Тег DBIF имеет следующий синтаксис (тег DBELSE может не использоваться): </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><DBIF </span></font></font></font></font></font><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"><i>значение</i></span></font></font></font></font></font><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"> оператор </span></font></font></font></font></font><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"><i>значение</i></span></font></font></font></font></font><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">теги HTML и DBML</span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><DBELSE></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">теги HTML и DBML</span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"></DBIF></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">В качестве элемента тега DBIF - "</span></font></font></font><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"><i>значение</i></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">", могут использоваться любой параметр или переменная Cold Fusion (например, #Form.Name#, #CGI.User_Agent#), числовое значение, произвольная последовательность символов (заключенная в кавычки). </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Элемент тега DBIF - "</span></font></font></font><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"><i>оператор</i></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">" ограничивается следующим списком: </span></font></font></font></font></font> </p> <ul> <li/> <p lang="ru-RU" align="left" class="western CL_3"> <font face="Courier New, serif"><font size="2" class="CL_5"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><b>is</b></span></font></font></font></font><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"> - сравнивает два значения, с учетом регистра, и возвращает значение True (истина), если эти значения совпадают; </span></font></font> </p> <li/> <p lang="ru-RU" align="left" class="western CL_3"> <font face="Courier New, serif"><font size="2" class="CL_5"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><b>is not</b></span></font></font></font></font><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"> - оператор обратный оператору </span></font></font><font face="Courier New, serif"><font size="2" class="CL_5"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><b>is</b></span></font></font></font></font><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">; </span></font></font> </p> <li/> <p lang="ru-RU" align="left" class="western CL_3"> <font face="Courier New, serif"><font size="2" class="CL_5"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><b>Contains</b></span></font></font></font></font><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"> - проверяет, содержится ли значение находящееся слева от оператора в значении справа и возвращает True, если да; </span></font></font> </p> <li/> <p lang="ru-RU" align="left" class="western CL_3"> <font face="Courier New, serif"><font size="2" class="CL_5"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><b>does not contain</b></span></font></font></font></font><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"> - оператор обратный оператору </span></font></font><font face="Courier New, serif"><font size="2" class="CL_5"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><b>contains</b></span></font></font></font></font><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">; </span></font></font> </p> <li/> <p lang="ru-RU" align="left" class="western CL_3"> <font face="Courier New, serif"><font size="2" class="CL_5"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><b>great then</b></span></font></font></font></font><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"> - проверяет, что значение слева от оператора больше чем справа и возвращает True, если да; </span></font></font> </p> <li/> <p lang="ru-RU" align="left" class="western CL_3"> <font face="Courier New, serif"><font size="2" class="CL_5"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><b>less then</b></span></font></font></font></font><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"> - проверяет, что значение слева от оператора меньше чем справа и возвращает True, если да; </span></font></font> </p> <li/> <p lang="ru-RU" align="left" class="western CL_3"> <font face="Courier New, serif"><font size="2" class="CL_5"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><b>greater then or equal to</b></span></font></font></font></font><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"> - оператор обратный оператору </span></font></font><font face="Courier New, serif"><font size="2" class="CL_5"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><b>less then</b></span></font></font></font></font><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">; </span></font></font> </p> <li/> <p lang="ru-RU" align="left" class="western CL_3"> <font face="Courier New, serif"><font size="2" class="CL_5"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><b>less then or equal to</b></span></font></font></font></font><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"> - оператор обратный оператору </span></font></font><font face="Courier New, serif"><font size="2" class="CL_5"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><b>great then</b></span></font></font></font></font><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">; </span></font></font> </p> </ul> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Пример </span></font></font></font><br><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"><DBIF #PersonSearch.RecordCount()# is 0> </span></font></font></font><br><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"><P>Лиц, удовлетворяющих за</span></font></font></font><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">данным критериям поиска,</span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">в базе данных не обнаружено!</span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><DBELSE></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><DBOUTPUT QUERY="PersonSearch"></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><HR></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Фамилия Имя Отчество: #FullName# <BR></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><DBIF #Phone# is ""></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Телефон: #Phone# <BR></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><DBIF></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"></DBOUTPUT></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"></DBIF></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font></font></font> </p> <h4 lang="ru-RU" align="left" class="western CL_1"> <font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"><b>5.13.2 Перенаправление на другой URL (DBLOCATION & DBABORT)</b></span></font></font></font></h4> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Для перенаправления пользователя на другой URL предназначен тег DBLOCATION. Этот тег обычно применяется, если в шаблоне выполняется один или более запросов, а затем нужно сразу же перейти к другому документу, либо URL, на который нужно отправит пользователя, зависит от параметра. Приведем пример использования тега, иллюстрирующий его синтаксис: </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><DBIF #NewPassword# is not #PasswordConfirmation#></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><DBLOCATION URL="/login/invalidpassword.htm"></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"></DBIF></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">В качестве значения атрибута URL тега DBLOCATION можно использовать параметры и переменные, допустимые в шаблоне. Например, </span></font></font></font><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><DBLOCATION URL=#Page#></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">. </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Для прерывания обработки шаблона в Cold Fusion используется тег DBABORT. </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"><P>Этот текст будет отправлен клиенту</span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><DBABORT></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"><P>Этот текст не будет отправлен клиенту</span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Обычно этот тег используется при неправильной аутентификации. </span></font></font></font></font></font> </p> <h4 lang="ru-RU" align="left" class="western CL_1"> <font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"><b>5.13.3 Включение в шаблон других шаблонов</b></span></font></font></font></h4> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">По мере усложнения приложений, разрабатываемых с использованием Cold Fusion, появляется необходимость упростить используемые шаблоны. Одним из способов решения этой проблемы, предлагаемых в Cold Fusion, является выделение из шаблонов часто используемых блоков, таких как запросы и области вывода, и их многократное использование в других шаблонах. Для включения часто используемых шаблонов в другой шаблон, используется тег DBINCLUDE. </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Тег DBINCLUDE может быть расположен в любом месте шаблона, кроме как в тегах DBQUERY, DBOUTPUT и DBTABLE. Тег DBINCLUDE имеет атрибут TEMPLATE который задает путь до файла с шаблоном. Этот шаблон будет обработан Cold Fusion как часть основного шаблона (то есть, в нем могут использоваться запросы, уже запущенные в основном шаблоне, а также ссылки на параметры формы, URL и CGI). </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Приведем пример включения в шаблон шаблона с именем 'test.dbm': </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><DBINCLUDE TEMPLATE="test.dbm"></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font></font></font> </p> <h4 lang="ru-RU" align="left" class="western CL_1"> <font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"><b>5.13.4 Определение типа данных MIME для содержимого документа</b></span></font></font></font></h4> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Cold Fusion позволяет задавать тип MIME для данных которые будут отправлены пользователю из текущего шаблона (по умолчанию используется text/html). Для этого используется тег DBCONTENT, имеющий единственный атрибут TYPE, который, собственно, и задает тип данных. Например, чтобы отправить клиенту VRML - документ может использоваться следующий шаблон: </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><DBCONTENT TYPE="x-world/x-vrml"></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><DBQUERY NAME="GetCyberRoom"</span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">SQL="SELECT VRML_Script FROM CyberRooms WHERE</span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">RoomNumber=#URL.RoomNumber#"></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><DBOUTPUT QUERY="GetCyberRoom"></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">#VRML_Script#</span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"></DBOUTPUT></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Заметим, что Cold Fusion не будет отправлять клиенту текст, расположенный до тега DBOUTPUT. </span></font></font></font></font></font> </p> <h3 lang="ru-RU" align="left" class="western CL_1"> <font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"><b>5.14 Расширенные возможности</b></span></font></font></font></h3> <h4 lang="ru-RU" align="left" class="western CL_1"> <font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"><b>5.14.1 Динамическое определение SQL выражения</b></span></font></font></font></h4> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">В некоторых сложных приложениях может потребоваться, в зависимости от значений параметров, определять не только содержание запроса, но и его структуру. В Cold Fusion предусмотрен тег DBSQL, который может употребляться внутри тега DBQUERY, доопределяя SQL - выражение, в зависимости от значений параметров. Тег DBSQL имеет единственный атрибут SQL, значение которого будет добавляться к основному SQL - выражению. </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Пример </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><DBQUERY NAME="SiteSearch" DATASOURCE="Sites Database"</span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">SQL="SELECT * FROM SITES WHERE SiteType = #SiteType# "></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><DBIF #Form.City# is not ""></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><DBSQL SQL=" AND City = '#Form.City#' "></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"></DBIF></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><DBIF #Form.SortOrder# is not ""></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><DBSQL SQL=" ORDER BY #Form.SortOrder# "></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"></DBIF></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"></DBQUERY></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font></font></font> </p> <h4 lang="ru-RU" align="left" class="western CL_1"> <font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"><b>5.14.2 Поддержка транзакций</b></span></font></font></font></h4> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Для объединения нескольких запросов в одну транзакцию может быть использован тег DBTRANSACTION. Все запросы, содержащиеся внутри этого тега, будут интерпретироваться как одна транзакция. То есть все изменения сделанные в базе данных, либо будут одновременно сохранены, либо не будет сохранено ни одно из них. </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Приведем пример, в котором денежная сумма переводится с одного банковского счета на другой: </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><DBTRANSACTION></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><DBQUERY NAME="WithdrawCash" DATASOURCE="Bank Accounts"</span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">SQL = "UPDATE Accounts SET Balance = Balance - #Amount#</span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">WHERE Account_ID = #AccountFrom# "></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><DBQUERY NAME="DepositCash" DATASOURCE="Bank Accounts"</span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">SQL = "UPDATE Accounts SET Balance = Balance + #Amount#</span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">WHERE Account_ID = #AccountTo# "></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"></DBTRANSACTION></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Заметим, что не все драйверы ODBC поддерживают транзакции. Например, драйверы для Oracle, SQL Server и Access поддерживают транзакции, а драйверы для FoxPro, dBase и Paradox - нет. </span></font></font></font></font></font> </p> <h4 lang="ru-RU" align="left" class="western CL_1"> <font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"><b>5.14.3 Вложенные области вывода и группирования</b></span></font></font></font></h4> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Теги DBOUTPUT могут вкладываться друг в друга, с целью сгруппировать области вывода. Группирование достигается с помощью использования атрибута GROUP в теге DBOUTPUT, который содержит другой тег DBOUTPUT. Этот атрибут определяет поле по которому будет производится группирование. Внешний тег DBOUTPUT обычно используется для вывода заголовка группы , а внутренний - для вывода записей содержащихся в группе. </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Приведем пример вывода сотрудников организации сгруппированных по отделам: </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><DBQUERY NAME="ListEmployees" DataSource="Employees"</span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">SQL="SELECT * FROM Emp ORDER BY Department"></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><DBOUTPUT QUERY="ListEmployees" GROUP="Department"></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><P> <H2>#ListEmployees.Department#</H2></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><UL></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><DBOUTPUT></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><LI> #FullName# ##</span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"></DBOUTPUT></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"></UL></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"></DBOUTPUT></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Обратим внимание на то, если поле используется для группирования, то результат запроса должен быть отсортирован по этому полю. Если используется многоуровневое группирование (ограничений на количество уровней вложенности тегов DBOUTPUT нет), то соответственно в SQL - выражении должна быть задана многоуровневая сортировка (например, ORDER BY Country, Region). </span></font></font></font></font></font> </p> <h4 lang="ru-RU" align="left" class="western CL_1"> <font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"><b>5.14.4 Использование списочных полей с множественным выбором</b></span></font></font></font></h4> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Если HTML - форма содержит поле типа SELECT с множественным выбором, либо поля с одинаковыми именами (например, поля типа checkbox), то данные будут переданы в шаблон в виде, разделенных запятыми, списка значений. Такая форма представления наиболее удобна для использования в операторе IN языка SQL. </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Пример </span></font></font></font><br><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Предположим, что в форме содержится поле: </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><SELECT NAME="SelectedPersons" MULTIPLE SIZE="3"></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"><OPTION VALUE="1">Иванов И.И.</span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"><OPTION VALUE="2">Петров П.П.</span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"><OPTION VALUE="3" SELECTED>Сидоров С.С.</span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"></SELECT></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Этот параметр, переданный в шаблон, может быть использован в следующем SQL - выражении: </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">SQL="SELECT * FROM Persons</span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font><br><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU">WHERE Person_ID IN ( #SelectedPersons# )</span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Следует обратить внимание на то, чтобы параметр, который используется в операторе IN, был не пуст. Для этого можно пользуясь стандартными средствами Cold Fusion описать поле как требуемое, либо использовать поле типа HIDDEN с тем же именем и с заведомо неверным значением. Например, предыдущий пример можно дополнить следующим полем: </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font face="Courier New, serif"><font size="2" class="CL_5"><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"><INPUT TYPE="HIDDEN" NAME="SelectedPersons" VALUE="-1"></span></font></font></font></font></font><font color="#000000"><font face="Times New Roman, serif"><font size="3" class="CL_4"><span lang="ru-RU"> </span></font></font></font></font></font> </p> <h4 lang="ru-RU" align="left" class="western CL_1"> <font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU"><b>5.14.5 Дополнительные команды SQL</b></span></font></font></font></h4> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">В теге DBOUTPUT, кроме выражения SELECT языка SQL, допускается использование и любых других, допустимых для конкретного источника данных, SQL - команд, включая: </span></font></font></font></font></font> </p> <ul> <li/> <p lang="ru-RU" align="left" class="western CL_3"> <font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">INSERT - добавление записи в таблицу. </span></font></font> </p> <li/> <p lang="ru-RU" align="left" class="western CL_3"> <font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">UPDATE - модификация записи в таблице. </span></font></font> </p> <li/> <p lang="ru-RU" align="left" class="western CL_3"> <font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">DELETE - удаление записи из таблицы. </span></font></font> </p> </ul> <p lang="ru-RU" align="left" class="CL_3"> <font color="#000000"><font size="3" class="CL_4"><font color="#000000"><font face="Times New Roman Cyr, serif"><font size="3" class="CL_4"><span lang="ru-RU">Использование непосредственно команд SQL вместо тегов DBINSERT и DBUPDATE в некоторых случаях может обеспечить большую гибкость и эффективность. Например, при модификации или создании новой записи, появляется возможность использовать все параметры и переменные доступные в шаблоне в том числе и результаты определенных в шаблоне запросов. </span></font></font></font></font></font> </p> <p lang="ru-RU" align="left" class="western CL_9"> <br/> </p> </div> <div style="text-align:center; margin:15px;"> <div class="radial_vseo" style="float:none;"> <a href="/filearray/file-download-176632.html" class="download_bt" target="_blank">Скачать архив с этим файлом</a> </div> </div> <div style="padding-top:20px;"><div class="pagination" style="margin-bottom:15px;"> <div class="pprev"><span>Назад</span></div> <div class="pnext"><span>Вперед</span></div> <div class="navigation"><a href="/show-document/1-176632/d0f65869882785fabfe8eed1e14a401a/1/">1</a></div> <div class="clr"></div> </div></div> <hr /> <div> <h3 style="padding-bottom:10px; padding-top:15px;">Случайные файлы</h3> <table width="100%" class="userstop result_table" id="result_table"> <thead><tr><td>Файл</td></tr></thead> <tr><td><a href="/show-document/1-113793/0bf48a318f29665ab7e7b78bedcd62a8/">89126.doc</a></td></tr><tr><td><a href="/show-document/1-165507/64b4ec531742c126904cc632120e6b2f/">163353.rtf</a></td></tr><tr><td><a href="/show-document/1-185942/2501502ea41378b3be5742bb5fcfdd14/">20499.rtf</a></td></tr><tr><td><a href="/show-document/1-81487/82faa162d2a1898ea36858f53115ccf1/">77806.doc</a></td></tr><tr><td><a href="/show-document/1-124231/721e8b202bf373177c6790ede8a0ef79/">83784.rtf</a></td></tr> </table> </div> </div> </div> <noindex> <br /> <!-- SAPE RTB DIV 728x90 --> <center><div id="SRTB_45910"></div></center> <!-- SAPE RTB END --> </noindex><br> <noindex> <hr /><br /><center> Чтобы не видеть здесь видео-рекламу достаточно стать зарегистрированным пользователем. <br /> Чтобы не видеть никакую рекламу на сайте, нужно стать <b>VIP</b>-пользователем.<br /> Это можно сделать совершенно бесплатно. Читайте <a href="http://baumanki.net/instrukcii/51-zachem-nuzhen-vip-dostup.html" target="_blanc">подробности тут</a>. <br /> <script type="text/javascript" language="javascript"> $(function(){$.post("/engine/modules/filearray/ajax/counter_ajax.php", {id:10}, function( data ){});}); </script> <iframe id="adv_kod_frame" src="http://videopotok.pro/kod.php" width="600" height="320" frameborder="0" scrolling="no" allowfullscreen="true"></iframe><script type="text/javascript" src="http://videopotok.pro/player_html5/iframeobrabotchik.js"></script> </center> <br /></noindex> <div class="stamp"><div class="left-top-border-stamp"></div></div> </div> </td> </tr> <tr> <td colspan="2" bgcolor="#FFFFFF"> <noindex> <center> <!-- SAPE RTB DIV 970x90 --> <div id="SRTB_97980"></div> <!-- SAPE RTB END --> </center></noindex> </td> </tr> </table> </div> </div> <div id="footer"> <div class="footer-wrapper"> <noindex><ul class="countter_list"> <li><!-- Rating@Mail.ru counter --> <script type="text/javascript"> var _tmr = window._tmr || (window._tmr = []); _tmr.push({id: "1768895", type: "pageView", start: (new Date()).getTime()}); (function (d, w, id) { if (d.getElementById(id)) return; var ts = d.createElement("script"); ts.type = "text/javascript"; ts.async = true; ts.id = id; ts.src = (d.location.protocol == "https:" ? "https:" : "http:") + "//top-fwz1.mail.ru/js/code.js"; var f = function () {var s = d.getElementsByTagName("script")[0]; s.parentNode.insertBefore(ts, s);}; if (w.opera == "[object Opera]") { d.addEventListener("DOMContentLoaded", f, false); } else { f(); } })(document, window, "topmailru-code"); </script><noscript><div style="position:absolute;left:-10000px;"> <img src="//top-fwz1.mail.ru/counter?id=1768895;js=na" style="border:0;" height="1" width="1" alt="Рейтинг@Mail.ru" /> </div></noscript> <!-- //Rating@Mail.ru counter --> <!-- Rating@Mail.ru logo --> <a href="http://top.mail.ru/jump?from=1768895" rel="nofollow"> <img src="//top-fwz1.mail.ru/counter?id=1768895;t=488;l=1" style="border:0;" height="31" width="88" alt="Рейтинг@Mail.ru" /></a> <!-- //Rating@Mail.ru logo --> </li> <li> <!-- HotLog --> <script type="text/javascript"> hotlog_r=""+Math.random()+"&s=2309980&im=504&r="+ escape(document.referrer)+"&pg="+escape(window.location.href); hotlog_r+="&j="+(navigator.javaEnabled()?"Y":"N"); hotlog_r+="&wh="+screen.width+"x"+screen.height+"&px="+ (((navigator.appName.substring(0,3)=="Mic"))?screen.colorDepth:screen.pixelDepth); hotlog_r+="&js=1.3"; document.write('<a href="http://click.hotlog.ru/?2309980" target="_blank"><img '+ 'src="http://hit3.hotlog.ru/cgi-bin/hotlog/count?'+ hotlog_r+'" border="0" width="88" style="margin-right: 0px;" height="31" title="HotLog: показано количество посетителей за сегодня, за вчера и всего" alt="HotLog"><\/a>'); </script> </li> <li><!--LiveInternet counter--><script type="text/javascript"><!-- document.write("<a href='//www.liveinternet.ru/click' "+ "target=_blank><img src='//counter.yadro.ru/hit?t18.1;r"+ escape(document.referrer)+((typeof(screen)=="undefined")?"": ";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth? screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+ ";"+Math.random()+ "' alt='' title='LiveInternet: показано число просмотров за 24"+ " часа, посетителей за 24 часа и за сегодня' "+ "border='0' width='88' height='31'><\/a>") //--></script><!--/LiveInternet--> </li> <div style="display:none"> <!--Openstat--> <span id="openstat1"></span> <script type="text/javascript"> var openstat = { counter: 1, next: openstat }; (function(d, t, p) { var j = d.createElement(t); j.async = true; j.type = "text/javascript"; j.src = ("https:" == p ? "https:" : "http:") + "//openstat.net/cnt.js"; var s = d.getElementsByTagName(t)[0]; s.parentNode.insertBefore(j, s); })(document, "script", document.location.protocol); </script> <!--/Openstat--></div> <li> <a href="https://passport.webmoney.ru/asp/certview.asp?wmid=313833175144" rel="nofollow" target="_blank"><img src="http://megastock.ru/doc/Logo/v_blue_on_white_ru.png" alt="Здесь находится аттестат нашего WM идентификатора 313833175144" border="0" /></a> </li><li> <a href="http://baumanki.net/external-link-416.html" rel="nofollow" target="_blank"><img src="http://www.megastock.ru/doc/Logo/acc_blue_on_white_ru.png" alt="www.megastock.ru" border="0"/></a> <!--Yandex--> <script src="//mc.yandex.ru/metrika/watch.js" type="text/javascript"></script> <script type="text/javascript"> try { var yaCounter672990 = new Ya.Metrika({id:672990, webvisor:true, clickmap:true, trackLinks:true, accurateTrackBounce:true}); } catch(e) { } </script> <noscript><div><img src="//mc.yandex.ru/watch/672990" style="position:absolute; left:-9999px;" style="margin-right: 0px;" alt="" /></div></noscript> </li> </ul></noindex> <div class="nav left"> <a href="/">Главная</a> // <a href="/statistics.html">Статистика</a> // <a href="/index.php?do=feedback">Обратная связь</a> // <a href="/rate-external-links.html">Рейтинг сайтов</a> // <a href="/tags/">Теги</a> // <a href="http://baumanki.net/engine/go.php?url=aHR0cDovL29sZC5iYXVtYW5raS5uZXQ%3D" target="_blanc">Старый сайт</a> </div> <div class="clr"></div> </div> </div> <div style="display:none"> <a href="http://baumanki.net/roznoe/stati1/">Ещё статьи 1</a> <noindex> <!-- <a href='http://bonbone.ru/' rel="nofollow" title='Популярный каталог ресурсов интернет'> <img src='http://bonbone.ru/bon.php?402148' width=88 height=31 border=0></a> --> <!-- Top100 (Kraken) Counter --> <script> (function (w, d, c) { (w[c] = w[c] || []).push(function() { var options = { project: 4448371 }; try { w.top100Counter = new top100(options); } catch(e) { } }); var n = d.getElementsByTagName("script")[0], s = d.createElement("script"), f = function () { n.parentNode.insertBefore(s, n); }; s.type = "text/javascript"; s.async = true; s.src = (d.location.protocol == "https:" ? "https:" : "http:") + "//st.top100.ru/top100/top100.js"; if (w.opera == "[object Opera]") { d.addEventListener("DOMContentLoaded", f, false); } else { f(); } })(window, document, "_top100q"); </script> <noscript><img src="//counter.rambler.ru/top100.cnt?pid=4448371"></noscript> <!-- END Top100 (Kraken) Counter --> <script> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-59922276-1', 'auto'); ga('send', 'pageview'); </script> <!--bigmir)net TOP 100--> <script type="text/javascript" language="javascript"><!-- function BM_Draw(oBM_STAT){ document.write('<table cellpadding="0" cellspacing="0" border="0" style="display:inline;margin-right:4px;"><tr><td><div style="margin:0px;padding:0px;font-size:1px;width:88px;"><div style="background:url(\'//i.bigmir.net/cnt/samples/diagonal/b58_top.gif\') no-repeat bottom;"> </div><div style="font:10px Tahoma;background:url(\'//i.bigmir.net/cnt/samples/diagonal/b58_center.gif\');"><div style="text-align:center;"><a href="http://www.bigmir.net/" target="_blank" style="color:#0000ab;text-decoration:none;font:10px Tahoma;">bigmir<span style="color:#ff0000;">)</span>net</a></div><div style="margin-top:3px;padding: 0px 6px 0px 6px;color:#003596;"><div style="float:left;font:10px Tahoma;">'+oBM_STAT.hosts+'</div><div style="float:right;font:10px Tahoma;">'+oBM_STAT.hits+'</div></div><br clear="all"/></div><div style="background:url(\'//i.bigmir.net/cnt/samples/diagonal/b58_bottom.gif\') no-repeat top;"> </div></div></td></tr></table>'); } //--> </script> <script type="text/javascript" language="javascript"><!-- bmN=navigator,bmD=document,bmD.cookie='b=b',i=0,bs=[],bm={o:1,v:16947205,s:16947205,t:0,c:bmD.cookie?1:0,n:Math.round((Math.random()* 1000000)),w:0}; for(var f=self;f!=f.parent;f=f.parent)bm.w++; try{if(bmN.plugins&&bmN.mimeTypes.length&&(x=bmN.plugins['Shockwave Flash']))bm.m=parseInt(x.description.replace(/([a-zA-Z]|\s)+/,'')); else for(var f=3;f<20;f++)if(eval('new ActiveXObject("ShockwaveFlash.ShockwaveFlash.'+f+'")'))bm.m=f}catch(e){;} try{bm.y=bmN.javaEnabled()?1:0}catch(e){;} try{bmS=screen;bm.v^=bm.d=bmS.colorDepth||bmS.pixelDepth;bm.v^=bm.r=bmS.width}catch(e){;} r=bmD.referrer.replace(/^w+:\/\//,'');if(r&&r.split('/')[0]!=window.location.host){bm.f=escape(r).slice(0,400);bm.v^=r.length} bm.v^=window.location.href.length;for(var x in bm) if(/^[ovstcnwmydrf]$/.test(x)) bs[i++]=x+bm[x]; bmD.write('<sc'+'ript type="text/javascript" language="javascript" src="//c.bigmir.net/?'+bs.join('&')+'"></sc'+'ript>'); //--> </script> <noscript> <a href="http://www.bigmir.net/" target="_blank"><img src="//c.bigmir.net/?v16947205&s16947205&t2" width="88" height="31" alt="bigmir)net TOP 100" title="bigmir)net TOP 100" border="0" /></a> </noscript> <!--bigmir)net TOP 100--> </noindex></div> </div> <script type="text/javascript"> $(function() { var hl = $('#lb').innerHeight()-$('#rbt').height()-$('#spb').height()-28-130; $('#main-contentb').css('min-height', ''+hl+'px'); }); </script> <noindex> <!-- 6bc5814b31fa0043 --> <!-- SAPE RTB DIV 300x250 --> <div id="SRTB_45911"></div> <!-- SAPE RTB END --> </noindex> <script type="text/javascript" language="javascript"> $(function(){$.post("/engine/modules/filearray/ajax/counter_ajax.php", {id:2}, function( data ){});}); </script> <script type="text/javascript" language="javascript"> $(function(){$.post("/engine/modules/filearray/ajax/counter_ajax.php", {id:13}, function( data ){});}); </script> </body> </html> <!-- Время выполнения скрипта 0.27908 секунд --> <!-- Время затраченное на компиляцию шаблонов 0.0336 секунд --> <!-- Время затраченное на выполнение MySQL запросов: 0.00413 секунд --> <!-- Общее количество MySQL запросов 2 --> <!-- Затрачено оперативной памяти 19.27 MB -->