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.
Arquivado na categoria: Tutoriais
1 comentário a “CFML – Parte 4 – Operadores Lógicos”
Deixe o seu comentário
Aviso: Todo e qualquer texto publicado na internet através deste sistema não reflete, necessariamente, a opinião deste weblog ou do(s) seu(s) autor(es). Os comentários publicados através deste sistema são de exclusiva e integral responsabilidade e autoria dos leitores que dele fizerem uso. O autor deste weblog reserva-se, desde já, o direito de excluir comentários e textos que julgar ofensivos, difamatórios, caluniosos, preconceituosos ou de alguma forma prejudiciais a terceiros. Textos de caráter promocional ou inseridos no sistema sem a devida identificação de seu autor (nome completo e endereço válido de email) também poderão ser excluídos.








14 de Janeiro de 2008 às 2:27 pm
Parabéns, continue assim ! Está sendo proveitoso para mim, Obrigado!