Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


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



В Cold Fusion предусмотрен механизм проверки корректности заполнения полей формы. Этот механизм основан на добавлении в форму дополнительных полей типа HIDDEN (скрытые), с именем, составленным из имени поля, значение которого нужно проверить, и одного из допустимых в Cold Fusion суффиксов, задающих контекст проверки. Ниже приведен список всех суффиксов, используемых для проверки:

_required

Текст сообщения об ошибке. Проверяется, произведен ли ввод в поле формы.

_integer

Текст сообщения об ошибке. Проверяется, является ли значение, введенное пользователем, целым числом.

_float

Текст сообщения об ошибке. Проверяется, является ли значение, введенное пользователем, числом.

_range

MIN = Минимальное_Значение

MAX = Максимальное_Значение

Проверяется, находится ли введенное число в определенных границах.

_date

Текст сообщения об ошибке. Проверяется, находится ли введенная пользователем дата в одном из следующих форматов: DD/MM/YY, DD/MM/YYYY, DD/MM (используется текущий год). В качестве разделителя можно, также, использовать тире (то есть, DD-MM-YY ).

Пример

Ниже приведен фрагмент описания формы, состоящий из двух текстовых полей: обязательное для заполнения поле FullName и поле типа дата Birthday, и для каждого из этих полей описано поле типа HIDDEN, задающее контекст проверки.

Фамилия Имя Отчество: < INPUT TYPE=" TEXT" NAME=" FullName" > < INPUT TYPE=" HIDDEN" NAME=" FullName_required" VALUE=" Фамилия Имя Отчество должны быть заданы! " >

Дата рождения: < INPUT TYPE=" TEXT" NAME=" Birthday" >

< INPUT TYPE=" HIDDEN" NAME=" Birtday_date"

VALUE=" Дата рождения должна быть в формате DD/MM/YYYY (например,

20.08.1968)" >

Функции вывода в 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

Применяется при отображении данных, введенных в поле TEXT-AREA. Преобразует символ перевода строки в пробел, два перевода строки подряд — в тэг параграфа 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)# )" >

Динамическое изменение содержимого документа

Условный оператор (DBIF & DBELSE)

Основным средством динамического определения содержимого документа являются тэги DBIF и DBELSE, позволяющие производить проверку некоторого условия и в зависимости от этого формировать результат.

Тэг DBIF имеет следующий синтаксис (тэг DBELSE может не использоваться):

< DBIF значение оператор значение>

тэги HTML и DBML

< DBELSE>

тэги HTML и DBML

< /DBIF>

В качестве элемента тэга DBIF — «значение», могут использоваться любой параметр или переменная Cold Fusion (например, #Form.Na-me#, #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>

Перенаправление на другой 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> Этот текст не будет отправлен клиенту

Обычно этот тэг используется при неправильной аутентификации.


Поделиться:



Популярное:

Последнее изменение этой страницы: 2017-03-03; Просмотров: 656; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.024 с.)
Главная | Случайная страница | Обратная связь