ColdFusion - Modulo 2
ColdFusion - Modulo 2
ColdFusion - Modulo 2
br
www.coldfusionbrasil.com.br
2000
Tutorial Cold Fusion Mdulo 2 Cold Fusion Brasil - www.coldfusionbrasil.com.br ENTENDENDO MAIS SOBRE CFOUTPUT USO DO PARMETRO GROUP USO DO PARMETRO GROUPCASESENSITIVE USO DO PARMETRO STARTROW USO DO PARMETRO MAXROWS CRIANDO FORMULRIOS HTML ATRIBUTOS SUB-TAGS - TEXT - PASSWORD - HIDDEN - RADIO BUTTON - CHECKBOX - TEXT AREA - SELECT - SUBMIT - RESET INSERINDO DADOS EM UM BANCO DE DADOS INSERE.CFM INSERE.CFM (COMPLETO) ATUALIZANDO DADOS EM UM BANCO DE DADOS SELECIONANDO O REGISTRO A SER ALTERADO ALTERA.CFM CRIANDO UM FORMULRIO DE ALTERAO FORMALTERA.CFM FINALIZANDO A ALTERAO ALTERAFIM.CFM INSERINDO, ATUALIZANDO E EXCLUINDO REGISTROS COM CFQUERY INSERINDO INSERE.CFM ALTERANDO ALTERAFIM.CFM EXCLUINDO REGISTROS EXCLUI.CFM EXCLUIFIM.CFM 3 3 4 4 4 5 5 5 5 5 5 5 6 6 6 6 6 6 7 7 7 8 8 8 8 8 9 9 9 9 10 10 10 10 11
Tutorial Cold Fusion Mdulo 2 Cold Fusion Brasil - www.coldfusionbrasil.com.br Entendendo mais sobre CFOUTPUT A tag CFOUTPUT utilizada para mostrar resultados de pesquisas a banco de dados e o resultado de operaes com variveis. No mdulo 1 de nosso tutorial, colocamos uma pequena introduo do funcionamento da tag CFOUTPUT, que foi utilizada para exibir o resultado de uma pesquisa ao banco de dados no browser. Nesta introduo, 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 tm mais outros atributos. So eles: GROUP Opcional. Este atributo no exibe registros duplicados de acordo com o campo ordenado na query. Este parmetro caso sensitivo. GROUPCASESENSITIVE Opcional. Este campo indica se o campo da opo GROUP ser ou no caso sensitivo. Seu padro YES. STARTROW Opcional. Especifica a linha que voc quer iniciar a exibir os dados. MAXROWS Opcional. Especifica o nmero mximo de linhas que voc quer exibir.
Tendo como base o datasource agenda, definido no mdulo 1 de nosso tutorial, veremos agora como utilizar estes novos parmetros da tag CFOUTPUT. Uso do parmetro 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 minsculas e que o telefone de Andr Gomes o mesmo de Jos da Silva, usado no mdulo anterior. Agora iremos criar o acesso a base de dados com uma caracterstica a mais, muito importante para a utilizao do parmetro GROUP: <CFQUERY DATASOURCE=agenda NAME=AgendaPessoal> SELECT * FROM Pessoal ORDER BY tel </CFQUERY> Olhando acima, voc ir notar a clusula ORDER BY que faz com que seus registros sejam ordenados atravs do campo tel. Criado o acesso a sua base de dados, veremos agora como usar o parmetro GROUP: <CFOUTPUT QUERY=AgendaPessoal GROUP=tel> #nome# - #telefone# <HR> </CFOUTPUT>
Tutorial Cold Fusion Mdulo 2 Cold Fusion Brasil - www.coldfusionbrasil.com.br Notaremos que como resposta teremos apenas quatro registros, sendo que no banco de dados existem cinco. O registro no exibido foi o de Jos da Silva, que tem o mesmo nmero de telefone que Andr Soares, este que foi exibido por ser a ltima ocorrncia encontrada no banco de dados. Uso do parmetro GROUPCASESENSITIVE Continuando com a mesma base de dados, iremos ver agora o parmetro GROUPCASESENSITIVE. Para isso precisaremos mudar na clusula ORDER BY, o nome do campo para nome, ficando assim: ORDER BY nome * Note que estamos fazendo esta alterao, pois 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 parmetro GROUPCASESENSITIVE para NO. Voc ter como resposta apenas quatro registros, sendo o registro de Jos da Silva no sendo mostrado. Uso do parmetro STARTROW Este parmetro usado para indicar em qual registro de nossa query desejamos comear a exibir. Para ilustrar melhor, faamos 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 nmero 2 de nossa query. Uso do parmetro MAXROWS Usado para limitar o nmero mximo de registros da query a serem exibidos. Vamos acrescentar ao exemplo do parmetro STARTROW o parmetro MAXROWS, e ver como este novo parmetro funciona: <CFOUTPUT QUERY=AgendaPessoal STARTROW=2 MAXROWS=3> #nome# - #telefone# <HR> o parmetro
Tutorial Cold Fusion Mdulo 2 Cold Fusion Brasil - www.coldfusionbrasil.com.br </CFOUTPUT> Neste exemplo teremos como resposta trs registros. Note que o parmetro MAXROWS nos limita ao nmero mximo de 3 registros e no que a exibio dos registros deva parar no registro de nmero 3.
Criando Formulrios HTML Para que possamos continuar com nosso tutorial, necessrio que saibamos construir e entender como funciona um formulrio HTML. O formulrio representado pelas tags <FORM></FORM>, que indicam o incio e o fim do formulrio respectivamente. Estas tags tem seus atributos e suas sub-tags. Quando o usurio clica no boto de um formulrio, os dados que ele preencheu so enviados para um arquivo (aplicao), onde estes dados so tratados e apresentada uma resposta ao usurio. Vamos ver agora alguns deles. Atributos Action Indica para qual arquivo ser enviado os dados do formulrio. Method Indica o mtodo usado pelo formulrio. Vamos utilizar aqui o mtodo POST. Name Opcional. Indica o nome do formulrio. Sub-Tags As sub-tags Text, Password, Hidden, Radio Button e CheckBox so representadas pela tag <INPUT>, diferenciando-se apenas em seu tipo (TYPE) e em alguns atributos. - Text Representa um campo texto, que tem como atributos NAME, SIZE, MAXLENGTH. Sintaxe: <INPUT TYPE=Text NAME=nome SIZE=30 MAXLENGTH=50> - Password Representa um campo senha, que tem os mesmos atributos da sub-tag TEXT. Sintaxe: <INPUT TYPE=Password NAME=senha SIZE=8 MAXLENGTH=8> - Hidden Representa um campo escondido, que no mostrado ao usurio. Seus atributos so NAME e VALUE. Sintaxe: <INPUT TYPE=Hidden NAME=secreto VALUE=segredo> - Radio Button Representa um campo de nica escolha. Seus atributos so NAME, VALUE e CHECKED, este ltimo opcional, indicado que o campo est selecionado. Sintaxe: <INPUT TYPE=Radio NAME=escolha VALUE=1 CHECKED>
- CheckBox Representa um campo de mltiplas escolhas. Seus atributos so os mesmos da subtag RADIO BUTTON. Sintaxe: <INPUT TYPE=Checkbox NAME=escolha VALUE=1 CHECKED> - Text Area Representada pelas tags <TEXTAREA></TEXTAREA>, esta sub-tag uma caixa de texto. Seus atributos so NAME, COLS, ROWS. E seu valor padro deve estar entre as duas tags. Sintaxe: <TEXTAREA NAME=Texto COLS=50 ROWS=10>Texto inicial</TEXTAREA> - Select Representada pelas tags <SELECT></SELECT>, esta sub-tag uma caixa de seleo. Seu atributo NAME. Tem ainda uma tag prpria para suas opes de seleo, <OPTION></OPTION>. Seus atributos so VALUE e SELECTED, que indica se a opo est selecionada. Sintaxe: <SELECT NAME="seleo"> <OPTION VALUE="1" SELECTED>1</OPTION> <OPTION VALUE="2">2</OPTION> </SELECT> - Submit Representa o boto de envio do formulrio. Representado tambm pela tag <INPUT>. Seus atributos so VALUE e NAME, este opcional. Sintaxe: <INPUT TYPE=Submit VALUE=Enviar NAME=envia> - Reset Representa o boto para limpar todos os dados do formulrio. Representado tambm pela tag <INPUT>. Seus atributos so VALUE e NAME, este opcional. Sintaxe: <INPUT TYPE=Reset VALUE=Limpar NAME=limpa>
Inserindo dados em um banco de dados Agora que j entendemos como funciona um formulrio e sabemos como criar-lo, vamos comear a aprender como inserir dados em nosso banco de dados. Antes de iniciar insira mais um campo chamado cdigo (nmero inteiro), como chave primria, na tabela Pessoal e coloque cdigos nos registros j existentes. Seguindo ainda nossa primeira aplicao, crie um arquivo HTML contendo um formulrio com a opo method = post, a action = http://seu_servidor/scripts/Tutorial_1/insere.cfm, trs campos texto, de nomes: codigo, nome e tel, que representam os nomes dos campos da tabela Pessoal em nosso banco de dados. Crie tambm o boto de envio, submit.
Tutorial Cold Fusion Mdulo 2 Cold Fusion Brasil - www.coldfusionbrasil.com.br * A opo Action pode conter apenas o nome do arquivo destino, caso o arquivo html seja gravado no mesmo diretrio do arquivo de aplicao. Ex.: action = insere.cfm Aps criado o arquivo HTML, iremos agora criar o arquivo aplicao para inserir dados em nosso banco de dados. Insere.cfm <CFINSERT DATASOURCE=Agenda TABLENAME=Pessoal> Voc deve estar estranhando a aplicao ter apenas uma linha. Mas isso mesmo, esta a tag responsvel pela insero de dados em nosso banco de dados. Iremos agora entender um pouco mais sobre atributos mais utilizados desta tag: DATASOURCE Requerido. Nome do datasource que contm o banco de dados TABLENAME Requerido. Nome da tabela onde voc ir inserir os dados. USERNAME PASSWORD FORMFIELDS Opcional. Se especificado, cancela o username especificado no setup do ODBC. Opcional. Se especificado, cancela o password especificado no setup do ODBC. Opcional. Indicam quais os campos que devem ser inseridos. Os campos devem estar separados por vrgula.
Para que no haja problemas na hora de inserir os dados, necessrio que o nome dos campos no formulrio sejam idnticos aos usados no banco de dados. Veremos mais adiante como quebrar esta regra. Voc j deve ter criado o exemplo como mostrado a seguir, mas sentiu falta de alguma coisa, como uma confirmao de que os dados foram realmente cadastrados. Pois bem, como j falamos, o CFML muito parecido com o HTML e por isso tambm aceita suas tags. Vejamos a seguir: Insere.cfm (Completo) <CFINSERT DATASOURCE=Agenda TABLENAME=Pessoal> <HTML> <HEAD> <TITLE>Insero em Banco de Dados</TITLE> </HEAD> <BODY> <H2>Dados Cadastrados com Sucesso!</H2> </BODY> </HTML> Atualizando dados em um banco de dados J vimos como consultar e inserir dados em um banco de dados, mas se notamos que existe algum campo com informaes erradas, como podemos mudar-lo? nesta parte do mdulo que voc vai aprender como fazer isto.
Tutorial Cold Fusion Mdulo 2 Cold Fusion Brasil - www.coldfusionbrasil.com.br Selecionando o registro a ser alterado Primeiro precisamos criar uma pesquisa em nosso banco de dados e mostrar o resultado desta pesquisa para que possamos escolher qual registro vamos alterar. Quando for mostrar o resultado desta pesquisa, ser necessrio criar um pequeno formulrio com um campo escondido (hidden) para poder indicar aplicao que este o registro que se deseja alterar. Veja como: Altera.cfm <CFQUERY DATASOURCE=agenda NAME=AgendaPessoal> SELECT * FROM Pessoal </CFQUERY> <CFOUTPUT QUERY=AgendaPessoal> #nome# - #tel# <FORM METHOD=POST ACTION=formaltera.cfm> <INPUT TYPE=HIDDEN NAME=codigo VALUE=#codigo#> <INPUT TYPE=SUBMIT VALUE=Alterar> </FORM> </CFOUTPUT> Criando um formulrio de alterao O prximo passo criar um formulrio com os dados do registro escolhido para serem alterados. Criaremos ento uma nova consulta em nosso banco de dados onde o nmero do campo tel seja igual ao do registro escolhido na aplicao Altera.cfm. Feito isto colocaremos seus valores em um formulrio bem semelhante ao que usamos para inserir novos dados, visto anteriormente. Veja como: FormAltera.cfm <CFQUERY DATASOURCE=agenda NAME=AgendaPessoal> SELECT * FROM Pessoal WHERE codigo = #form.codigo# </CFQUERY> <CFOUTPUT QUERY=AgendaPessoal> <FORM METHOD=POST ACTION=AlteraFim.cfm> <INPUT TYPE=TEXT NAME=nome VALUE=#nome#> <INPUT TYPE=TEXT NAME=tel VALUE=#tel#> <INPUT TYPE=HIDDEN NAME=codigo VALUE=#codigo#> <INPUT TYPE=SUBMIT VALUE=Alterar> </FORM> </CFOUTPUT> Finalizando a alterao
Tutorial Cold Fusion Mdulo 2 Cold Fusion Brasil - www.coldfusionbrasil.com.br O ltimo passo criar o arquivo que registrar as alteraes no banco de dados. Semelhante a tag <CFINSERT>, utilizaremos a tag <CFUPDATE> para alterar as informaes do registro selecionado. AlteraFim.cfm <CFUPDATE DATASOURCE=Agenda TABLENAME=Pessoal> <HTML> <HEAD> <TITLE>Alterao em Banco de Dados</TITLE> </HEAD> <BODY> <H2>Dados Alterados com Sucesso!</H2> </BODY> </HTML> Alguns atributos utilizados nesta tag: DATASOURCE Requerido. Nome do datasource que contm o banco de dados TABLENAME Requerido. Nome da tabela onde voc ir inserir os dados. USERNAME PASSWORD FORMFIELDS Opcional. Se especificado, cancela o username especificado no setup do ODBC. Opcional. Se especificado, cancela o password especificado no setup do ODBC. Opcional. Indicam quais os campos que devem ser inseridos. Os campos devem estar separados por vrgula.
Inserindo, Atualizando e Excluindo registros com CFQUERY Vimos anteriormente como inserir e atualizar registros com <CFINSERT> e <CFUPDATE> respectivamente. Mas caso necessitemos de inseres e atualizaes mais complexas podemos utilizar instrues SQL para executar-los. Iremos utilizar aqui os formulrios exemplos utilizados nos tpicos anteriores. Inserindo Para inserir um registro basta substituir a tag <CFINSERT> pelo seguinte: Insere.cfm <CFQUERY DATASOURCE=Agenda NAME=Insere> INSERT INTO Pessoal (codigo, nome, tel) VALUES (#form.codigo#, #form.nome#, #form.tel#) </CFQUERY> <HTML> <HEAD>
Tutorial Cold Fusion Mdulo 2 Cold Fusion Brasil - www.coldfusionbrasil.com.br <TITLE>Insero em Banco de Dados</TITLE> </HEAD> <BODY> <H2>Dados Cadastrados com Sucesso!</H2> </BODY> </HTML>
Alterando Para alterar um registro basta substituir a tag <CFUPDATE> pelo seguinte: AlteraFim.cfm <CFQUERY DATASOURCE=Agenda NAME=Altera> UPDATE Pessoal SET nome = #form.nome#, tel = #form.tel# WHERE codigo = #form.codigo# </CFQUERY> <HTML> <HEAD> <TITLE>Alterao em Banco de Dados</TITLE> </HEAD> <BODY> <H2>Dados Alterados com Sucesso!</H2> </BODY> </HTML> Excluindo registros Para excluir registros no a outro modo a no ser utilizando instrues SQL atravs da tag <CFQUERY>. Para ilustramos como funciona, vamos comear selecionando qual registro desejamos excluir de nosso banco de dados. Exclui.cfm <CFQUERY DATASOURCE=agenda NAME=AgendaPessoal> SELECT * FROM Pessoal </CFQUERY> <CFOUTPUT QUERY=AgendaPessoal> #nome# - #tel# <FORM METHOD=POST ACTION=excluifim.cfm> <INPUT TYPE=HIDDEN NAME=codigo VALUE=#codigo#> <INPUT TYPE=SUBMIT VALUE=Excluir> </FORM> </CFOUTPUT>
10
Tutorial Cold Fusion Mdulo 2 Cold Fusion Brasil - www.coldfusionbrasil.com.br * Note que o exemplo acima igual ao utilizado para selecionar o registro a ser alterado, exceto pelo nome da aplicao da action. Agora vamos ver como fica a aplicao que exclui em definitivo o registro: ExcluiFim.cfm <CFQUERY DATASOURCE=Agenda NAME=Exclui> DELETE FROM Pessoal WHERE codigo = #form.codigo# </CFQUERY> <HTML> <HEAD> <TITLE>Excluso em Banco de Dados</TITLE> </HEAD> <BODY> <H2>Dados Excludos com Sucesso!</H2> </BODY> </HTML>
11