Доклад: Использование пакета Cold Fusion для MS Windows при построении WWW - интерфейсов к базам данных
5.12.2 Функции вывода в DBML
Для отображения, данные в нужном формате, в Cold Fusion предусмотрены специальные функции. При использовании такой функции, примененной к конкретному параметру, она заключается в символ '#', например, #DateFormat(Form.LastUpdate)#.
Список основных функций
Функция | Описание | Пример |
DateFormat | Отображает поле базы данных типа 'дата/время' или 'дата' в формате DD/MM/YY. | 12/01/96 |
TimeFormat | Отображает поле базы данных типа 'дата/время' в формате HH:MI AM/PM.. | 10:22 AM |
NumberFormat | Отображает числовые значения как целые числа, разделяя разряды запятой. | 10,256 |
DecimalFormat | То же, что и NumberFormat, плюс отображаются два знака после десятичной точки. | 10,256.3 |
DollarFormat | То же, что и DecimalFormat, плюс добавляется символ $ и вместо знака минус перед отрицательным значением оно помещается в скобки. | $10,256.73 |
YesNoFormat | Отображает данные логического типа как Yes или No. Все ненулевые значения интерпретируются как Yes, нуль - как No. | Yes |
ParagraphFormat | Применяется при отображении данных введенных в поле TEXTAREA. Преобразует символ перевода строки в пробел, два перевода строки подряд - в тег параграфа HTML (<P>). | |
HTMLCodeFormat | Удаляет символ перевода строки и пропускает все специальные символы (>, <, ", &), применяя к тексту тег преформатирования HTML (<PRE>). | |
HTMLEditFormat | То же, что и HTMLCodeFormat, только без добавления тега <PRE>. |
Кроме вышеперечисленных есть еще несколько функций обеспечивающих дополнительные возможности манипулирования параметрами в шаблоне:
- ParameterExists
Эта функция проверяет, доступен ли в шаблоне параметр с заданным именем, возвращая Yes или No. Например, чтобы проверить был ли отправлен из формы параметр UserId, используется следующее выражение:
<DBIF #ParameterExists(Form.UserId)# is Yes>
- PreserveSingleQuotes
Эта функция обычно используется в SQL выражениях для устранения из значений параметров одиночных кавычек, которые являются специальным символом в SQL. Приведем пример использования этой функции:
SELECT * FROM Persons WHERE
FullName Like '#PreserveSingleQuotes(Form.FullName)#%'
- URLEncodedFormat
Функция заменяет пробелы на символ "+" и все не латинские символы и цифры - шестнадцатеричным эквивалентом, что позволяет использовать результат в строке URL.
- IncrementValue и DecrementValue
Эти функции возвращают переданный им параметр, прибавив или отняв от него единицу соответственно. Например, чтобы увеличить параметр 'OrderCount' можно воспользоваться следующим выражением:
<DBSET #OrderCount# = #IncrementValue(OrderCount)#
- ValueList и QuotedValueList
Используя в качестве аргумента имя поля конкретного запроса, эти функции возвращают разделенный запятыми список значений этого поля для каждой записи, возвращенной в результате выполнения запроса.
Например, если запрос возвращает четыре записи, то результат функции ValueList будет иметь вид 11,22,33,44, а результат функции QuotedValueList, примененной к этим же данным, будет возвращать '11','22','33','44'.
Эти функции могут применятся для использования результата одного запроса в операции IN последующего запроса, например:
<DBQUERY NAME="Customers" ...определение запроса...>
<DBQUERY NAME="CustomerOrders" DATASOURCE="EXAMPLE"
SQL="SELECT * FROM Orders WHERE Customer_ID
IN ( #ValueList(Customer.CustomerID)# )">
5.13 Динамическое изменение содержимого документа
5.13.1 Условный оператор (DBIF & DBELSE)
Основным средством динамического определения содержимого документа являются теги DBIF и DBELSE, позволяющие производить проверку некоторого условия и в зависимости от этого формировать результат.
Тег DBIF имеет следующий синтаксис (тег DBELSE может не использоваться):
<DBIF значение оператор значение >
теги HTML и DBML
<DBELSE>
теги HTML и DBML
</DBIF>
В качестве элемента тега DBIF - "значение ", могут использоваться любой параметр или переменная Cold Fusion (например, #Form.Name#, #CGI.User_Agent#), числовое значение, произвольная последовательность символов (заключенная в кавычки).
Элемент тега DBIF - "оператор " ограничивается следующим списком:
- is - сравнивает два значения, с учетом регистра, и возвращает значение True (истина), если эти значения совпадают;
- is not - оператор обратный оператору is ;
- Contains - проверяет, содержится ли значение находящееся слева от оператора в значении справа и возвращает True, если да;
- does not contain - оператор обратный оператору contains ;
- great then - проверяет, что значение слева от оператора больше чем справа и возвращает True, если да;
- less then - проверяет, что значение слева от оператора меньше чем справа и возвращает True, если да;
- greater then or equal to - оператор обратный оператору less then ;
- less then or equal to - оператор обратный оператору great then ;
Пример
<DBIF #PersonSearch.RecordCount()# is 0>
<P>Лиц, удовлетворяющих заданным критериям поиска,
в базе данных не обнаружено!
<DBELSE>
<DBOUTPUT QUERY="PersonSearch">
<HR>
Фамилия Имя Отчество: #FullName# <BR>
<DBIF #Phone# is "">
Телефон: #Phone# <BR>
<DBIF>
</DBOUTPUT>
</DBIF>
5.13.2 Перенаправление на другой URL (DBLOCATION & DBABORT)
Для перенаправления пользователя на другой URL предназначен тег DBLOCATION. Этот тег обычно применяется, если в шаблоне выполняется один или более запросов, а затем нужно сразу же перейти к другому документу, либо URL, на который нужно отправит пользователя, зависит от параметра. Приведем пример использования тега, иллюстрирующий его синтаксис:
<DBIF #NewPassword# is not #PasswordConfirmation#>
<DBLOCATION URL="/login/invalidpassword.htm">
</DBIF>
В качестве значения атрибута URL тега DBLOCATION можно использовать параметры и переменные, допустимые в шаблоне. Например, <DBLOCATION URL=#Page#>.
Для прерывания обработки шаблона в Cold Fusion используется тег DBABORT.
<P>Этот текст будет отправлен клиенту
<DBABORT>
<P>Этот текст не будет отправлен клиенту