1 O HTML em 12 passos ASP: Expressões e operadores Funções Objectos Bases de Dados Construção de um website em ASP Avaliação 2 1
HTML versus ASP (2 horas) Conhecer o HTML em 12 passos Extensões, interpretadores Expressões e operadores (3 horas) RESPONSE/REQUEST Estruturas de controlo e decisão Variáveis Operadores Funções (2 horas) do ASP pessoais 3 Objectos (4 horas) Response, request, server, session, application Variáveis globais e de sessão O ficheiro GLOBAL.ASA Bases de Dados (4 horas) SQL Conexão Construção de um website em ASP (9 horas) Avaliação da acção (1 hora) 4 2
Noções de Programação em: HTML Hyper Text Markup Language Visual Basic S.Q.L. Structured Query Language 5 Scripts executados no servidor, produzindo páginas dinâmicas e interactivas. Os Scripts podem ser activados através da cláusula submit de um formulário. Independência do tipo de navegador: Internet Explorer Netscape Navigator Utilização de scripts em VBScript ou JavaScript. Acesso a base de dados via ODBC e ADO (ActiveX Data Objects). Criação de sessões (persistência da informação no servidor). 6 3
7 8 4
Microsoft Internet Information Server - IIS (Windows NT Server / 2000 / XP Pro) (ASP 3.0 apenas a partir do Windows 2000) Microsoft Personal Web Server PWS (Windows 95 / 98 / ME) ArrowHead ASP Server 0.2 for Linux (Linux) por exemplo 9 10 5
11 12 6
13 14 7
15 16 8
17 18 9
19 20 10
21 Macromedia Homesite+ Macromedia Dreamweaver MX Bloco de Notas (!) Microsoft Frontpage 22 11
23 O código HTML que aparece no browser fica sempre entre duas Tags Tags são os comandos que estão entre os símbolos <> <HTML> <BODY>. </BODY> </HTML> 24 12
Embora não seja obrigatório para todas, as Tags que começam com <NOMEDATAG> têm de acabar com uma barra </NOMEDATAG>. 25 Para enviar conteúdo para o browser de maneira a ser visível pelo utilizador, basta escrever: <HTML> <BODY> ISTO É UM TESTE </BODY> </HTML> 26 13
Para se mudar os parâmetros dos textos escritos é usada a Tag <FONT>, onde pode mudar o tamanho das letras, a cor e até mesmo o tipo de letra: <HTML> <BODY> <FONT FACE= ARIAL COLOR= GREEN SIZE= 5 > ISTO É UM TESTE </FONT> </BODY> </HTML> 27 Para simular um parágrafo existe a Tag <P> <HTML> <BODY> <P><FONT FACE= ARIAL COLOR= GREEN SIZE= 5 > ISTO É UM TESTE </FONT></P> E ISTO JÁ É OUTRO TESTE </BODY> </HTML> 28 14
A mudança de linha é feita com <BR> que funciona como que um Enter no mesmo parágrafo: <HTML> <BODY> <P><FONT FACE= ARIAL COLOR= GREEN SIZE= 5 > ISTO É UM TESTE </FONT></P> E ISTO<BR> JÁ É<BR> OUTRO TESTE<BR> </BODY> </HTML> 29 Para se criar tabelas usamos <TABLE></TABLE>, onde <TR></TR> simbolizam as linhas, e <TD></TD> as colunas dessa mesma linha: <HTML> <BODY> <TABLE BORDER= 1 > <TR> <TD>ESTA É A PRIMEIRA LINHA, PRIMEIRA COLUNA</TD> <TD> ESTA É A PRIMEIRA LINHA, SEGUNDA COLUNA </TD> </TR> <TR> <TD> ESTA É A SEGUNDA LINHA, PRIMEIRA COLUNA </TD> <TD> ESTA É A SEGUNDA LINHA, SEGUNDA COLUNA </TD> </TR> </TABLE> </BODY> </HTML> 30 15
Quando queremos introduzir comentários ao código usamos <! >. Dá muito jeito quando o código HTML é muito extenso, comentando assim o que está criado em vários pontos do código: <HTML> <BODY> <! ISTO QUE AQUI ESTÁ ESCRITO NÃO APARECE NO BROWSER > ISTO SIM, JÁ APARECE NO BROWSER </BODY> </HTML> 31 Quando é necessário um script, para funcionar do lado do cliente tipo JavaScript ou VBScript usa-se a Tag <SCRIPT LANGUAGE=. ></SCRIPT> <HTML> <BODY> <SCRIPT LANGUAGE= JAVASCRIPT >. </SCRIPT> </BODY> </HTML> 32 16
Recebemos dados do utilizador através de formulários. Estes são estruturados da seguinte maneira: <HTML> <BODY> <FORM NAME= nomedoformulario METHOD= POST > O seu nome:<input NAME= nome ><BR> O seu telefone:<input NAME= email ><BR> <INPUT TYPE= SUBMIT > </FORM> </BODY> </HTML> 33 Para ter um texto que vai ter a outra página, tem de fazer o link com a Tag <A> </A> <HTML> <BODY> <A HREF= outrapagina.html >Clique aqui!</a> </BODY> </HTML> 34 17
Para mostrar uma imagem no browser use a Tag <IMG> <HTML> <BODY> <IMG SRC= nomedaimagem.gif > </BODY> </HTML> 35 36 18
São os identificadores de onde começa e acaba o código ASP que foi construído. <hmtl> <hmtl> <body> <body> <%response.write A A minha minha primeira página página em em ASP! %> </body> </html> O objecto response é utilizado para devolver algo para o cliente (resposta). O parâmetro.write permite fazer a saída de valores/dados no browser através do objecto response. 37 O valor de uma variável dentro do HTML <hmtl> <hmtl> <body> <body> <% <% nome nome = Arménio %> %> <font <font size=2 size=2 color= #FF0000 >O meu meu nome nome é <%=nome%></font> </body> </html> 38 19
A utilização de uma variável <hmtl> <hmtl> <body> <body> <% <% nome nome = Arménio response.write O O meu meu nome nome é & nome nome %> %> </body> </html> 39 Cálculos com variáveis <hmtl> <hmtl> <body> <body> <% <% a=10 a=10 b = 20 20 response.write a + b %> %> </body> </html> 40 20
Os comentários dentro do código ASP são antecedidos de uma plica ( ) <hmtl> <hmtl> <body> <body> <% <% Isto Isto é um um comentário %> %> </body> </html> 41 <hmtl> <hmtl> <body> <body> <% <% a = 10 10 b = 15 15 if ifa>b a>bthen response.write A A é maior maior que que B B else else if ifa<b a<bthen response.write B B é maior maior que que A A else else response.write A A é igual igual a B B end end if if end end if if %> %> </body> </html> 42 21
<hmtl> <hmtl> <body> <body> <% <% dia dia = 1 select select case casedia dia case case1 response.write Domingo case case2 response.write Segunda ( ) ( ) case case else else response.write Desconhecido end end select select %> %> </body> </html> 43 <hmtl> <hmtl> <body> <body> <% <% for fori=1 i=1toto10 10 response.write Número= & i i & <br> <br> next next %> %> </body> </html> 44 22
<hmtl> <hmtl> <body> <body> <% <% conta conta = 0 do do while whileconta<10 response.write Conta= & conta conta & <br> <br> conta conta = conta conta + 1 loop loop %> %> </body> </html> 45 A declaração não é obrigatória Não existem tipos de dados. Todas as variáveis são do tipo Variant A declaração consiste apenas em: dim <nomevariável> A declaração de arrays consiste em: dim <nomevariável>(<dimensao>) dim <nomevariável>(<dimensao1>,<dimensao2>) 46 23
Variáveis Usuais - Usadas no momento, e que, como são dinâmicas, podem ser criadas a qualquer altura sem inicialização das mesmas Variáveis de Aplicação (Application) - usadas como globais ao site pois são comuns a todos os utilizadores. Existem a partir do momento que o servidor ou serviço é inicializado. Variáveis de Sessão (Session) - usadas para acompanhar toda uma sessão de acesso por parte de um utilizador. Só esse utilizador tem acesso a essas variáveis de sessão. Cada utilizador tem um grupo próprio de variáveis de sessão. Na prática apenas existem enquanto o utilizador estiver em sessão. 47 Operador = < > <= >= <> ^ + - * / \ MOD Descrição Igual Menor Maior Menor ou igual Maior ou igual Diferente Expoente Adição ou Concatenação Subtracção Multiplicação Divisão Divisão Inteira Resto da Divisão Inteira 48 24
49 Função Abs() Asc() Atn() CBool() CByte() CCur() CDate() CDbl() Chr() CInt() CLng() Cos() CreateObject() Csng() CStr() Date() Converte um valor (do tipo não Long) para o tipo Long Devolve o coseno de um ângulo Cria uma referência a um objecto externo Devolve a Data corrente no servidor Internet Descrição Esta função serve para devolver números absolutos, sejam eles de que tipo forem. Devolve o número ASCII de um carácter Serve para calcular o arco tangente de um valor Retorna True ou False: False se a expressão for falsa, caso contrário True Transforma qualquer valor (do tipo não Byte) para o tipo Byte Idêntico a CByte(), mas neste caso para o tipo de moeda usado. Converte uma expressão que tende para uma Data, numa Data validada, não sendo necessário usar IsDate() Converte um valor (do tipo não Double) para o tipo Double Ao contrário da função Asc(), esta converte os valores ASCII para o carácter correspondente Converte um valor (do tipo não Intenger) para o tipo Integer Converte um valor (do tipo não Single) para o tipo Single Converte um valor (do tipo não String) para o tipo String Página 1 de 6 50 25
Função DateAdd() DateDiff() DatePart() DateSerial() DateValue() Day() Exp() Filter() Devolve uma data válida daquela que é pedida Devolve o dia do mês de uma data Devolve a exponencial de um valor Descrição Esta função serve para o programador obter uma data posterior ou anterior àquela que pretende usar para cálculo. A expressão usa 3 campos, o primeiro para introduzirmos o campo de data por onde queremos calcular a diferença, o segundo campo para o valor numérico dessa diferença, e no final a data de início. O campo do carácter que define o tipo de diferença aceita as seguintes opções: h horas n minutos s segundos yyyy anos q quarto anual m meses do ano y dias do ano d dias w dias da semana ww semanas do ano Devolve a diferença entre duas datas escolhendo um dos campos de comparação explicados em DateAdd() É dada uma certa data e obtemos em que altura do ano acontece usando os valores de campo de DateAdd() Devolve uma data para especificados ano, mês e dia Pesquisa um array, para procura de um valor ou expressão Página 2 de 6 51 Função Fix() FormatCurrency() FormatDateTime() FormatNumber() FormatPercent() GetObject() Hex() Hour() InStr() InStrRev() IsArray() IsDate() IsEmpty() IsNull() IsNumeric() IsObject() Join() Devolve o inteiro de um qualquer valor Descrição Transforma um valor normal numérico para valor monetário. Funciona como FormatCurrency() mas para datas Formata um número da maneira que nos convém Devolve uma percentagem do universo que o programador pretende Devolve a referência a um objecto Transforma um valor para resultado hexadecimal Devolve a hora de uma expressão Devolve a posição de uma string dentro de outra a contar do início Devolve a posição de uma string dentro de outra a contar do fim Devolve True ou False em relação a uma variável, validando-a no caso de ser ou não um array Devolve True ou False em relação a uma string, validando-a no caso de esta ser do tipo Date ou não Valida uma variável, para ver se a mesma está ou não vazia Valida uma variável para ver se a mesma é Null ou não Valida uma string/valor para ver se o mesmo é numérico ou não Valida um Objecto, certificando-se se o mesmo o é ou não Junta todas as variáveis dentro de um array, criando uma só. Página 3 de 6 52 26
Função LBound() LCase() Left() Len() Log() LTrim() Mid() Minute() Month() MonthDate() Now() Oct() Replace() RGB() Right() Rnd() Round() Second() Devolve o menor valor da dimensão de um array Devolve uma string em lower case Devolve o logaritmo de um dado número Devolve uma string sem espaços do lado esquerdo Devolve o minuto de uma data/hora Devolve o nome do mês (por extensão) Devolve a data e hora corrente Devolve o valor octal de um dado número Altera certo caracter/ string por outro dado Retorna um valor aleatório Faz arredondamento a valores numéricos Devolve os segundos de uma dada hora Descrição Devolve um certo número de caracteres a contar do lado esquerdo da string Devolve o tamanho de uma string Serve para termos um número dado de caracteres de uma string, a partir de uma dada posição Devolve o valor correspondente ao mês de uma dada data Devolve um valor representativo de uma cor. A expressão é estruturada por RGB(vermelho,verde, azul) Funciona como a função Left() mas a contar da direita Página 4 de 6 53 Função Sgn() Sin() Space() Split() Sqr() StrComp() StrReverse() String() Tan() Time() TimeSerial() TimeValue() TypeName() UBound() Ucase() Devolve o sinal de um valor(+=1, -=-1, 0=0) Devolve o seno de um ângulo indicado Introduz um dado número de espaços numa string Devolve a raiz quadrada de um valor Devolve uma string dada, invertendo-a Devolve a tangente de um determinado número Devolve a hora do sistema Devolve uma hora válida daquela que é pedida Devolve o tipo de variável que estamos a usar Devolve o maior valor da dimensão de um array Devolve uma string em upper case Descrição Divide uma string num array, escolhendo o critério de separação Compara duas strings, devolvendo um valor, no que respeita se são iguais ou não. A estrutura desta função é StrComp(var1,var2,tipo) Var1 e var2 são duas strings à escolha, o tipo pode ser definido por 0 (comparação entre binários) ou 1 (comparação entre textos) Devolve repetidamente um caracter escolhido um número de vezes definido Devolve uma hora para hora, minuto e segundos especificados Página 5 de 6 54 27
Função VarType() Descrição Parecido com TypeName(), mas devolve um valor correspondente aos dados da variável a validar. Os números possíveis de resposta são: 0 Vazio 1 Null 2 Integer 3 Long 4 Single 5 Double 6 Currency 7 Date 8 String 9 Object 10 Error 11 Boolean 12 Variant 13 Data Access Object (DAO) 17 Byte 8192 Array WeekDay() WeekDayName() Year() Devolve o dia da semana de uma dada data Devolve por extenso o dia da semana de uma dada data Devolve o ano de uma dada data Página 6 de 6 55 Função exemplo para calcular quantos dias faltam para 2005 <% <% function function a2005(data) a2005(data) Início Início da da Função Função If If IsDate(data) IsDate(data) then then Se Se for for uma uma data data for for válida válida então então envia envia a a diferença diferença entre entre datas datas a2005 a2005 = = DateDiff( d,data, Janeiro DateDiff( d,data, Janeiro 1, 1, 2005 ) 2005 ) else else Caso Caso contrário contrário a2005 a2005 = = Data Data inválida... inválida... Envia Envia a a data data como como inválida, inválida, em em forma forma de de informação informação end end if if Final Final do do if if end end function function Final Final da da Função Função response.write response.write Hoje Hoje é é & & now() now() & & <br><br> <br><br> response.write response.write Faltam Faltam & & a2005(now()) a2005(now()) & & dias dias até até ao ao ano ano 2005. 2005. %> %> Escreve Escreve a a data data corrente corrente Escreve Escreve o o resultado resultado 56 28
rotinas.stm <% <% function function a2005(data) a2005(data) Início Início da da Função Função If If IsDate(data) IsDate(data) then then Se Se for for uma uma data data for for válida válida então então envia envia a a diferença diferença entre entre datas datas a2005 a2005 = = DateDiff( d,data, Janeiro DateDiff( d,data, Janeiro 1, 1, 2005 ) 2005 ) else else Caso Caso contrário contrário a2005 a2005 = = Data Data inválida... inválida... Envia Envia a a data data como como inválida, inválida, em em forma forma de de informação informação end end if if Final Final do do if if end end function function Final Final da da Função Função %> %> 57 default.asp <!--#include <!--#include virtual virtual file= rotinas.stm --> file= rotinas.stm --> <% <% response.write response.write Hoje Hoje é é & now() now() & & <br><br> <br><br> response.write response.write Faltam Faltam & a2005(now()) a2005(now()) & & dias dias até até ao ao ano ano 2005. 2005. %> %> Escreve Escreve a a data data corrente corrente Escreve Escreve o o resultado resultado 58 29
59 Response Request Server Session Application 60 30
Método.write.redirect.cachecontrol.expires.expireabsolute Função Enviar informação para o browser Redireccionar o utilizador para outra página. Usado normalmente para controlo de acessos e utilizadores Controlar se o browser pode ou não fazer cache da página Definir o tempo que uma página ficará activa e deixará de estar disponível. Define ao fim de quanto tempo expirará Idêntico ao.expires mas controlado através de uma data 61 Método Função.querystring Obter valores enviados no link pela página anterior (ex: www.esenvis.net?codprof=560) ou por um formulário com o método GET.form Obter valores enviados da página anterior por um formulário com o método POST 62 31
Método.HTMLencode.URLencode.createobject.mappath Função Formata a informação que o utilizador insere. Esta formatação é muito importante devido a alguns símbolos serem reconhecidos pelo HTML, e por esse motivo o layout pode não ter o aspecto planeado Parecido com o HTMLEncode, mas formata a string de maneira a ser válida para usar na linha de endereço dos browsers Maneira como iremos aceder a objectos exteriores, assim como componentes criados por nós ou outros. Os componentes de ASP são ficheiros de extensão DLL, especiais para as ASPs, possíveis com o Visual Basic ou o Visual C++ É com este método com que trabalharemos os nossos ficheiros localmente (no servidor) 63 É uma variável global só visível pelo cliente que está nessa sessão. Método Função.timeout.sessionID As sessões do servidor têm um limite temporal, ao fim do qual toda a informação contida nas sessions desaparecem. Desta maneira poderemos controlar o tempo que as sessões estão activas Dá-nos o número da sessão do cliente corrente. São uma espécie de impressão digital das sessões..abandon Força a finalização das sessões. 64 32
É uma variável global, comum e visível por todos os utilizadores, ao contrário das sessions que são variáveis do tipo global, mas só visíveis pelo cliente que está nessa sessão. 65 66 33
<% <% application.lock application( Teste ) = Uma Uma variável comum comum a todos todos os os utilizadores application.unlock response.write A A variável Application( Teste ) é > response.write application( Teste2 ) & < < %> %> 67 <SCRIPT LANGUAGE=VBScript RUNAT=Server> <SCRIPT LANGUAGE=VBScript RUNAT=Server> sub Application_OnStart sub Application_OnStart ( ) ( ) end sub end sub </SCRIPT> </SCRIPT> <SCRIPT LANGUAGE=VBScript RUNAT=Server> <SCRIPT LANGUAGE=VBScript RUNAT=Server> sub Application_OnEnd sub Application_OnEnd ( ) ( ) end sub end sub </SCRIPT> </SCRIPT> <SCRIPT LANGUAGE=VBScript RUNAT=Server> <SCRIPT LANGUAGE=VBScript RUNAT=Server> sub Session_OnStart sub Session_OnStart ( ) ( ) end sub end sub </SCRIPT> </SCRIPT> <SCRIPT LANGUAGE=VBScript RUNAT=Server> <SCRIPT LANGUAGE=VBScript RUNAT=Server> sub Session_OnEnd sub Session_OnEnd ( ) ( ) end sub end sub </SCRIPT> </SCRIPT> 68 34
69 70 35
SELECT <lista_de_campos> FROM <lista_de_tabelas> WHERE <critério> ORDER BY <lista_de_campos> [ASC DESC] 71 SELECT CodProf, Nome, Status FROM Professores WHERE Status=1 ORDER BY Nome 72 36
INSERT INTO <tabela>(<lista_de_campos>) VALUES (<lista_de_campos>) 73 INSERT INTO Professores(CodProf, Nome, Status) VALUES (1313, Felisberto Atanásio,1) 74 37
UPDATE <tabela> SET <campo1> = <valor1> SET <campo2> = <valor2>... SET <campon> = <valorn> WHERE <critério> 75 UPDATE Professores SET Nome = Felisberto Manuel Atanásio WHERE CodProf=1313 76 38
DELETE <lista_de_campos> FROM <tabela> WHERE <critério> 77 DELETE * FROM Professores WHERE CodProf=1313 78 39
79 <% <% dim dimligacao set setligacao = server.createobject("adodb.connection") ligacao.open ligacao.open "DRIVER={Microsoft "DRIVER={MicrosoftAccess Driver Driver (*.mdb)};dbq=c:\basededados\base.mdb;" %> %> 80 40
<% <% ligacao.close ligacao.close set setligacao = nothing nothing %> %> 81 <% <% dim dimrsrs sqltext sqltext = "SELECT "SELECT** "" & "FROM "FROM Professores Professores "" & "WHERE "WHERE Nome= Felisberto Nome= FelisbertoAtanásio set setrs rs = server.createobject("adodb.recordset") rs.open rs.opensqltext, sqltext, ligacao, ligacao, 1, 1, 2 %> %> 82 41
<% <% rs.close rs.close set setrs rs = nothing nothing %> %> 83 <% <% sqltext sqltext = "DELETE "DELETE* *"_"_ & "FROM "FROM Professores Professores "_ "_ & "WHERE "WHERE Nome= Felisberto Nome= FelisbertoAtanásio " ligacao.execute ligacao.executesqltext %> %> 84 42
<% <% response.write response.writers( CodProf ) rs( CodProf ) & & & rs( Nome ) rs( Nome ) & & & rs( Status ) rs( Status ) %> %> 85 ASPArena - ASP e Tecnologias Afins - www.asparena.eti.br KRIEGEL, Alex and TRUKHNOV, Boris M., SQL Bible, John Wiley & Sons, 2003 VIEIRA, João, Programação Web com Active Server Pages, Edições Centro Atlântico, 2000 PETROUTSOS, Evangelos, ASP 3 Instant Reference, Sybex, 2000 ASP Free.com www.aspfree.com brasp.net - Portal para Tecnologia ASP - http://www.brasp.net 86 43
87 88 44
89 90 45
91 92 46
93 94 47
95 96 48
97 98 49
99 100 50
101 51