<TITLE>dbnewADO.asp</TITLE>
<body bgcolor="#FFFFFF">
<HTML> 4 <%
on error resume next
aunome=request.querystring("nome")
auano=request.querystring("ano")
auID=request.querystring("ID")
Set Conn = Server.CreateObject("ADODB.Connection")
' DSN usuário senha
conn.open "Estudante","Estudante","magic"
Set RS = Server.CreateObject("ADODB.Recordset")
RS.Open "autores",Conn,3,3
RS.AddNew
RS("AU_ID")=auid
RS("autor") = aunome
RS("ano_nasc")= int(auano)
RS.Update
RS.Close
Conn.Close
If err.number>0 then
response.write "Ocorreram Erros:" & "<P>"
response.write "Número=" & err.number & "<P>"
response.write "Descrição =" & err.description & "<P>"
response.write "Help Context =" & err.helpcontext & "<P>"
response.write "Help Path =" & err.helppath & "<P>"
response.write "Native Error =" & err.nativeerror & "<P>"
response.write "Source =" & err.source & "<P>"
response.write "SQLState =" & err.sqlstate & "<P>"
else
response.write "Nenhum erro apareceu!" & "<P>"
end if
IF conn.errors.count> 0 then
response.write "Ocorreram erros no banco de dados !" & "<P>"
for counter = 0 to conn.errors.count
response.write "Número " & conn.errors(counter).number & "<P>"
response.write "Descrição -> " & conn.errors(counter).description & "<P>"
next
else
response.write "Nenhum erro ocorreu no banco de dados !" & "<P>"
end if 42 %>
43 </BODY></HTML>
1a. Parte
Vamos analisar 3 exemplos de script.
O primeiro exemplo (1a. parte) mostra uma tabela parecida com o exemplo de tabelas que foi visto anteriormente, com exceção dos links que aparecerão nas colunas iniciais. Clicando em um dos links o segundo exemplo será chamado e receberá um ID como parâmetro. No segundo exemplo será permitido alterar as informações e após clicar no botão Submit, o exemplo 3 será chamado para processar as informações e atualizá-las no banco em SQL. Vamos por partes...
Exemplo 1
<html>
<head>
<title>dbfull1.asp</title>
</head>
<body bgcolor="#FFFFFF">
<body bgcolor="#FFFFFF"> 7 <%
' Conexão com o banco de dados
set conntemp=server.createobject("adodb.connection")
conntemp.open "Estudante","Estudante","magic" 11
set rstemp=conntemp.execute("select * from autores where AU_ID<100")
qtde_campos=rstemp.fields.count -1 14 %>
<table border="1">
<tr>
<td valign="top">---</td>
<% 'Preenche a primeira linha com o nome dos campos
for i=0 to qtde_campos %>
20 <td><b><%=rstemp(i).name %></b></td>
21 <% next %> 22 </tr>
<% ' Preenche a tabela com os registros do banco de dados
do while not rstemp.eof %>
<tr>
<td valign="top"><a HREF="dbfull2.asp?str_ID=<%=rstemp("AU_ID")%>">Editar</a></td>
<% for i = 0 to qtde_campos%>
<td valign="top"><% = rstemp.fields(i).value %></td>
<% next %> 30 </tr>
<% rstemp.movenext
loop
conntemp.close%>
</table>
</body>
</html>
Exemplo 2 (2a. Parte)
1 <html><head>
<title>dbfull2.asp</title>
</head>
<body bgcolor="#FFFFFF">
</body>
</html>
<html>
<% ' Conecta com o banco e pega o valor do str_ID permitindo a edição do registro
set conntemp=server.createobject("adodb.connection")
conntemp.open "Estudante","Estudante","magic" 12
ID=request.querystring("str_ID")
sqltemp="select * from autores where AU_ID=" & ID
set rstemp=conntemp.execute(sqltemp)
atual_ID=rstemp("AU_ID")
atual_nome=rstemp("autor")
atual_ano_nasc=rstemp("ano_nasc") 19 %>
<body>
<form name="meu_autor" action="dbfull3.asp" method="GET">
<p>ID: <input type="TEXT" name="id" value="<%=atual_id%>"></p>
<p> Nome do autor: <input type="TEXT" name="nome" value="<%=atual_nome%>"></p>
<p> Ano de Nascimento: <input type="TEXT" name="ano" value="<%=atual_ano_nasc%>"></p>
<p> <input type="SUBMIT"> </p>
</form></body>
Exemplo 3 (3a. Parte)
<HTML><HEAD>
<TITLE>dbfull3.asp</TITLE>
<body bgcolor="#FFFFFF"></HEAD> 4 <%
on error resume next
au_nome=request.querystring("nome")
' Corrige os apóstrofos
au_nome=Replace(au_nome, "'", "''") 9
au_ano=request.querystring("ano")
au_ID=request.querystring("ID")
Set Conn = Server.CreateObject("ADODB.Connection")
conn.open "Estudante","Estudante","magic" 14
SQLstmt = "UPDATE autores "
SQLStmt = SQLstmt & "SET autor='" & au_nome & "',"
SQLstmt = SQLstmt & "ano_nasc=" & au_ano
SQLStmt = SQLStmt & " WHERE AU_ID=" & au_ID
Set RS = Conn.Execute(SQLStmt)
If err.number>0 then
response.write "Ocorreram erros no script:" & "<P>"
response.write "Número=" & err.number & "<P>"
response.write "Descrição =" & err.description & "<P>"
response.write "Help Context =" & err.helpcontext & "<P>"
response.write "Help Path =" & err.helppath & "<P>"
response.write "Native Error =" & err.nativeerror & "<P>"
response.write "Source =" & err.source & "<P>"
response.write "SQLState =" & err.sqlstate & "<P>"
else
response.write "Nenhum problema aconteceu!" & "<P>"
end if
IF conn.errors.count> 0 then
response.write "Ocorreram erros com o banco de dados" & "<P>"
response.write SQLstmt & "<P>"
for counter = 0 to conn.errors.count
response.write "Número do erro:" & conn.errors(counter).number & "<P>"
response.write "Descrição --> " & conn.errors(counter).description & "<P>"
next
else
response.write "Parece que tudo está ok. O Autor foi atualizado!" & "<P>"
end if
Conn.Close 43 %>
44 </BODY></HTML>
Esta página demonstra a funcionalidade de se atualizar registros em um banco de dados através de uma consulta SQL. Supomos que o arquivo ASP seja chamado da seguinte forma:
dbupdate.asp?nome=Alexandre&id=9000&ano=1901
O script abaixo faz uma atualização no sql através do statement Update. É aconselhável que todas as inclusões, alterações e exclusões no sql seja feita através de Stored Procedures. Assim, fica mais fácil controlar permissões de execução e segurança ainda maior com relação aos códigos.
<TITLE>dbupdate.asp</TITLE>
<body bgcolor="#FFFFFF">
<HTML> 4 <%
on error resume next
aunome=request.querystring("nome")
auano=request.querystring("ano")
auID=request.querystring("ID")
Set Conn = Server.CreateObject("ADODB.Connection")
conn.open "Estudante","Estudante","magic"
SQLstmt = "UPDATE autores "
SQLStmt = SQLstmt & "SET autor='" & aunome & "',"
SQLstmt = SQLstmt & "ano_nasc=" & auano
SQLStmt = SQLStmt & " WHERE AU_ID=" & auid
Set RS = Conn.Execute(SQLStmt)
If err.number>0 then
response.write "Ocorreram erros no Script:" & "<P>"
response.write "Número =" & err.number & "<P>"
response.write "Descrição =" & err.description & "<P>"
response.write "Help Context =" & err.helpcontext & "<P>"
response.write "Help Path =" & err.helppath & "<P>"
response.write "Native Error =" & err.nativeerror & "<P>"
response.write "Source =" & err.source & "<P>"
response.write "SQLState =" & err.sqlstate & "<P>"
else
response.write "Nenhum problema aconteceu!" & "<P>"
end if
IF conn.errors.count> 0 then
response.write "Ocorreram erros com o banco de dados" & "<P>"
for counter = 0 to conn.errors.count
response.write "Número " & conn.errors(counter).number & "<P>"
response.write "Descrição -> " & conn.errors(counter).description & "<P>"
next
else
response.write "Tudo parece ok. O Autor foi atualizado!" & "<P>"
end if
Conn.Close 39 %>
40 </BODY></HTML>
COMANDOS AVANÇADOS
Para simplificar programas Para simplificar programas
Para variar uma informação toda vez que alguém visitar a página. Explica algumas funções básicas de manipulação de strings.
Para tratar alguns inconvenientes Para ajudar na solução de problemas
O exemplo abaixo é de uma função que recebe um número (mês) e converte para o valor em extenso (nome). A declaração de funções segue o esquema abaixo. Como dissemos anteriormente, é bom ter um arquivo Include com todas as funções usadas por um determinado sistema ou página, semelhante aos módulos do VB.
<%functions.asp
Public Function MesExtenso (mes)
Select Case mes
Case 1
MesExtenso = "Janeiro"
Case 2
MesExtenso = "Fevereiro"
Case 3
MesExtenso = "Março"
Case 4
MesExtenso = "Abril"
Case 5
MesExtenso = "Maio"
Case 6
MesExtenso = "Junho"
Case 7
MesExtenso = "Julho"
Case 8
MesExtenso = "Agosto"
Case 9
MesExtenso = "Setembro"
Case 10
MesExtenso = "Outubro"
Case 11
MesExtenso = "Novembro"
Case 12
MesExtenso = "Dezembro"
End Select
End Function
Subrotinas servem basicamente para poupar a repetição de tarefas. O exemplo abaixo ilustra uma simples subrotina para formatar uma string. Lembrando que as subrotinas também podem ficar nos arquivos tipo Include.
<%response.buffer=false%>
<html><head>
<title>subs.asp</title></head>
<body bgcolor="#FFFFFF"> 5 <br><br>
Fazer uma conexão com o banco de dados de contratado, por exemplo.
Montar um recordset com o nº do contratado e outras informações quaisquer.
Dim NroContratado
Nrocontratado = RS("NroContratado")
ZerosAEsquerda NroContratado, 8
Response.write NroContratado 12
13 ' Acrescenta zeros a esquerda da string até um tamanho máximo para a string 14 '
Public Sub ZerosAEsquerda (ByRef strString, intTamString)
If IsNull(strString) Then
strString = String(intTamString, "0")
Else
strString = String(intTamString - Len(strString), "0") & strString
End If
End Sub
</body></html>
Esta página demonstra a funcionalidade do componente Content Rotator. O script é simples.
<HTML>
<HEAD>
<TITLE>cr.asp</TITLE>
</HEAD>
<body bgcolor="#FFFFFF"> 6 <%
Set Dica = Server.CreateObject("IISSample.ContentRotator")
response.write "Este é o meu conselho:<P>"
response.write Dica.ChooseContent("/dicas/dicas.txt") 10 %>
</BODY>
</HTML>
O arquivo Dicas.txt pode se parecer com o seguinte: 1 %%#3
2 Cante sempre que estiver tomando banho. 3 %%#3
4 <font size="2" face="ARIAL,HELVETICA">Planeje o seu dia logo no início da manhã.</font>
5 %%#3
6 <font size="4" face="ARIAL,HELVETICA">Tenha pelo menos 8 horas de sono por dia!</font>
As funções para String são muito úteis para passar dados para ASCII, formatar saídas complexas e entradas para formulários, por exemplo. O seguinte script é só uma amostra da função MID. A maioria das funções de formatação de string utilizadas no VB podem ser usadas aqui no ASP. Mais abaixo existem alguns exemplos.
<title>strings.asp</title>
<body bgcolor="#FFFFFF">
<% Dim teste
teste = "Hello. How are you today Student."5 response.write ("teste =" & teste)
6 response.write ("mid(teste,1,5)=" & mid(teste,1,5)) 7 %>
8 </body>
Outras funções do VBScript
Asc, AscB, AscW, Chr, ChrB, ChrW, Filter, Instr, InStrB, InstrRev, Join, Len, LenB, LCase, UCase, Left, LeftB, Mid, MidB, Right, RightB, Replace, Space, Split, StrComp, String, StrReverse, LTrim, RTrim, Trim
Esta página demonstra uma rotina básica para tentar interpretar alguns erros que podem ser de script ou de banco de dados. Aconselho sempre usar esse tipo de rotina em todos os arquivos ASP que fazem acesso a Banco de Dados. E espero que ele nunca seja executado em seus programas...
<% on error resume next
...
Set Conn = Server.CreateObject("ADODB.Connection")
...
SQLstmt = "..."Set RS = Conn.Execute(SQLStmt) If err.number>0 then%>
Ocorreram Erros no Script:<P>
Número do erro =<%=err.number%><P> Descrição do erro =<%=err.description%><P> Help Context =<%=err.helpcontext%><P>" Help Path =<%=err.helppath%><P>
Native Error =<%=err.nativeerror%><P> Source =<%=err.source%><P> SQLState =<%=err.sqlstate%><P>
<%else%>
Nenhum problema aconteceu!<p>
<%end if
IF conn.errors.count> 0 then%>
Ocorreram erros com o Banco de Dados<P><%=SQLstmt%><P>
<%for counter = 0 to conn.errors.count%>
Erro #<%=conn.errors(counter).number%><P> Descrição -><%=conn.errors(counter).description%><p>
<%next else%>
Nenhum erro com o Banco de Dados !
<%end if Conn.Close%>
O script abaixo é uma forma geral de debugar problemas.
<TITLE>dbg.asp</TITLE>
<body bgcolor="#FFFFFF">
<HTML> 4 <%
5 Response.Write("<P>VARIÁVEIS DO FORMULÁRIO:<br>") 6 Response.Write("-------------------------------<br>")
For Each Key in Request.Form
Response.Write( Key & " = " & Request.Form(Key) & "<br>")
Next 10
11 Response.Write("<P>VARIÁVEIS QUERY STRING:<br>") 12 Response.Write("------------------------------<br>")
For Each Key in Request.QueryString
Response.Write( Key & " = " & Request.QueryString(Key) & "<br>")
Next 16
17 Response.Write("<P>VARIÁVEIS TIPO COOKIE:<br>") 18 Response.Write("-----------------------------<br>")
For Each Key in Request.Cookies
Response.Write( Key & " = " & Request.Cookies(Key) & "<br>")
Next 22
23 Response.Write("<P>VARIÁVEIS DE SERVIDOR:<br>") 24 Response.Write("-----------------------------<br>")
For Each Key in Request.ServerVariables
Response.Write( Key & " = " & Request.ServerVariables(Key) & "<br>")
Next 28 %>
</BODY>
</HTML>
GERENCIAMENTO DE SESSÕES ASP
Sessões ASP são recursos muito poderosos do ASP. Primeiramente descreveremos o que é e depois como usá-las.
Provavelmente a primeira questão.
Somente se o usuário responder essa questão todas as outras páginas subsequentes poderão ser vistas.
Salvar, Mostrar e Deletar cookies.
Sessões são uma das facilidades do ASP. Quando alguém visita uma página no seu site, o ASP cria uma sessão e imediatamente pode diferenciar aquele usuário de todos os outros que estão no site. Nada armazenado na sessão daquele usuário pode ser recuperado ou manipulado por uma página e pelas próximas páginas que ele visitar. Algumas coisas devem ser ressaltadas:
Os dados da sessão são armazenados no servidor e não em cookies. Nenhum usuário pode examinar um cookie e determinar o conteúdo de qualquer variável de sessão.
Um cookie é usado para coordenar o session ID do usuário. Novamente, o cookie não contém nenhum dado, somente o session ID. Isto significa que se o usuário não aceita cookies, você não poderá usar as sessões como descrito nesse tutorial.
Se você realmente precisa usar sessões sem o browser cliente permitir os cookies, instale um filtro ISAPI chamado "Cookie Munger" que resolverá o seu problema, mas a performance caíra bastante. Este filtro está disponível no endereço: http://backoffice.microsoft.com/downtrial/moreinfo/iissamples.asp
Os formulários abaixo estão usando o método GET no envio das informações. Como vimos anteriormente para acessar uma informação enviada por formulário com método GET, usamos: request.querystring("nome_do_campo").
Quando usamos o método POST, usamos: request.form("nome_do_campo")
Exemplo 1: Formulário padrão de Usuário e Senha
<html>
<head>
<title>sessiontest01.asp</title>
</head>
<body bgcolor="#FFFFFF">
</body>
</html>
<html> 9
<body>
<form name="meu_autor" action="sessiontest02.asp"
method="GET">
<p>Seu Nome: <input type="TEXT" name="seu_nome"></p>
<p> Sua Senha: <input type="TEXT" name="sua_senha"></p>
<p> <input type="submit"> </p>
</form>
</body>
Exemplo 2: Armazena um Usuário e Senha na sessão
<html>
<head>
<title>sessiontest02.asp</title>
</head>
<body bgcolor="#FFFFFF">
<% ' Programa ASP que armazena um usuário e uma senha na sessão
senha_usuario=request.querystring("sua_senha")
nome_usuario=request.querystring("seu_nome")
response.write "Fala " & nome_usuario & "<P>"
select case senha_usuario 11 case "666"
response.write "Sua senha é o número da besta"
case else
response.write "Senha não reconhecida!"
end select
session("who")=nome_usuario
session("securitypassword")=senha_usuario 18 %>
</body>
</html>
Exemplo 3: Lê as variáveis da sessão
<html>
<head>
<title>sessiontest03.asp</title>
</head>
<body bgcolor="#FFFFFF"> 6 <%
' Programa ASP que lê variáveis da sessão
response.write "Fala " & session("who") & ".<P>Obrigado por passar aqui.<P>"
If session("securitypassword")="666" then
response.write "Encontro secreto na sala do tio Bill"
else
response.write "A sala do tio Bill está em reformas. Os encontros foram cancelados."
end if 14 %>
</body>
</html>
Formulário que recebe cookies do usuário e repassa para armazenamento. 1 <%
2 response.buffer=true 3 %>
<html><head>
<TITLE>cookiesform.asp</TITLE></head>
<body bgcolor="#FFFFFF"> 7 <%
un=Request.Cookies("Pessoa")("ult_nome")
pn=Request.Cookies("Pessoa")("primeiro_nome")
es=Request.Cookies("Pessoa")("estado") 11 %>
<Form action = "cookiesformrespond.asp">
Formulário com Cookies<p>
Por favor, entre o seu primeiro nome<p>
<Input NAME="primeironome" size ="40" value=<%=pn%>> 16 <p>
Por favor entre o seu último nome<p>
<Input NAME="ultimonome" size ="40" value=<%=un%>> 19 <p>
Por favor entre a abreviação do seu Estado<p>
<Input NAME="estado" MaxLength="2" value=<%=es%>>
<Input type=submit></form>
</body></html>
Comentários
Postar um comentário