ColdFusion – Aprender a programar
CFML – Parte 3 – Variáveis + Dump + Param + Operadores Lógicos
Olá pessoal, chegamos à 3ª parte sobre ColdFusion ... nesta parte vamos trabalhar mais um pouco com variáveis, como nomeá-las correctamente, duas funções muito úteis (cfdump e cfparam), como enviar/receber as variáveis via FORM e URL.
1 - Nomenclatura de variáveis. Algo muito importante, mas que eu não citei antes, é como devemos chamar as variáveis que iremos utilizar. Existem algumas regras que devem ser seguídas.
A) Não iniciar o nome de uma variável utilizando NÚMEROS. B) Não utilizar caracteres especiais e/ou palavras reservadas. C) Não utilizar espaços nos nomes.
Alguns exemplos:
Correcto: - nome - variables.nome - Session.nome - Application.nome - url.nome - form. nome - variables.meu_nome
Errado: - variables.1nome - 1nome - variables.meu nome - cfelse - cfif
Então, sempre que forem criar as vossas variáveis, lembrem-se de seguir este padrão.
OBS: O alvo (target) irá variar dependendo do caso.
2 – Envio/Recebimento/Recuperação de variáveis. Como já foi mostrado anteriormente, nós podemos trabalhar com uma variável desta forma.
para criar <cfset variables.nome = ‘Marcos’> para mostrar o conteúdo <cfoutput> #variables.nome# </cfoutput>
No entanto, e se quisermos trabalhar com variáveis dinâmicas ao invés de fixas?
Com o exemplo a seguir, iremos criar algumas variáveis e enviá-las de diferentes formas.
URL: Variáveis viajam via URL através do endereço (querystring) da página, ou seja, a variável irá aparecer na barra de endereços.
crie um ficheiro chamado: P03_envia_variaveisURL_01.cfm e coloque o código abaixo:
<form name="form01" action="P03_recebe_variaveisURL_01.cfm" method="get"> Nome: <input type="text" name="txtNome" /> <input type="submit" value="Enviar" /> </form>
O código acima irá criar um formulário chamado ‘form01’, com a página ‘P03_recebe_variaveisURL_01.cfm’ como destino (‘action’) e com o método ‘get’.
Logo em seguida escrevemos a palavra ‘Nome’ e criamos um campo ‘input’ do tipo ‘text’ com o nome de ‘txtNome’.
De seguida criamos um campo ‘input’ do tipo ‘submit’ com o valor ‘Enviar’.
OBS: Existem dois métodos para formulários. - Get: envia os dados do formulário via URL. - Post: envia os dados do formulário via FORM.
Corra a página no navegador, o resultado será este:
Agora crie uma nova página chamada: P03_recebe_variaveisURL_01.cfm e coloque-lhe o seguinte código.
<cfoutput> Seu nome é: #url.txtNome# </cfoutput>
O resultado será este:
OBS: Notem no sublinhado a vermelho na URL o nome da nossa variável (txtNome) e o valor que lhe demos (neste exemplo: Marcos) – Este valor foi o nome que eu escrevi no campo da primeira página, antes de pressionar o botão Enviar.
Neste exemplo, o cfoutput agarrou na variável url.txtNome, txtNome foi o nome que demos para esta variável e, URL é o target da variável, ou seja, de onde esta vem.
Outra forma de criarmos uma variável de URL é durante a criação de um link, por exemplo, pode adicionar a linha abaixo no final do código da primeira página.
<a href="P03_recebe_variaveisURL_01.cfm?txtNome=Marcos">Enviar Página</a>
Ao clicar neste link o resultado será o mesmo, a única diferença é a criação da variável, que foi feita manualmente na própria URL do link.
Neste tipo de criação, as variáveis devem começar a sere criadas após o final do endereço desejado + o sinal ?. O ? significa que o endereço acabou e que a partir dali começarão a ser declaradas as variáveis. Pode declarar várias variáveis, que devem ser separadas pelo símbolo: &.
Exemplo:
<a href="P03_recebe_variaveisURL_01.cfm?txtNome=Marcos&Site=Pplware&Ano=2007">Enviar Página</a>
Desta forma estamos a enviar as seguintes variáveis/valores -txtNome = Marcos - Site =Pplware - Ano = 2007
Como recuperar estas novas variáveis? Da mesma forma que recuperamos a primeira, basta colocar o nome delas e o target dentro da tag <cfoutput>
<cfoutput> Nome: #url.txtNome# <br> Site: #url.Site# <br> Ano: #url.Ano# <cfoutput>
OBS: Este exemplo acima só funcionará pelo método do LINK pois estas variáveis não existem no formulário, logo, ao enviar o formulário, a próxima página irá procurar por variáveis que não existem, o que ocasionará em um ecrã de erro. Em breve mostrarei algumas soluções para este tipo de problema.
FORM O método de enviar/receber variáveis via form é praticamente igual ao via URL, a diferença é que os dados trafegam “escondidos” do utilizador.
Para utilizar o método form, crie duas novas páginas trocando a palavra URL dos nomes pela palavra FORM.
No código destas duas novas páginas, realize as seguintes mudanças
Página que envia: - Substituir o método (method) de ‘GET’ para ‘POST’. - Apagar a linha com o link que criamos por último.
Página que recebe: - Substituir a target ‘URL’ pela target ‘FORM’. - Deixar apenas a variável ‘txtNome’ dentro do <cfoutput> e apagar as outras.
Pronto.. o nosso novo método de envio/recuperação de variáveis está pronto.
Para criar novos campos, basta criar novos inputs com nomes diferentes dentro do formulário e preenchê-los. Para mostrá-los, basta adicionar os nomes das variáveis dentro do <cfoutput> que ele irá automaticamente buscar o valor das variáveis.
CFDUMP A tag <cfdump> é amplamente utilizada para “debugar” o que está acontece com uma variável ou targets de variáveis. Para visualizar o seu funcionamento realize o seguinte procedimento.
Abra a página que recebe as variáveis via URL (P03_recebe_variaveisURL_01.cfm) e no final adicione a seguinte linha de código.
<hr> <cfdump var='#url.txtNome#'> <hr> <cfdump var='#url#'>
OBS: A tag <hr> apenas adiciona uma linha na página.
Abaixo do nosso output aparecerão 2 quadrados coloridos representando o nosso dump.
O primeiro representa o dump da variável específica que pedimos (‘url.txtNome’).
O segundo representa o dump do target de variáveis que pedimos(‘url’).
Ecrã:
O dump também é utilizado em outras ocasiões, por exemplo para sabermos o que é devolvido de uma consulta à uma base de dados. Trabalharemos com ele novamente no futuro.
CFPARAM Voltando à nossa primeira página desta 3ª parte. Bom, como devem lembrar-se, devido ao facto do nosso formulário inicial somente possuir o campo ‘txtNome’¸ ao clicarmos no nosso link (que possui 3 variáveis), um ecrã de erro nos seria mostrado caso clicássemos no nosso botão de Enviar, no entanto, caso clicássemos no link, o erro não seria mostrado.
Qual razão? Unicamente por um motivo. A página que estamos a requerer espera que 3 variáveis existam. Caso cliquemos no link as 3 variáveis serão criadas e enviadas. Caso cliquemos no botão, apenas uma variável será criada e enviada.
Como contornar este problema? Bom, dentre os vários modos, um deles é a utilização da tag <cfparam>.
A tag CFPARAM funciona verificando se uma variável existe e, caso ela não exista, ela cria a variável e atribui um valor pré-definido.
Abra novamente a página (P03_recebe_variaveisURL_01.cfm) e adicione as seguintes linhas de código no COMEÇO da página.
<cfparam name='url.Site' default='Site Não Informado'> <cfparam name='url.Ano' default='Ano Não Informado'>
Corram novamente a primeira página, escreva seu nome e, desta vez, utilizem o botão para enviar os dados.
O resultado será este:
Ao carregarmos esta página, a mesma situação será encontrada, esta página irá pedir 3 variáveis mas só teremos uma, o ecrã de erro desapareceu porque utilizamos o cfparam.
Ao carregarmos esta página o que aconteceu? O primeiro CFPARAM verificou se a variável ‘url.Site’ existia, caso ela existisse, nada aconteceria, no entanto, como não existia, ele criou-a e atribuiu-lhe o valor ‘Site Não Informado’.
O mesmo aconteceu com a variável ‘url.Ano’.
Bom, por hoje é só pessoal, brinquem um pouco enviando variáveis via FORM e URL de uma página para a outra e utilizando o CFPARAM para tratar possíveis erros, bem como o CFDUMP para verificar o que está a vir de dentro das variáveis e targets.
A partir da próxima parte iremos tratar estes erros de outra forma, através de operadores lógicos.
Abraços
Este artigo tem mais de um ano
muito bom…. continue com o excelente trabalho, tem aqui um leitor assiduo. cumprimentos
parabens excelente tutorial… continua assim. 😉
Boas,
Permitam-me que faça uma questão.
Pelo limitado conhecimento que tenho de PHP consegue-se fazer isto tudo em PHP (menos provavelmente a parte do cfdump que não conheço em php).
Assim, qual é a diferença de usar ColdFusion ou PHP?
Pelo que vi até agora posso manter o meu server de PHP que faz o mesmo, ou não?
Obrigado.
@ khannon
var_dump() em PHP 😛
Olá, seria possível fazer um tutorial semelhante para MySQL?
Obrigado
muito bom