Pplware

CFML – Parte 4 – Operadores Lógicos

Olá pessoal, chegamos à 4ª parte sobre ColdFusion … nesta parte vamos trabalhar mais um pouco com variáveis e com operadores lógicos.

Trabalhar com operadores lógicos, significa que nós colocaremos em prática os nossos conhecimentos sobre condições para que o código seja executado da forma que desejamos.

Vamos aos exemplos. 1 – Crie um novo ficheiro chamado (P_04_operadores_01.cfm).

2 – Vamos criar um formulário neste ficheiro enviando para a página (P_04_operadores_02.cfm), para isto, use o código abaixo.

<h2>Tratamento de Erros 1</h1> <table border=”1″ cellpadding=”3″ cellspacing=”0″> <form name=”frm01″ action=”P_04_operadores_02.cfm” method=”post”> <tr> <td>Nome:</td> <td><input type=”text” name=”txtNome” /></td> </tr> <tr> <td>Email:</td><td> <input type=”text” name=”txtEmail” /></td> </tr> <tr> <td>Idade:</td> <td><input type=”text” name=”txtIdade” /></td> </tr> <tr> <td>Endereço:</td> <td><input type=”text” name=”txtEndereco” /></td> </tr> <tr> <td colspan=”2″ align=”right”><input type=”submit” value=”Enviar” /></td> </tr> </form> </table>

O resultado será este:

Agora crie um ficheiro chamado (P_04_operadores_02.cfm) para receber os dados do nosso formulário e coloque o código abaixo:

<h2>Dados:</h2> <cfoutput> <strong>Nome:</strong> #form.txtNome#<br/> <strong>Email:</strong>#form.txtEmail#<br/> <strong>Idade:</strong> #form.txtIdade#<br/> <strong>Endereço:</strong> #form.txtEndereco#<br/> </cfoutput>

Corra a primeira página e carregue no botão sem preencher os campos, o resultado será este:

Se este fosse um formulário de registo real, de nada adiantaria cadastrar um registo em branco. Então, a partir desta nossta 2ª página, vamos colocar algumas condições para tratar os erros (iremos colocar alguns avisos).

Novo código (irei comentar apenas a parte em negrito pois as outras são ‘repetidas’):

<h2>Dados:</h2> <cfoutput> <strong>Nome:</strong> <!— verifica SE a variável FORM.TXTNOME está DEFINIDA e se o valor da mesma não é vazio —> <cfif isDefined(‘form.txtNome’) AND Len(Trim(form.txtNome))> <!— Caso positivo, cria uma flag chamada VARIABLES.NOME e seta um valor booleano* a ela —> <cfset variables.nome = true> <!— mostra o conteúdo da variável no ecrã —> #form.txtNome#<br/> <!— senão —> <cfelse> <!— mostra uma mensagem de erro —> Nome Não Informado<br/> <!— mostra um link com um javascript de voltar 1 página no histórico —> <a href=”javascript:history.back(-1);”>Voltar</a> <!— aborta a execução do código —> <cfabort> <!— fecha a condição IF para esta comparação —> </cfif> <!— daqui para baixo a explicação de cada parte é similar, mudando apenas a variável e a mensagem de erro —> <strong>Email:</strong> <cfif isDefined(‘form.txtEmail’) AND Len(Trim(form.txtEmail))> <cfset variables.email = true> #form.txtEmail#<br/> <cfelse> Email Não Informado<br/> <a href=”javascript:history.back(-1);”>Voltar</a> <cfabort> </cfif> <strong>Idade:</strong> <cfif isDefined(‘form.txtIdade’) AND Len(Trim(form.txtIdade))> <cfset variables.idade = true> #form.txtIdade#<br/> <cfelse> Idade Não Informada<br/> <a href=”javascript:history.back(-1);”>Voltar</a> <cfabort> </cfif> <strong>Endereço:</strong> <cfif isDefined(‘form.txtEndereco’) AND Len(Trim(form.txtEndereco))> <cfset variables.endereco = true> #form.txtEndereco#<br/> <cfelse> Endereço Não Informado<br/> <a href=”javascript:history.back(-1);”>Voltar</a> <cfabort> </cfif>

<!— verifica se todas as flags são true (verdadeiras), se forem mostra o botão, caso contrário não mostra nada —> <cfif (variables.nome EQ true) AND (variables.email EQ true) AND (variables.idade EQ true) AND (variables.endereco EQ true)> <form> <input type=”submit” value=”Cadastrar”> </form> <!— fecha a condição —> </cfif> </cfoutput>

Explicação: CFIF: A tag < CFIF > serve para realizar uma comparação e significa SE (se algo acontecer…), este ALGO é justamente o que nós iremos colocar para completar a condição de verificação. No nosso exemplo, utilizamos as condições ISDEFINED, LEN e TRIM.

isDefined = Está definida, ou seja, se a variável em questão está definida. LEN = Lenght… ou seja, é o ‘comprimento’ de alguma coisa… no caso, da nossa variável.

TRIM = Aparar”… ou seja… eliminar os espaços em branco antes e após a variável, desta forma teremos a certeza que estamos a tratar apenas com “texto” e não com espaços vazios.

A junção destas condições significa: – Se a variável ‘form.txtNome’ estiver definida e, o tamanho dela (eliminando os espaços em branco) existir (for maior diferente de vazio).

Se esta condição for verdadeira, então realize alguma coisa (mostra o valor da variável), caso contrário, faça outra coisa.

Este “caso contrário” é o nosso CFELSE (se não) onde nós mostramos uma mensagem de erro, seguindo da tag CFABORT. A tag <cfabort> nada mais é do que um comando para abortar a execução do código… NADA abaixo dela é executado.

*booleano = uma variável do tipo booleano possui somente 2 valores, verdadeiro ou falso… 0 ou 1 … etc… mas sempre significa se algo é verdadeiro ou falso. Ao criarmos uma flag com o valor true/false ao invés de “true”/”false” estamos a definir que a nossa variável é do tipo BOOLEAN e não do tipo STRING.

Na última verificação, o sistema irá verificar se as 4 flags que criamos são true (verdadeiras), caso positivo ele irá mostrar o botão, caso contrário não fará nada.

A mesma técnica serve caso o nosso ficheiro receba variáveis de URL, SESSION, Etc… podemos verificar se a variável existe e abordar a execução do ficheiro mostrando alguma mensagem de erro.

Além das tags CFIF e CFELSE, existem também a tag CFELSEIF, que serve como um “intermediário” entre o CFIF e o CFELSE, exemplo:

Crie um ficheiro chamado mensagem.cfm este irá verificar a hora actual do sistema e emitir diferentes mensagens.

<cfoutput> <!—mete a hora (somente a hora, sem os minutos) —> <cfset variables.hora = Hour(now())> </cfoutput>

<!— verifica se a hora é (maior ou igual a 6) e (menor do que 12) —> <cfif (variables.hora GTE 6) AND (variables.hora LT 12)> Bom dia! <!— verifica se a hora é (maior ou igual a 12) e (menor que 18) —> <cfelseif (variables.hora GTE 12) AND (variables.hora LT 18)> Boa tarde! <!— verifica se a hora é (maior ou igual a 18) e (maior do que 0) —> <cfelseif (variables.hora GTE 18) AND (variables.hora GT 0)> Boa noite! <!— senão… (a única opção que sobrou foi (maior do que 0) e (menor do que 6) neste caso também poderíamos ter utilizado outro CFELSEIF com esta condição e não usar um CFELSE —> <cfelse> Boa madrugada! </cfif>

Dêem uma olhada nos ficheiros em anexo para um melhor entendimento e para verificar a indentação do código. http://www.4shared.com/file/32728477/3cb77430/p04pplware.html

Bom.. por enquanto é só pessoal… na próxima semana iremos tratar ‘condições’ utilizando CFSWITCH e CFCASE… e um pouco sobre variáveis de SESSÃO e APLICAÇÃO.

Exit mobile version