Você está na página 1de 23

Incio programao em ASP

Especificao da linguagem utilizada: VBScript ou JScript servidor. Primeiro script em ASP utilizando uma funo. Ao longo dos captulos precedentes ficou claro que o ASP uma linguagem orientada s aplicaes em rede criada por Microsoft que funciona do lado servidor. na verdade, o servidor quem se ocupa de executa-lo, interpreta-lo e envia-lo ao cliente (navegador) em forma de cdigo HTML. ASP principalmente utilizado servindo-se da linguagem Visual Basic Script que no mais do que uma verso light do Visual Basic. Entretanto, possvel programar pginas ASP em Java Script. O nico que h de fazer especificar na prpria pgina que tipo de linguagem estamos utilizando. Dado que a linguagem ASP est muito freqentemente embebida dentro do cdigo HTML, importante poder marcar ao servidor que partes esto escritas em uma linguagem e quais em outra. por isso que todas as partes do arquivo que esto escritas em ASP estaro sempre delimitadas pelos smbolos: <% e %>. Deste modo, quando realizarmos nossos scripts, o primeiro que devemos definir o tipo de linguagem utilizado, o qual se faz da seguinte forma: <% @ LANGUAGE="VBSCRIPT" %> No caso de programarmos em Visual Basic Script <% @ LANGUAGE="JSCRIPT" %> Se nos servimos do Java Script em servidor para programar em ASP Os scripts que sero apresentados neste manual estaro baseados no VBS, o qual apresenta uma srie de prestaes que os tornam sem dvida mais acessvel e apto para ASP. No a toa que o prprio Microsoft quem criou ambos. Com os elementos que apresentamos at agora, j estamos em situao de poder escrever nosso primeiro programa em ASP. Vamos criar um programa que calcule o 20% de impostos que teria que acrescentar a uma srie de artigos. Para concretizar o conceito de funo, explicado no manual de pginas dinmicas, vamos definir uma funo "imposto" que empregaremos sucessivas vezes. O programa poderia ser algo assim: <% @ LANGUAGE="VBSCRIPT" %> <HTML> <HEAD> <TITLE>Funo imposto</TITLE> </HEAD> <BODY> <%Function imposto(preo_artigo) preo_final=preo_artigo+preo_artigo*20/100 Response.Write preo_final End Function%> Um livro de $35,00 ficar em um preo de <% imposto(35) %> <br> Um sapato de $60,00 ter um preo final de <% imposto(60) %> <br> Um CD de msica de $20,00 custaria <% imposto(20) %> </BODY> </HTML> Como pode ser visto, o script contm duas partes fundamentais: Uma primeira na qual definimos a funo que chamamos imposto que depende unicamente de uma varivel (preo_artigo). Imposto permite
1

acrescentar um 20% ao preo do artigo e imprimir o resultado na tela (Response.Write). Na segunda parte nos servimos da funo para realizar os clculos necessrios e mostr-los na tela, acompanhados de texto. muito interessante uma vez executado o script, ver o cdigo fonte. Como se pode ver, o cdigo HTML que mostra o browser no coincide com o que ns escrevemos. Algo que no deve nos surpreender, j que, como j explicamos, o servidor se encarrega de processa-lo e torna-lo compreensvel ao navegador.

Loops e condies I
Algumas das formas mais correntes de controlar o fluxo dos programas em VBScript: Condio IF A programao exige em muitas ocasies a repetio de aes sucessivas ou a escolha de uma determinada seqncia e no de outra dependendo das condies especficas da execuo. Como exemplo, poderamos fazer aluso a um script que execute uma seqncia diferente em funo do dia da semana no qual nos encontramos. Este tipo de ao pode ser realizado graas a uma paleta de instrues presentes na maioria das linguagens. Neste captulo descreveremos sumariamente algumas delas propostas pelo VBS e que so de evidente utilidade para o desenvolvimento de pginas ASP. Para evitar complicar o texto, nos limitaremos a introduzir as mais importantes deixando de lado outras tantas que podero ser facilmente assimiladas a partir de exemplos prticos. As condies: IF Quando quisermos que o programa, chegado a um certo ponto, tome um caminho determinado em determinados casos e outro diferente se as condies de execuo diferem, nos servimos do conjunto de instrues If, Then e Else. A estrutura de base deste tipo de instrues a seguinte: IF condio THEN Instruo 1 Instruo 2 ... ELSE Instruo A Instruo B ... END IF Chegado a este ponto, o programa verificar o cumprimento ou no da condio. Se a condio certa as instrues 1 e 2 sero executadas. Do contrrio (Else), as instrues A e B sero realizadas. Uma vez finalizada a estrutura, deveremos fechar com um End If. Esta estrutura de base pode complicar-se um pouco mais, se temos em conta que no necessariamente tudo branco ou negro e que muitas possibilidades podem se dar. por isso que outras condies podem se colocar dentro da condio principal. Falamos, portanto, de condies aninhadas que teriam uma estrutura do seguinte tipo: IF condio THEN Instruo 1 Instruo 2 ... ELSE
2

IF condio2 THEN Instruo A Instruo B ... ELSE Instruo X ... END IF END IF Deste modo poderamos introduzir tantas condies quantas quisermos dentro de uma condio principal. Neste tipo de estruturas importante fechar corretamente cada um dos IF com seus END IF correspondentes. De grande ajuda a instruo ELSE IF que permite em uma s linha e sem necessidade de acrescentar um END IF introduzir uma condio aninhada. O uso desta ferramenta ser claro com um pouco de prtica. Colocamos um exemplo simples de utilizao de condies. O seguinte programa permitiria detectar a lngua empregada pelo navegador e visualizar uma mensagem em tal lngua. <% @ LANGUAGE="VBSCRIPT" %> <HTML> <HEAD> <TITLE>Detector de Lngua</TITLE> </HEAD> <BODY> <% 'Antes de nada introduzimos mensagens em forma de variveis espanhol="Hola" ingles="Hello" portugues="Ol" 'Agora lemos do navegador qual a sua lngua oficial idioma=Left(Request.ServerVariables("HTTP_ACCEPT_LANGUAGE"),2) 'Formulamos as possibilidades que podem dar If idioma="es" Then Response.Write espanhol ElseIf idioma="pt" Then Response.Write portugues Else Response.Write ingles End If %> </BODY> </HTML> Para poder ver o funcionamento deste script necessrio mudar o idioma preferido o qual pode ser realizado a partir do menu de opes do navegador. Como pode ser visto, as variveis que contm texto so armazenadas entre aspas. Para ler a lngua aceitada pelo navegador o que fazemos definir uma varivel (idioma) que recorre as duas primeiras letras comeando da esquerda do idioma aceitado pelo navegador ("HTTP_ACCEPT_LANGUAGE"). Este idioma aceitado pode ser requerido como uma varivel do objeto ServerVariables. Por agora deixaremos isto tal como est, e j nos encarregaremos de v-lo mais detalhadamente em outros captulos.
3

A terceira de script se encarrega de ver se o navegador est em portugus (pt), espanhol (es), ou em qualquer outro idioma que no seja nenhum destes dois, e imprimir cada uma das mensagens que proceda em cada caso. Outro ponto a comentar o fato de poder comentar os programas. Como se pode observar, dentro do script introduzimos umas mensagens que nos serve para l-las mais facilmente. Estas mensagens no exercem nenhuma influncia no desenvolvimento do mesmo. Para introduzi-las necessrio escreve-las detrs de uma apstrofe: ' Os comentrios so de grande utilidade quando tratamos com programas muito extensos e complicados.Nestes casos, so de grande ajuda na hora de depurar falhos ou introduzir modificaes. altamente aconselhvel acostumar-se a utiliz-los.

Loops e condies II
Algumas das formas mais correntes de controlar o fluxo dos programas em VBScript: Loop FOR. Os loops FOR Em muitas ocasies necessrio executar um conjunto de instrues um nmero definido de vezes. Isto pode ser realizado a partir da instruo FOR/NEXT. A estrutura clssica: FOR contador=nmero inicial to nmero final STEP incremento Instruo 1 Instruo 2 ... NEXT A partir deste tipo de estruturas executamos as instrues contidas entre o FOR e o NEXT um certo nmero de vezes definido pelo nmero inicial, final e o incremento. O incremento de 1 por padro. Colocamos um exemplo: <% @ LANGUAGE="VBSCRIPT" %> <HTML> <HEAD> <TITLE>Loop for/next</TITLE> </HEAD> <BODY> <%For i=1 to 5%> <font size=<%Response.Write i%>>Volta nmero <%Response.Write i%></font><br> <%Next For i=5 to 1 Step -1%> <font size=<%Response.Write i%>>Contamos atrs: <%Response.Write i%></font><br> <%Next%> </BODY> </HTML>

Este script composto de dois loops conta primeiro de 1 a 5. A varivel i toma portanto todos os valores inteiros compreendidos entre estes dois nmeros e pode ser utilizada dentro do loop como o fazemos neste caso para aumentar o tamanho da letra. O segundo loop realiza o processo inverso (o incremento negativo) produzindo uma diminuio do tamanho da letra. Se quiser ver o efeito que produz clique aqui O que pode ser interessante para ver at que ponto o programar pginas dinmicas pode fazer pouparmos texto em relao a mesma pgina programada em cdigo HTML, ver o cdigo fonte da pgina a partir do navegador.

Loops e condies III


Algumas das formas mais correntes de controlar o fluxo dos programas em VBScript: Loops DO WHILE/LOOP e operadores lgicos. Os loops DO WHILE/LOOP Outra forma de realizar este tipo de seqncias loop a partir da instruo DO WHILE. Neste caso o que especificamos para fixar a extenso do loop no o nmero de voltas e sim, o que se cumpre ou no uma condio. A estrutura deste tipo de loops anloga a dos loops FOR/NEXT: DO WHILE condio Instruo 1 Instruo 2 ... LOOP O loop se dar enquanto a condio proposta seguir sendo vlida. Como ser visto em exemplos posteriores, este tipo de loops muito prtico para a leitura de bases de dados. Todo este tipo de controladores de fluxo, (condies e loops) podem ser necessrios e otimizados a partir do uso de operadores lgicos. Assim, podemos escolher que sejam duas as condies que dem para realizar um conjunto de instrues: IF condio 1 AND condio 2 THEN ... Tambm podemos requerer que seja uma das duas: IF condio 1 OR condio 2 THEN... Da mesma forma, possvel escolher que a condio de um loop DO seja a inversa enunciada: DO WHILE NOT condio Concluindo, um conjunto de recursos bsicos para controlar o desenvolvimento de programas. Sua utilidade ser mais que patente e seu uso ir tornando-se intuitivo medida que nos familiarizarmos com a linguagem.

Os objetos ASP
Introduo ao conceito de objeto e os elementos que o compem.

O ASP uma linguagem desenhada para a criao de aplicaes na internet. Isto quer dizer que existe toda uma srie de tarefas bastante correntes, as quais deve se dar um tratamento fcil e eficaz. Referimo-nos por exemplo ao envio de e-mails, acesso a arquivos, gesto de variveis do cliente ou servidor como podem ser seu IP ou a lngua aceitada... A linguagem VB propriamente dita no d uma soluo fcil e direta a estas tarefas, e sim invoca aos denominados objetos que no so mais que uns mdulos incorporados linguagem que permitem o desenvolvimento de tarefas especficas. Estes objetos realizam de uma maneira simples toda uma srie de aes de uma complexidade relevante. A partir de uma chamada ao objeto, este realizar a tarefa requerida. De certa forma, estes objetos nos poupam ter que fazer compridos programas para operaes simples e habituais. Alguns destes objetos esto incorporados no prprio ASP, outros devem ser incorporados como se se tratasse de componentes acessrios. De fato, no poderamos executar corretamente um script no qual tivssemos que chamar a um objeto que no estivesse integrado no servidor. Estes tipos de "plug-in" so geralmente comprados pelo servidor a empresas que os desenvolvem. Como todo objeto do mundo real, os objetos do mundo informtico tm suas propriedades que os definem, realizam um certo nmero de funes ou mtodos e so capazes de responder de uma forma definvel antes certos eventos. Dado o nvel desta obra, a descrio da totalidade de objetos com seus mtodos e propriedades certamente fora de lugar. Vamos, portanto, nos contentar com ir descrevendo os mais freqentemente utilizados e exemplifica-los da maneira mais prtica deixando a numerao exaustiva em forma de apndice.

Objeto Request
OBJECT REQUEST I

Que funes realiza este objeto e como se passam as variveis pela URL. Loops e condies so muito teis para processar os dados dentro de um mesmo script. Entretanto, em um site na internet, as pginas vistas e os scripts utilizados so numerosos. Muitas vezes necessitamos que nossos distintos scripts estejam conectados uns com outros e que se sirvam de variveis comuns. Por outro lado, o usurio interage por meio de formulrios cujos campos ho de ser processados para poder dar uma resposta. Todo este tipo de fatores dinmicos ho de ser eficazmente regulados por uma linguagem como o ASP. Como veremos, todo este tipo de aspectos interativos podem ser providenciados a partir do objeto Request. O objeto Request nos devolve informaes do usurio que foram enviadas por meio de formulrios, por URL ou a partir de cookies (veremos de que se tratam a seguir). Tambm nos informa sobre o estado de certas variveis do sistema, como pode ser a lngua utilizada pelo navegador, o nmero IP do cliente... Transferir variveis por URL Para passar as variveis de una pgina a outra, podemos faze-lo introduzindo tal varivel no endereo URL da pgina destino dentro do link hipertexto. A sintaxe seria a seguinte: <a href="destino.asp?variavel1=valor1&variavel2=valor2&..."></a> Para buscar a varivel na pgina destino, devemos fazer por meio do objeto Request com o mtodo Querystring: Request.querystring("variavel1")
6

Request.querystring("variavel2") As duas pginas seriam assim: <HTML> <HEAD> <TITLE>Pgina origem.asp</TITLE> </HEAD> <BODY> <a href="destino.asp?saudacao=ol&texto=Isto uma varivel texto">Passo variveis saudao e texto pgina destino.asp</a> </BODY> </HTML> <HTML> <HEAD> <TITLE>destino.asp</TITLE> </HEAD> <BODY> Varivel saudao: <%Response.Write Request.Querystring("saludo")%><br> Varivel texto: <%Response.Write Request.Querystring("texto")%><br> </BODY> </HTML>
OBJECT REQUEST II

Como passar variveis atravs dos formulrios e obter mais informaes prticas sobre o servidor ou o cliente. Transferir variveis por formulrio O processo similar ao explicado para as URLs. Primeiramente, apresentamos uma primeira pgina com o formulrio a preencher e as variveis so recolhidas em uma segunda pgina que as processa: <HTML> <HEAD> <TITLE>formulario.asp</TITLE> </HEAD> <BODY> <FORM METHOD="POST" ACTION="destino2.asp"> Nome<br> <INPUT TYPE="TEXT" NAME="nome"><br> Sobrenome<br> <INPUT TYPE="TEXT" NAME="sobrenome"><br> <INPUT TYPE="SUBMIT"> </FORM> </BODY> </HTML> <HTML> <HEAD> <TITLE>destino2.asp</TITLE> </HEAD>
7

<BODY> Varivel nome: <%=Request.Form("nome")%><br> Varivel sobrenome: <%=Request.Form("sobrenome")%> </BODY> </HTML> Outras utilidades de Request: as ServerVariables O objeto Request nos d acesso a outras informaes relativas ao cliente e ao servidor, as quais podem ser de uma grande utilidade. Estas informaes so armazenadas como variveis as quais so agrupadas em uma coleo chamada ServerVariables. Dentro desta coleo temos variveis to interessantes como: HTTP_ACCEPT_LANGUAGE Informa a lngua preferida pelo navegador HTTP_USER_AGENT Indica qual o navegador utilizado. PATH_TRANSLATED Devolve o path fsico do disco rgido do servidor no qual se encontra nosso script SERVER_SOFTWARE Diz que tipo de software utiliza o servidor Para visualizar na tela algumas dessas variveis, devemos escrever algo como: Response.write request.servervariables("nome da varivel") Uma forma rpida de visualizar todas estas variveis a partir de um script com esta seqncia: <% For Each elemento in Request.ServerVariables Response.Write elemento&" : "&Request.ServerVariables(elemento)& "<br>" Next %> Isto nos daria por um lado o nome da varivel e do outro o seu valor. Este tipo de loop For Each/Next se parece a outros j vistos. Neste caso, o loop se realiza tantas vezes como elementos que tiver a coleo (ServerVariables) que no mais que o conjunto de elementos compreendidos na extenso do objeto (Request). Este tipo de loop aplicvel a outras colees deste e de outros objetos como, por exemplo, os Request.Form ou Request.Querystring ou as cookies. Desta forma seramos capazes de visualizar o nome e o contedo de tais colees sem a necessidade de enuncia-las uma por uma.

Objeto Response
Que funes realiza este objeto. Como inscrever textos ou valores e como re-enderear automaticamente para outras pginas. Tal como vimos, o objeto Request providencia tudo que relativo a entrada de dados ao script por parte do usurio (formulrios), provenientes de outra URL, do prprio servidor ou do browser. Resta-nos explicar como o script pode "responder" a estes estmulos, ou seja, como, depois de processar devidamente os dados, podemos imprimir estes na tela, inscreve-los nas cookies ou enviar ao internauta a uma pgina ou outra. Definitivamente, falta definir a forma na qual o ASP regula o contedo que enviado ao navegador. Esta funo encarregada pelo objeto Response o qual foi ligeiramente mencionado em captulos precedentes concretamente em associao ao mtodo Write.
8

Na prtica, sentenas do tipo: <%Response.Write "Uma cadeia de texto"%> o bien, <%Response.Write variable%> Tm como cometido imprimir no documento HTML gerado uma mensagem ou valor de varivel. Este mtodo geralmente to utilizado que existe uma abreviao do mesmo de forma a facilitar sua escritura: <% = variable %> anlogo a <%response.write variable%> importante ressaltar o fato que imprimir no documento HTML no significa necessariamente visualizar na tela j que poderamos nos servir destas etiquetas para criar determinadas etiquetas HTML. Temos aqui um exemplo do que pretendemos dizer: <% path="http://www.meusite.com/graficos/imagem.gif" %> <img src="<% =path %>"> Este fragmento de script nos geraria um cdigo HTML que seria recebido no navegador da seguinte forma: <img src="http://www.meusite.com/graficos/imagem.gif"> Outro elemento interessante deste objeto Response o mtodo Redirect. Este mtodo nos permite enviar automaticamente o internauta a uma pgina que ns tivermos decidido. Esta prtica funo, pode ser empregada em scripts que enviamos ao visitante de nosso site a uma pgina ou outra em funo do navegador que utiliza ou da lngua que prefere. Tambm muito til para realizar pginas "escondidas" que realizam uma determinada funo sem mostrar nem texto nem imagens e nos enviam a seguir a outra pgina que na realidade a que ns recebemos no navegador. Aqui pode ser visto uma seqncia de script que nos permitiria usar este mtodo para o caso em que tivermos pginas diferentes para distintas verses de navegadores. Nela empregaremos um objeto que deve nos parecer familiar j que o acabamos de ver (Request.ServerVariables): <% tipo_navegador = Request.ServerVariables("HTTP_USER_AGENT") If Instr(1, tipo_navegador, "MSIE 3", 1) <> 0 then Response.Redirect "MSIE3.asp" ElseIf Instr(1, tipo_navegador, "MSIE 4", 1) <> 0 then Response.Redirect "MSIE4.asp" ElseIf Instr(1, tipo_navegador, "MSIE 5", 1) <> 0 then Response.Redirect "MSIE5.asp" ElseIf Instr(1, tipo_navegador, "Mozilla/4", 1) <> 0 then Response.Redirect "Netscape4.asp" Else Response.Redirect "qualquer.asp" %> Obviamente, acompanhando este script, devemos ter os correspondentes arquivos MSIE3.asp, MSIE4.asp, MSIE5.asp... Cada um deles com as particularidades necessrias para a boa visualizao de nossa pgina em tais navegadores.
9

Exemplo simples de ASP


Fazemos um stop para realizar um exemplo simples em ASP que trata o envio de formulrios e o uso de loops. Vamos ver um simples exemplo realizado em ASP que serve para ilustrar o trabalho desenvolvido at o momento no manual da tecnologia. Este exemplo muito bsico, embora experimenta vrias das utilidades vistas at agora, como o trabalho com loops e os objetos request e response, que servem para receber dados e imprimi-los na pgina. O exemplo em concreto se trata de um gerador de tabelas de multiplicar. princpio, quando se acessa ao arquivo, mostra-se a tabela do zero e um formulrio onde podemos selecionar outro nmero e ver sua tabela de multiplicar. Ao enviar o formulrio se acessa a mesma pgina, embora agora apareceria a tabela de multiplicar do nmero selecionado no formulrio. Formulrio para selecionar um nmero Vejamos agora o formulrio que mostra um campo de seleo com os nmeros do 1 ao 10. Este formulrio servir para que o visitante possa selecionar a tabela que deseja ver. <form name=tb action=tb.asp method=post> <P align=center>Selecione uma opo <SELECT align=center name=tab style="WIDTH: 40px"> <OPTION selected>1</OPTION> <OPTION >2</OPTION> <OPTION >3</OPTION> <OPTION >4</OPTION> <OPTION >5</OPTION> <OPTION >6</OPTION> <OPTION >7</OPTION> <OPTION >8</OPTION> <OPTION >9</OPTION> <OPTION >10</OPTION> </SELECT> <br> <INPUT type=submit value="Ver tabela" > </P> </form> Temos que observar que a pgina que vai receber o formulrio chama-se tb.asp, segundo se indica no atributo action. O nico campo do formulrio que se envia chamado "tab", e salva o nmero que tenha sido selecionado. Cdigo para mostrar a tabela de multiplicar correspondente Comeamos recebendo o dado do formulrio que nos indica a tabela que o usurio quer visualizar. princpio, no se recebe nenhum dado do formulrio (at que no se envie o formulrio no se sabe que tabela se deseja ver e portanto, havamos dito que se mostraria a tabela do zero). Sendo assim, se no recebo nada, inicio a zero a varivel i, que salva o nmero da tabela de multiplicar a ser mostrada. No caso de que receba algo do formulrio, se inicia a varivel i ao valor recebido no campo "tab". 'se no se est recebendo dados do formulrio if request.form("tab")="" then 'inicio a tabela a mostrar a zero i=0
10

else 'inicio a tabela a mostrar ao dado recebido no formulrio i=Request.Form ("tab") end if Agora veremos um loop que mostra a tabela de multiplicar do valor recebido por formulrio. Este loop faz uma repetio desde 1 ao 10 e vo se realizando as multiplicaes e mostrando os resultados. 'mostro a tabela do nmero que recebo do formulrio Response.Write "Tabela do " & i%><br><br><% 'realizo um loop do 1 ao 10 para mostrar a tabela correspondente for a=1 to 10 Response.Write i &" x " & a & " = " & i*a%> <br> <% next %> Cdigo completo O cdigo completo do exemplo pode ser visto a seguir. Espero que sirva de ajuda para as pessoas que comeam a dar seus primeiros passos com ASP. <%@ Language=VBScript %> <HTML> <HEAD><title>Tabelas de Multiplicar....</title> </HEAD> <BODY bgColor=skyblue> <div align="center"> <form name=tb action=tb.asp method=post> <P align=center>Selecione uma opo <SELECT align=center name=tab style="WIDTH: 40px"> <OPTION selected>1</OPTION> <OPTION >2</OPTION> <OPTION >3</OPTION> <OPTION >4</OPTION> <OPTION >5</OPTION> <OPTION >6</OPTION> <OPTION >7</OPTION> <OPTION >8</OPTION> <OPTION >9</OPTION> <OPTION >10</OPTION> </SELECT> <br> <INPUT type=submit value="Ver tabela" name=submit1 > </P> </form> <% 'se no se est recebendo dados do formulrio if request.form("tab")="" then 'inicio a tabela a mostrar a zero i=0
11

else 'inicio a tabela a mostrar ao dado recebido no formulrio i=Request.Form ("tab") end if 'mostro a tabela do nmero que recebo do formulrio Response.Write "Tabela do " & i%><br><br><% 'realizo um loop do 1 ao 10 para mostrar a tabela correspondente for a=1 to 10 Response.Write i &" x " & a & " = " & i*a%> <br> <% next %> </div> </BODY> </HTML>

Objeto Session
A necessidade e utilidade do mtodo session para transferir variveis. Nos programas que vimos at agora, utilizamos variveis que s existiam no arquivo que era executado. Quando carregvamos outra pgina distinta, os valores destas variveis se perdiam, ao menos que no nos incomodssemos de passa-los pela URL ou inscreve-los nas cookies ou em um formulrio para sua posterior explorao. Estes mtodos, embora teis, no so todo prticos que poderiam em determinados casos, nos quais a varivel que queremos conservar h de ser utilizada em vrios scripts diferentes e distantes uns dos outros. Poderamos pensar que esse problema pode ser resolvido com as cookies j que se trata de variveis que possam ser invocadas em qualquer momento. O problema, como j foi falado, que as cookies no so aceitas nem pela totalidade dos usurios, e nem pela totalidade dos navegadores, o qual implica que uma aplicao que se servisse das cookies para passar variveis de um arquivo a outro no seria 100% infalvel. ento necessrio, o poder declarar certas variveis que possam ser reutilizadas tantas vezes quantas quisermos dentro de uma mesma sesso. Imaginemos um site multilingue, no qual cada vez que quisermos imprimir uma mensagem em qualquer pgina necessitamos saber em qual idioma deve fazer. Poderamos introduzir um script identificador da lngua do navegador em cada um dos arquivos ou ento, declarar uma varivel que fosse vlida para toda a sesso e que tivesse como valor o idioma reconhecido em um primeiro momento. Estas variveis que so vlidas durante uma sesso e que logo so "esquecidas" so definidas com o objeto Session da seguinte forma: Session("nome da varivel") = valor da varivel Uma vez definida, a varivel Session, ser armazenada em memria e poder ser empregada em qualquer script do site web. A durao de uma sesso vem definida por padro em 20 minutos. Isto quer dizer que se em 20 minutos no realizamos nenhuma ao, o servidor dar por finalizada a sesso e todas as variveis Session sero abandonadas. Esta durao pode ser modificada com a propriedade Timeout:

12

Session.Timeout = n de minutos que quisermos que dure Uma forma de apagar as variveis Session sem necessidade de esperar que passe este prazo a partir do mtodo Abandon: Session.Abandon Deste modo todas as variveis Session sero apagadas e a sesso ser finalizada. Este mtodo pode ser prtico quando estivermos fazendo provas com o script e necessitarmos reiniciar as variveis. O que se costuma fazer criar um arquivo no qual se apagam as cookies e se abandona a sesso. Este arquivo ser executado quando quisermos apagar e fazer uma conta nova: <% @ LANGUAGE="VBSCRIPT" %> <HTML> <HEAD> <TITLE>Posta a zero</TITLE> </HEAD> <BODY> <% For Each biscoito in Response.Cookies Biscoito="" Next Session.Abandon %> Apagar e conta nova!!<br> <a href="url da pgina de incio">Voltar ao princpio</a> </BODY> </HTML>

Trabalhar com bases de dados em ASP


ASP, objetos ADO e conectores ODBC. Os elementos indispensveis para o trabalho com bases de dados. Uma das principais vantagens que apresenta trabalhar com pginas dinmicas o poder armazenar os contedos em base de dados. Desta forma, podemos organiz-los atualiz-los e busc-los de uma maneira muito mais simples. ASP nos oferece uma forma muito eficaz de interagir com estas bases de dados graas ao uso do componente ADO (ActiveX Data Objects) o qual permite acessar a tal bases de uma forma simples. Este ADO no mais que um conjunto de objetos que, utilizados em conjunto, nos permitem explorar de uma forma muito verstil as bases de dados de nossa aplicao. No entraremos por este momento em consideraes tericas a respeito. Por outra parte, os scripts ASP devem estabelecer um dilogo com a base de dados. Este dilogo se realiza a partir de um idioma universal: o SQL (Structured Query Language) o qual comum a todas as bases de dados. Esta linguagem muito potente e fcil de aprender. Neste manual de ASP nos limitaremos a utilizar as instrues bsicas que sero aprendidas a medida que explicamos as diferentes formas de agir sobre uma base de dados a partir de pginas ASP. A base de dados que foi utilizada nestes exemplos MS Access. claro que no a nica, mas a mais corrente em pequenos PCs e absolutamente operativa sempre que as tabelas no sejam astronomicamente grandes. Esperamos poder lhes oferecer proximamente tambm um pequeno curso de Access no qual explica
13

os princpios rudimentares necessrios para poder nos servir dele. No obstante, esta aplicao suficientemente fcil e intuitiva como para poder prescindir de tal curso por este momento.

Selees em uma tabela


Forma simples de realizar selees dentro de uma tabela. Exemplos prticos. Dentro de uma base de damos, organizada por tabelas, a seleo de uma tabela inteira ou de um certo nmero de registros uma operao rotineira. A partir desta seleo pode-se posteriormente efetuar toda uma srie de mudanas ou ento, realizar uma simples leitura. O seguinte script nos permite realizar a leitura da tabela clientes, contida em nossa base de dados. primeira vista tudo pode nos parecer um pouco complexo, mas nada mais longe da realidade. <HTML> <HEAD> <TITLE>Leitura de registros de uma tabela</TITLE> </HEAD> <BODY> <h1><div align="center">Leitura da tabla</div></h1> <br> <br> <% 'Antes de mais nada h que instanciar o objeto Connection Set Conn = Server.CreateObject("ADODB.Connection") 'Uma vez instanciado Connection podemos abri-lo e lhe atribumos base de dados onde vamos efetuar as operaes Conn.Open "Minhabase" 'Agora criamos a sentena SQL que nos servir para falar BD sSQL="Select * From Clientes Order By nome" 'Executamos a ordem set RS = Conn.Execute(sSQL) 'Mostramos os registros%> <table align="center"> <tr> <th>Nome</th> <th>Telefone</th> </tr> <% Do While Not RS.Eof %> <tr> <td><%=RS("nombre")%></td> <td><%=RS("telefono")%></td> </tr> <% RS.MoveNext Loop
14

'Fechamos o sistema de conexo Conn.Close %> </table> <div align="center"> <a href="insertar.html">Acrescentar um novo registro</a><br> <a href="actualizar1.asp">Atualizar um registro existente</a><br> <a href="apagar1.asp">Apagar um registro</a><br> </div> </BODY> </HTML> Se o que desejamos interrogar uma base de dados, o primeiro que h que fazer obviamente estabelecer a conexo com ela. Isto se faz a partir do objeto Connection o qual "invocado" ou mais tecnicamente dito instanciado por meio da primeira instruo na qual o objeto toma o nome arbitrrio da variable Conn . O passo seguinte abrir o objeto e atribuir a base de dados com a qual deve entrar em contato. Neste caso, chamamos a base de Minhabase. Este deve de ser o mesmo nome com o qual a batizamos quando configuramos os conectores ODCB, ademais, este nome no tem porque coincidir necessariamente com o nome do arquivo. Uma vez criada a conexo a nossa base de dados, o passo seguinte fazer nossa petio. Esta petio pode ser formulada primeiramente e armazenada em uma varivel (sSQL) para, a seguir, ser executada por meio da instruo seguinte. A petio que realizamos neste caso a de selecionar todos os campos que existem nas tabela clientes (* um coringa) e ordenar os resultados por ordem alfabtica em relao ao campo nome. O resultado de nossa seleo armazenado na varivel RS em forma de tabela. Para ver a tabela o que h que fazer agora "passear" por esta tabela "virtual" RS a qual possui uma espcie de cursor que, a menos que se especifique outra coisa, aponta ao primeiro registro da seleo. O objetivo agora fazer deslocar-se ao cursor ao longo da tabela para poder l-la em sua totalidade. A forma de faz-lo a partir de um loop Do While o qual foi explicado anteriormente e que o nico que faz executar as instrues compreendidas entre o Do e o Loop sempre que a condio proposta (Not RS.Eof) seja verdadeira. Isto se traduz como "Executar este conjunto de instrues enquanto a tabela de resultados (RS) no chegar ao final" (Eof, End of File). As instrues includas no loop so, por um lado, a impresso no documento dos valores de determinados campos ( =RS("nome do campo")) e por outro, saltar de um registro ao outro mediante a instruo RS.MoveNext. Todo este conjunto de instrues ASP vem em combinao com um cdigo HTML que permite sua visualizao em forma de tabela. Ademais, foram includos uns links que apontam para outra srie de scripts que veremos mais adiante e que formaro em conjunto uma aplicao. interessante ver o cdigo fonte resultante deste script. Neste caso o cdigo que v o cliente sensivelmente mais simples.

Criao de um novo registro


Forma simples de introduzir novos elementos na tabela. Exemplos prticos.

15

Neste caso o que buscamos criar, a partir dos dados recebidos de um formulrio, um novo registro em nossa tabela clientes. Teremos ento, dois arquivos diferentes, um que poderia ser um HTML puro no qual introduzimos o formulrio a preencher e que nos envia ao segundo, um script muito parecido ao previamente visto para realizar uma seleo. Aqui esto os dois scripts: <HTML> <HEAD> <TITLE>Inserir.html</TITLE> </HEAD> <BODY> <div align="center"> <h1>Inserir um registro</h1> <br> <FORM METHOD="POST" ACTION="inserir.asp"> Nombre<br> <INPUT TYPE="TEXT" NAME="nome"><br> Telfono<br> <INPUT TYPE="TEXT" NAME="telefone"><br> <INPUT TYPE="SUBMIT" value="Inserir"> </FORM> </div> </BODY> </HTML> <HTML> <HEAD> <TITLE>Inserir.asp</TITLE> </HEAD> <BODY> <% 'Recolhemos os valores do formulrio nome=Request.Form("nome") telefone= Request.Form("telefone") 'Instanciamos e abrimos nosso objeto conexo Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "Minhabase" 'Agora criamos a sentena SQL sSQL="Insert Into Clientes (nome,telefone) values ('" & nome & "','" & telefone & "')" 'Executamos a ordem set RS = Conn.Execute(sSQL) %> <h1><div align="center">Registro Inserido</div></h1> <div align="center"><a href="lectura.asp">Visualizar o contedo da base</a></div> <% 'Fechamos o sistema de conexo Conn.Close %>
16

</BODY> </HTML> Como pode ser visto, a forma de operar idntica vista anteriormente para o display de uma tabela. Neste caso introduzimos um link a este primeiro script de leitura para ver como as mudanas se tornaram efetivas. A construo da sentena SQL se faz por fuso dos distintos elementos constitutivos. A forma de fundi-los mediante o smbolo &. Tudo que seja texto tem que ir entre aspas. Seria interessante introduzir uma linha suplementaria em seu cdigo para imprimir a sSQL formada. A linha seria do seguinte tipo: Response.Write sSQL Esta linha seria situada evidentemente depois de haver construdo a sentena.

Atualizao de um registro existente


Sentenas SQL para realizar atualizaes na tabela. Para mostrar como se atualiza um registro presente em nossa base de dados, vamos faze-lo a partir de um caso um pouco mais complexo para comearmos a nos familiarizar com estas operaes. Realizaremos dois scripts que permitem mudar o numero de telefone das distintas pessoas presentes em nossa base. O nome destas pessoas, assim como o novo nmero de telefone, sero recolhidos por meio de um formulrio. O arquivo do formulrio vai ser desta vez um script ASP no qual efetuaremos uma chamada a nossa base de dados para construir um menu desdobrvel onde apaream todos os nomes. A coisa ficaria assim: <HTML> <HEAD> <TITLE>Atualizar1.asp</TITLE> </HEAD> <BODY> <div align="center"> <h1>Atualizar um registro</h1> <br> <% 'Instanciamos e abrimos nosso objeto conexao Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "Minhabase" %> <FORM METHOD="POST" ACTION="atualizar2.asp"> Nombre<br> <% 'Criamos a sentena SQL e a executamos sSQL="Select nome From clientes Order By nome" set RS = Conn.Execute(sSQL) %> <select name="nome"> <% 'Geramos o menu desdobravel Do While not RS.eof%> <option><%=RS("nome")%> <%RS.movenext
17

Loop %> </select> <br> Telefone<br> <INPUT TYPE="TEXT" NAME="telefone"><br> <INPUT TYPE="SUBMIT" value="Atualizar"> </FORM> </div> </BODY> </HTML> A maneira de operar para construir o menu desdobrvel a mesma que para visualizar a tabela. De novo empregamos um loop Do While que nos permite mostrar cada uma das opes. O script de atualizao ser muito parecido ao de insero: <TITLE>Atualizar2.asp</TITLE> </HEAD> <BODY> <% 'Recolhemos os valores do formulrio nome=Request.Form("nome") telefone= Request.Form("telefone") 'Instanciamos e abrimos nosso objeto conexao Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "Minhabase" 'Agora criamos a sentena SQL sSQL="Update Clientes Set telefone='" & telefone & "' Where nome='" & nome & "'" 'Executamos a ordem set RS = Conn.Execute(sSQL) %> <h1><div align="center">Registro Atualizado</div></h1> <div align="center"><a href="lectura.asp">Visualizar o conteudo da base</a></div> <% 'Fechamos o sistema de conexao Conn.Close %> </BODY> </HTML> Nada a comentar a respeito, salvo a estrutura da sentena SQL que neste caso realiza um Update no lugar de um Insert. Aconselhamos, como para o caso precedente imprimir o valor de sSQL de forma a ver como fica a sentena uma vez construda.

Excluir um registro
18

Como apagar um registro. Scripts de exemplo. Outra das operaes fundamentais que podem ser realizadas sobre uma base de dados o apagar um registro. Para faz-lo, SQL nos prope sentenas do tipo Delete. Vejamos com um exemplo, aplicado a nossa agenda. Primeiro, criaremos um menu desdobrvel dinmico como para o caso das atualizaes: <HTML> <HEAD> <TITLE>Apagar1.asp</TITLE> </HEAD> <BODY> <div align="center"> <h1>Apagar um registro</h1> <br> <% 'Instanciamos e abrimos nosso objeto conexao Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "Minhabase" %> <FORM METHOD="POST" ACTION="apagar2.asp"> Nome<br> <% 'Criamos a sentena SQL e a executamos sSQL="Select nome From clientes Order By nome" set RS = conn.execute(sSQL) %> <select name="nome"> <% 'Geramos o menu desdobravel Do While not RS.eof%> <option><%=RS("nome")%> <%RS.movenext Loop %> </select> <br> <INPUT TYPE="SUBMIT" value="Apagar"> </FORM> </div> </BODY> </HTML> O seguinte passo fazer efetiva a operao a partir da execuo da sentena SQL que construmos a partir dos dados do formulrio: <HTML> <HEAD> <TITLE>Apagar2.asp</TITLE> </HEAD> <BODY> <% 'Recolhemos os valores do formulario nome=Request.Form("nome")
19

'Instanciamos e abrimos nosso objeto conexao Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "Minhabase" 'Agora criamos a sentena SQL sSQL="Delete From Clientes Where nome='" & nome & "'" 'Executamos a ordem set RS = Conn.Execute(sSQL) %> <h1><div align="center">Registro Apagado</div></h1> <div align="center"><a href="leitura.asp">Visualizar o conteudo da base</a></div> <% 'Fechamos o sistema de conexao Conn.Close %> </BODY> </HTML>

Crie seu prprio buscador


Propomos um buscador bsico para implementar em seu website, alm de lhe mostrar funes para o tratamento de variveis tipo cadeia que podem ser muito teis para outras aplicaes . Quando trabalhamos com sites baseados em bancos de dados e nossos contedos comeam a crescer, pode ser muito prtico para o navegante poder recorrer a um formulrio no qual possa introduzir palavras-chaves e operadores que lhe ajudem a matizar o elemento que estiver buscando. Este tipo de campo pode ser visto em uma infinidade de pginas e, embora sejam distintos em seu funcionamento em muitos casos, todos tm algo em comum: tratam-se de programas que permitem processar uma varivel do tipo cadeia e transformala em uma ordem de busca para o banco de dados. Neste artigo vamos propor duas funes que, usadas conjuntamente, permitem a criao de uma instruo SQL. O script permite especificar quais sero os campos de busca e dentro de que tabela a realizaremos. Este programa dever ir combinado com outro pequeno script de colheita de dados por formulrio como os vistos em nosso manual de ASP a partir do qual obteramos a varivel cadeia introduzida pelo internauta. Estas duas funes podem ser utilizadas diretamente para cada caso particular a condio de especificar os campos de busca no array campos, especificar a tabela e modificar a funo gerasql para que realize a seleo dos campos que desejarmos. Neste caso, com o objetivo de facilitar a compreenso simplificamos ao mximo as funes que o buscador pode realizar. Na verdade, o buscador s tratar campos usando o operador like. Por outro lado, empregar unicamente como operadores "+" e "-". Todo tipo de modificaes mais ou menos complexas, podem ser introduzidas de forma a melhorar sua versatilidade: -Emprego de parnteses para maior eficcia dos operadores -Eliminao de seqncias repetidas como "++" ou "--"
20

-Eliminao de operadores no princpio e final da cadeia -Utilizao de curingas... Passamos agora a mostrar a lista para poder coment-lo mais detalhadamente a seguir: <% function Tirar(cadeia,campos) dim i dim TirarAux while InStr(cadeia," ") Cadeia=Replace(Cadeia," "," ") wend if len(cadeia)>0 then if InStr(cadeia," ")>0 then Tirar= Tirar(left(cadeia,InStr(cadeia," ")-1),campos) & " OR " & Tirar(right(cadeia,len(cadeia)InStr(cadeia," ")),campos) elseif InStr(cadeia,"+")>0 then Tirar=Tirar(left(cadeia,InStr(cadeia,"+")-1),campos) & " AND "& Tirar(right(cadeia,len(cadeia)InStr(cadeia,"+")),campos) elseif InStr(cadeia,"-")>0 then Tirar=Tirar(left(cadeia,InStr(cadeia,"-")-1),campos) & " AND NOT " & Tirar(right(cadeia,len(cadeia)-InStr(cadeia,"-")),campos) else 'observamos a sentenca TirarAux="" i=1 TirarAux= "( " & campos(i) & " Like '%" & cadeia & "%'" i=i+1 while len(campos(i))>0 TirarAux= TirarAux & " OR " & campos(i) & " Like '%" & cadeia & "%'" i=i+1 wend TirarAux=TirarAux & " )" Tirar=TirarAux end if else tirar="" end if end function function GeraSql(cadeia,tabela,campos) if len(cadeia)>0 then geraSql="Select * from " & tabela & " Where " & Tirar(cadeia,campos) else Response.Write "Nao ha criterios" end if end function dim campos(3) 'o tamanho do array deve superar em um ao numero de campos campos(1)="nome_campo1" campos(2)="nome_campo2" 'para mostrar qual seria o resultado...
21

cadeia="ola carioca+cocacola-nescau" tabla="qualquer" resultado=GeraSql(cadeia,tabela,campos) Response.Write resultado %> Como dissemos, o script consta principalmente de duas funes. A primeira delas, tirar, se encarrega de tratar a cadeia para separar as palavras e, tendo em conta os operadores, construir o fragmento final da sentena SQL. A busca se realiza dentro de uma srie de campos que so definidos ao exterior da funo em forma de array. Nesta funo se empregam diferentes funes de tratamento de variveis de tipo cadeia, as quais explicamos a seguir: InStr(cadeia,subcadeia) Devolve o nmero das posies nas quais uma determinada sub-cadeia aparece na cadeia principal Replace(cadeia,subcadeia1,subcadeia2) Substitui um fragmento (subcadeia1) de uma cadeia por um novo fragmento (subcadeia2) Len(cadeia) Devolve-nos a longitude da cadeia Left(cadeia,numero_caracteres) Seleciona uma determinada quantidade de caracteres de nossa cadeia comeando pela esquerda Right(cadeia,numero_caracteres) Seleciona uma determinada quantidade de caracteres de nossa cadeia comeando pela direita interessante observar a tcnica de recursividade que se utiliza para decompor a cadeia principal em palavras independentes. Esta tcnica se baseia em que funo tirar se chama a si mesma para cada uma das sub-cadeias da cadeia principal. A parte dessa pequena astcia o resto da funo de leitura fcil. A segunda funo, gerasql, se encarrega de acrescentar ao fragmento final tabela e o tipo de seleo que queremos realizar. Neste caso foram selecionados como resultado todos os campos da tabela, mas evidentemente, isto no tem porqu ser assim. A ltima parte do script consiste na especificao dos campos dentro dos quais desejamos realizar nossa busca. A observar que o array h de ter uma longitude maior ao nmero de campos para o correto funcionamento do programa.

22

ndice Programao em ASP


INCIO PROGRAMAO EM ASP............................................................................................................................................1 LOOPS E CONDIES I..................................................................................................................................................................2 LOOPS E CONDIES II.................................................................................................................................................................4 INSTRUO 2......................................................................................................................................................................................4 LOOPS E CONDIES III...............................................................................................................................................................5 DO WHILE NOT CONDIO...............................................................................................................................................................5 OS OBJETOS ASP..............................................................................................................................................................................5 OBJETO REQUEST...........................................................................................................................................................................6 OBJETO RESPONSE.........................................................................................................................................................................8 EXEMPLO SIMPLES DE ASP.......................................................................................................................................................10 RESPONSE.WRITE "TABELA DO " & I%><BR><BR><%..........................................................................................................................11 Cdigo completo.........................................................................................................................................................................11 OBJETO SESSION...........................................................................................................................................................................12 SESSION("NOME DA VARIVEL") = VALOR DA VARIVEL............................................................................................................................12 SESSION.TIMEOUT = N DE MINUTOS QUE QUISERMOS QUE DURE..................................................................................................................13 SESSION.ABANDON...............................................................................................................................................................................13 TRABALHAR COM BASES DE DADOS EM ASP......................................................................................................................13 SELEES EM UMA TABELA.....................................................................................................................................................14 CRIAO DE UM NOVO REGISTRO.........................................................................................................................................15 RESPONSE.WRITE SSQL......................................................................................................................................................................17 ATUALIZAO DE UM REGISTRO EXISTENTE...................................................................................................................17 EXCLUIR UM REGISTRO.............................................................................................................................................................18 CRIE SEU PRPRIO BUSCADOR................................................................................................................................................20 NDICE PROGRAMAO EM ASP.............................................................................................................................................23

23

Você também pode gostar