sexta-feira, 21 de novembro de 2014

Mural de recados com ASP clássico e SQL Server



Atualmente, com o sucesso das “redes sociais”, um mural de recados (ou livro de visitas) é o tipo de página que não pode faltar em seu site, vamos ver como criar um bem simples.
Requisitos importantes: Este tutorial pressupõe que o SQL Server foi instalado no “mixed mode”, ou seja, com login e senha. Normalmente, nestes casos, o login é o usuário “sa”. Também deverá ter sido habilitado o protocolo TCP/IP para acesso ao SQL Server e concedidos diretos de leitura e gravação na pasta onde estará armazenado o banco de dados.


1.           O primeiro passo é criar no banco de dados uma tabela para armazenar as mensagens do mural, com os campos: id, nome, email, mensagem e data de criação do registro; o código para criação dessa tabela segue abaixo (neste tutorial a tabela se chamará tbmural):

CREATE TABLE [dbo].[tbmural](
    [id] [int] IDENTITY(1,1) NOT NULL,
    [nome] [nvarchar](50) NULL,
    [mensagem] [nvarchar](50) NULL,
    [dia] [date] NULL,
 CONSTRAINT [PK_mural] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

ALTER TABLE [dbo].[tbmural] ADD  CONSTRAINT [DF_mural_dia]  DEFAULT (getdate()) FOR [dia]
GO

2.           Insira alguns registros para teste.

3.           Agora verifique se foi corretamente instalado o “driver” ODBC SQL Server Native Client 10.0 em seu computador (no Windows 7, acione Painel de Controle – Ferramentas Administrativas – Fontes de dados ODBC – Fontes de dados de sistema – “Adicionar”). Esse driver será exibido na lista de drivers disponíveis.

4.           Agora abra seu editor, crie uma nova pagina chamada “mural_teste.asp” (sem aspas) e insira o seguinte código p/ conexão ao SQL Server:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<%
Dim conexao
conexao="DRIVER={SQL Server Native Client 10.0};server=XXXX;uid=sa;pwd=XXX;database=XXX"

5.           substitua, acima, os triplos X (“XXX”), pela senha e nome do banco de dados; em “Server” utilize o nome da sua instância do SQL Server (este nome é exibido quando vc acessa o SQL Server pelo “Management Studio”). E agora vamos criar um “Recordset” para testar o acesso; adicione as seguintes linhas:

Set Recordset1 = Server.CreateObject("ADODB.Recordset")
Recordset1.ActiveConnection = conexao
Recordset1.Source = "SELECT * FROM dbo.tbmural order by id desc"
Recordset1.Open()

%>

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>mural ASP com SQL Server</title>
</head>

<body>
Olá, este é o meu primeiro Mural de recados em ASP
<p>
<%
While (NOT Recordset1.EOF)

response.write Recordset1.Fields.Item("nome")
%>
-
<% response.write Recordset1.Fields.Item("mensagem")%>
<br />

<%
Recordset1.MoveNext()
Wend
%>

</body>
</html>

<%
Recordset1.Close()
Set Recordset1 = Nothing
%>

6.           Examine a pg no navegador; as mensagens já inseridas (passo 2) já poderão ser visualizadas normalmente; agora veremos como inserir novas mensagens nessa página.
7.           Após a linha (Recordset1.Open()) acrescente o seguinte código:

dim vnome,vmensagem,vbotao
vnome=Request.Form("nome")
vmensagem=Request.Form("mensagem")
vbotao=Request.Form("MM_Insert")

If (vbotao <> "") Then
If (vnome <> "") Then
Set Recordset2 = Server.CreateObject("ADODB.Recordset")
Recordset2.ActiveConnection = conexao
Recordset2.Source = "insert into dbo.tbmural(nome, mensagem) values('"&vnome&"','"&vmensagem&"')"
Recordset2.Open()
Response.Redirect "mural_teste.asp"
Recordset2.Close()
Set Recordset2 = Nothing
End If
End If

Que será o responsável por inserir no banco de dados as informações digitadas num formulário; para isso, após essas linhas:

<%
Recordset1.MoveNext()
Wend
%>

Insira o seguinte código:

<p>Insira sua mensagem:

<form method="post" action="" name="form1">
    <table align="center">
      <tr valign="baseline">
        <td nowrap align="right">Nome:</td>
        <td><input type="text" name="nome" value="" size="32">
        </td>
      </tr>
      <tr>
        <td nowrap align="right" valign="top">Mensagem:</td>
        <td valign="baseline"><textarea name="mensagem" cols="30" rows="5"></textarea>
        </td>
      </tr>
      <tr valign="baseline">
        <td nowrap align="right">&nbsp;</td>
        <td><input type="submit" value="Insert record">
        </td>
      </tr>
    </table>
    <input type="hidden" name="MM_insert" value="form1">
</form>

ANTES das linhas:

</body>
</html>

<%
Recordset1.Close()
Set Recordset1 = Nothing
%>

É um formulário bem simples; teste no navegador; seu mural já deverá estar funcionando corretamente.