O que é Cold Fusion?
É uma ferramenta de desenvolvimento
de aplicações web que permite
criar páginas web dinâmicas para
Internet, através de integração
sofisticada entre elementos como: banco de
dados, ambiente web e aplicações
de e-mail, além de permitir aplicações
Java.
O Cold Fusion utiliza-se de uma linguagem
denominada CFML (Cold Fusion Markup Language).
Baseada em tags, como o HTML, tornando-se
uma linguagem de fácil aprendizado.
Arquitetura Cold Fusion
Quando uma página dentro
da aplicação Cold Fusion é
requerida por um browser (usuário),
o Cold Fusion processa o CFML, interagindo
com sistemas de backend, e gera dinamicamente
uma página de retorno para o browser
com as informações requeridas.
Cold Fusion Markup Language (CFML)
CFML dispõe de um compreensivo
ambiente de script baseado em tags, o que
torna o desenvolvimento de aplicações
muito mais rápido e fácil. Por
também ser uma linguagem baseada em
tags, a CFML se integra facilmente ao HTML.
Um template Cold Fusion (arquivo .cfml), nada
mais é do que um arquivo texto, exatamente
como um arquivo .htm/.html, sendo possível
ser editado através de um simples editor
de textos, como por exemplo, o Notepad do
Windows.
Através de suas tags pode-se manipular
variáveis, utilizar funções
de data, hora, matemáticas,pesquisa
e string, fazer declarações
condicionais, loop, além de utilizar
declarações avançadas
SQL.
Aqui está um pequeno
exemplo de CFML:
<html>
<head>
<title>
Olá Meu amigo!
</title>
</head>
<body bgcolor=”#FFFFFF” text=”#000000">
<cfset ola="Olá Meu amigo!">
<cfoutput>
<font size=”5">#ola#</font>
</cfoutput>
</body>
</html>
O que devo saber para programar em
CFML?
*HTML
Você verá que as tags do Cold
Fusion (CFML) são similares à
sintaxe das tags HTML, mas,não iguais,
elas ajudarão a você criar páginas
dinâmicas e mostrar os dados de uma
pesquisa em seu banco de dados sem a necessidade
de se criar várias páginas para
isso. Você deveentender o básico
de como se criar páginas HTML, como
colocar informações em tabelas,
como recolher dados em formulários,
e como criar links.
*Desenho de Banco de Dados Relacionais
e Gerenciamento
Se você planeja criar aplicações
que usam dados existentes em data sources,
você deve entender como os dados são
organizados. Em muitos casos, isto significa
entender como tabelas são organizadas
para prevenir duplicações desnecessárias
de dados. Por exemplo, se você têm
dados sobre empregados, que em especial repetem
o número do departamento e o nome em
cada registro de empregados, você deverá
ter uma tabela separada que liste cada número
de departamento e nome apenas uma vez.
*SQL
Familiaridade com alguma Linguagem de Pesquisa
Estruturada (SQL) será útil
para você desenvolver suas aplicações
Cold Fusion. Em particular, você deve
estar apto a usar o SELECT, UPDATE, INSERT,
e DELETE, e também clausula WHERE e
operadores lógicos boleanos.
Definindo um Data Source
Um Data Source, como o próprio
nome diz, é a origem dos dados, que
serão utilizados na aplicação.
O Cold Fusion utiliza o ODBC para se comunicar
com uma larga escala de banco de dados. Antes
de utilizar um data source em uma aplicação
é necessário registrá-lo
no Cold Fusion Administrator.
Portanto informe o nome da DSN e o caminho
do banco para que possamos criá-la
no sistema..
Criando a primeira aplicação
Cold Fusion
Já sabemos que um template
Cold Fusion pode ser editado através
de um editor de textos, para esta primeira
aplicação é o que basta,
mas se preferir pode editar com o HomeSite
ou Cold Fusion Studio, ambos encontrados no
site da Allaire (www.allaire.com).Vamos assumir
que já configuramos nosso data source
(ver Definindo um Data Source) com o nome
de agenda e que ele é um banco de dados
Access chamado agenda.mdb.Neste banco de dados
temos atualmente apenas uma tabela chamada
Pessoal, que tem como campos Nome e Telefone.
Tendo definido estes padrões, agora
vamos começar a entender como funciona
uma aplicação Cold Fusion. Comece
criando em seu template o acesso a sua base
de dados:
<CFQUERY DATASOURCE="agenda"
NAME="AgendaPessoal">
SELECT * FROM Pessoal
</CFQUERY>
Acima estamos listando todos
os itens contidos na tabela Pessoal do banco
de dados. E nomeamos nossa pesquisa como AgendaPessoal
para que possamos exibir-la como mostrado
a seguir:
<CFOUTPUT QUERY= "AgendaPessoal"
>
#nome# - #telefone#
<HR>
</CFOUTPUT>
O resultado desta pesquisa,
assumindo ter apenas três registros
no banco de dados, irá gerarm um HTML
da seguinte forma:
José da Silva –
11-234-9980
<HR>
Manoel Alves – 19-345-3328
<HR>
Maria Lima – 13-231-9915
<HR>
* Note que dentro da tag CFOUTPUT
foi colocada uma tag HTML, <HR>. Não
existem problemas em se intercalar tags CFML
com tags HTML, a exceção de
aspas dupla (“) e escopa (#). Para estes
você deve repetir-los duas vezes (##,
"").
Código completo da primeira
aplicação
Aqui você encontra o exemplo
completo da aplicação exemplificada
acima.
<!— Fazendo a pesquisa
no banco de dados —>
<CFQUERY DATASOURCE="agenda"
NAME="AgendaPessoal">
SELECT * FROM Pessoal
</CFQUERY>
<html>
<head>
<title>Primeira Aplicação
– Agenda Pessoal</title>
</head>
<body>
<h2>Agenda Pessoal</h2>
<!— Mostrando os registros —>
<CFOUTPUT QUERY="AgendaPessoal">
#nome# - #telefone#
<HR>
</CFOUTPUT>
</body>
</html>
Salvando a aplicação
Para salvar esta aplicação
é necessário que se coloque
como extensão do arquivo CFM, portanto
podemos chamar esta nossa primeira aplicação
de agendapessoal.cfm.
Nossos servidores Web reconhecem um arquivo
com a extensão CFM como sendo uma aplicação
do Cold Fusion Server, portanto devemos colocar
nossos arquivos dentro do diretório
principal do servidor Web (www).
Visualizando a aplicação
Como já editamos, já
salvamos nossa aplicação, agora
é a hora de poder ver com nossos próprios
olhos o que realmente criamos.
Abra seu navegador preferido,
Netscape, Internet Explorer, Opera, e coloque
a seguinte url:
http://www.seudominio.com(.br)/agendapessoal.cfm
Pronto, você já está vendo
o resultado de sua primeira aplicação
Cold Fusion.
Declarações SQL
Como já vimos anteriormente,
o SQL é uma linguagem específica
para tratamento com banco de dados, para podermos
ter melhores resultados em próximas
aplicações é necessário
que se tenha um bom conhecimento desta linguagem.
Para que você possa iniciar colocaremos
aqui algumas formas de se utilizar o comando
SELECT.
Ainda em nossa primeira aplicação,
vamos fazer algumas alterações
para que possamos entender melhor o comando
SELECT.
Vamos selecionar todos os registros da tabela
Pessoal que contenham no campo nome a seguinte
informação: José da Silva.
<CFQUERY DATASOURCE=”agenda”
NAME=”AgendaPessoal”>
SELECT * FROM Pessoal
WHERE nome LIKE ‘José da Silva’
</CFQUERY>
Note que colocamos estamos usando
agora a cláusula WHERE, que é
responsável pelos filtros das pesquisas,
e o termo LIKE para comparar um campo texto.
Se estivéssemos fazendo uma comparação
de números, utilizaríamos o
sinal de “=”.
Neste exemplo será mostrado apenas
um único registro como resultado da
pesquisa.
Para selecionar todos os registros da tabela
que iniciem com a sentença “José”
no campo nome, usamos o seguinte:
<CFQUERY DATASOURCE=”agenda”
NAME=”AgendaPessoal”>
SELECT * FROM Pessoal
WHERE nome LIKE ‘José%’
</CFQUERY>
Se quisermos selecionar registros
que terminem com a sentença “Silva”
usamos:
<CFQUERY DATASOURCE=”agenda”
NAME=”AgendaPessoal”>
SELECT * FROM Pessoal
WHERE nome LIKE ‘%Silva’
</CFQUERY>
Agora caso queiramos registros
que contenham a sentença “ma”
utilizamos:
<CFQUERY DATASOURCE=”agenda”
NAME=”AgendaPessoal”>
SELECT * FROM Pessoal
WHERE nome LIKE ‘%ma%’
</CFQUERY>
* Note que desta vez teremos
como resposta dois registros.
CFIF, CFELSE e CFELSEIF
Estas são as tags de
condição utilizadas pelo Cold
Fusion, com elas você poderá
customizar as tarefas de suas aplicações.
Em nossa primeira aplicação
podemos fazer algumas consistências
para ilustrar isto.
Vamos fazer com que caso o conteúdo
do campo da pesquisa seja “José
da Silva”, seja apresentado “Zé”,
caso contrário irá ser apresentado
“Outros”.
<CFOUTPUT QUERY=”AgendaPessoal”>
#nome# - #tel#
<CFIF nome IS ‘José da Silva’>
<br>Zé
<CFELSE>
<br>Outros
</CFIF>
<HR>
</CFOUTPUT>
Aqui utilizamos o operador IS
para comparar o campo nome com a sentença.
Poderíamos estar utilizando o operador
EQ. E para números poderíamos
estar utilizando:
LT Menor que
LTE Menor ou igual a
GT Maior que
GTE Maior ou igual a
Agora ilustraremos a utilização
do CFELSEIF:
<CFOUTPUT QUERY=”AgendaPessoal”>
#nome# - #tel#
<CFIF nome IS ‘José da Silva’>
<br>Zé
<CFELSEIF nome IS ‘Manoel Alves’>
<br>Mané
<CFELSEIF nome IS ‘Maria Lima’>
CFOUTPUT
A tag CFOUTPUT é utilizada
para mostrar resultados de pesquisas a banco
de dados e o resultado de operações
com variáveis.
No módulo 1 de nosso tutorial, colocamos
uma pequena introdução do funcionamento
da tag CFOUTPUT, que foi utilizada para exibir
o resultado de uma pesquisa ao banco de dados
no browser.
Nesta introdução, a tag CFOUTPUT
foi seguida do atributo QUERY, que é
opcional e indica o nome de qual pesquisa
você pretende exibir os dados.
Mas a tag CFOUTPUT têm mais outros atributos.
São eles:
GROUP Opcional. Este atributo
não exibe registros duplicados de acordo
com o campo ordenado na query. Este parâmetro
é caso sensitivo.
GROUPCASESENSITIVE Opcional. Este campo indica
se o campo da opção GROUP será
ou não caso sensitivo. Seu padrão
é YES.
STARTROW Opcional. Especifica a linha que
você quer iniciar a exibir os dados.
MAXROWS Opcional. Especifica o número
máximo de linhas que você quer
exibir.
Tendo como base o datasource
agenda, definido no módulo 1 de nosso
tutorial, veremos agora como utilizar estes
novos parâmetros da tag CFOUTPUT.
Uso do parâmetro GROUP
Insira mais dois registros em nosso banco
de dados:
Nome Tel
André Soares 11-234-9980
josé da silva 13-561-7898
*Note que josé da silva está
em letras minúsculas e que o telefone
de André Gomes é o mesmo de
José da Silva, usado no módulo
anterior.
Agora iremos criar o acesso a base de dados
com uma característica a mais, muito
importante para a utilização
do parâmetro GROUP:
<CFQUERY DATASOURCE=”agenda”
NAME=”AgendaPessoal”>
SELECT * FROM Pessoal
ORDER BY tel
</CFQUERY>
Olhando acima, você irá
notar a cláusula ORDER BY que faz com
que seus registros sejam ordenados através
do campo tel. Criado o acesso a sua base de
dados, veremos agora como usar o parâmetro
GROUP:
<CFOUTPUT QUERY=”AgendaPessoal”
GROUP=”tel”>
#nome# - #telefone#
<HR>
</CFOUTPUT>
Notaremos que como resposta
teremos apenas quatro registros, sendo que
no banco de dados existem cinco. O registro
não exibido foi o de José da
Silva, que tem o mesmo número de telefone
que André Soares, este que foi exibido
por ser a última ocorrência encontrada
no banco de dados.
Uso do parâmetro GROUPCASESENSITIVE
Continuando com a mesma base de dados, iremos
ver agora o parâmetro GROUPCASESENSITIVE.
Para isso precisaremos mudar na cláusula
ORDER BY, o nome do campo para nome, ficando
assim:
ORDER BY nome
* Note que estamos fazendo esta alteração,
pois o parâmetro GROUPCASESENSITIVE
só é empregado em campos string.
Agora coloque a tag CFOUTPUT da seguinte forma:
<CFOUTPUT QUERY=”AgendaPessoal”
GROUP=”nome”
GROUPCASESENSITIVE=”yes”>
#nome# - #telefone#
<HR>
</CFOUTPUT>
Veremos que como resposta teremos
os cinco registros do banco de dados. Mude
agora o parâmetro GROUPCASESENSITIVE
para NO. Você terá como resposta
apenas quatro registros, sendo o registro
de José da Silva não sendo mostrado.
Uso do parâmetro STARTROW
Este parâmetro é usado para indicar
em qual registro de nossa query desejamos
começar a exibir. Para ilustrar melhor,
façamos da seguinte forma:
<CFOUTPUT QUERY=”AgendaPessoal”
STARTROW=”2”>
#nome# - #telefone#
<HR>
</CFOUTPUT>
Veremos que temos como resposta
quatro registros, já que iniciamos
no registro de número 2 de nossa query.
Uso do parâmetro MAXROWS
Usado para limitar o número máximo
de registros da query a serem exibidos. Vamos
acrescentar ao exemplo do parâmetro
STARTROW o parâmetro MAXROWS, e ver
como este novo parâmetro funciona:
<CFOUTPUT QUERY=”AgendaPessoal”
STARTROW=”2” MAXROWS=”3”>
#nome# - #telefone#
<HR>
</CFOUTPUT>
Neste exemplo teremos como resposta
três registros. Note que o parâmetro
MAXROWS nos limita ao número máximo
de 3 registros e não que a exibição
dos registros deva parar no registro de número
3.