Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Проверка корректности данных в полях формы
В 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 — «оператор» ограничивается следующим списком:
Пример < 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; Нарушение авторского права страницы