ASP.NET - Criando um formulário de comentário com SQL Server
Neste artigo vamos criar uma aplicação web que permite a postagem e a visualização de comentários do usuário em tempo real.
Iremos criar um formulário de comentário no web site que permitirá que os visitantes possam postar seus comentários e opiniões de maneira rápida e simples. Para implementar esta funcionalidade irei usar os controles FormView, GridView e SqlDataSource e o banco de dados SQL Server 2005 Express .
Para criar o web Site eu vou usar o Visual Web Developer 2008 Express Edition - VWD 2008.
Abra o VWD2008 e no menu File selecione a opção New web site e a seguir faça o seguinte:
Vamos criar o banco de dados SQL Server 2005 usado neste projeto.
A seguir a partir do menu WebSite selecione Add New Item e selecione o template SQL Server DataBase informando o nome Cadastro.mdf e clicando em Add;
Na caixa de diálogo apresentada clique em Sim para salvar o arquivo na pasta App_Data;
Abra o banco de dados no DataBase Explorer e clique com o botão direito sobre Tables selecionando a opção Add New Table;
Defina a estrutura da tabela Comentarios conforme a figura abaixo:
Inclua na página Default.aspx , a partir da ToolBox os componentes : GridView, FormView e por último o componente SqlDataSource e Clique no link Configure Data Source;
A seguir selecione o banco de dados Cadastro.mdf da janela Choose Your Data Connection;
Na sequência escolha a opção Specify a custom SQL statement or stored procedure para definir os comandos SQL que iremos usar no projeto;
Primeiro selecione a aba SELECT
e defina o comando SQL para selecionar os dados da tabela Comentarios:
SELECT
nome,comentario,data FROM Comentarios
Selecione em seguida a aba INSERT e
defina comando SQL para incluir dados na tabela Comentarios:
INSERT
INTO Comentarios (nome,comentario,data) VALUES (@nome,
@comentario, @data)
Abaixo temos o código fonte gerado para a instrução acima, observe que temos 3 parâmetros que deverão ser informados:
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" InsertCommand="INSERT INTO [Comentarios] ([nome], [comentario], [data]) VALUES (@nome, @comentario, @data)" > <InsertParameters> <asp:Parameter Name="nome" Type="String" /> <asp:Parameter Name="comentario" Type="String" /> <asp:Parameter Name="data" Type="DateTime" /> </InsertParameters> </asp:SqlDataSource> |
A string de conexão do arquivo web.config é exibida a seguir
<connectionStrings> <add name="ConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Cadastro.mdf; _ Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient" /> </connectionStrings> |
Selecione o componente FormView e ative a FormView Tasks e atribuindo o SqlDataSource1 em Choose Data Source:
A seguir clique no link Edit templates:
Selecione o InsertItemTemplate e inclua os componentes: TextBox, HiddenField e Button conforme o leiaute abaixo:
O código fonte gerado deverá ser o seguinte:
<InsertItemTemplate> Nome: <asp:TextBox ID="txtNome" runat="server" Text='<%# Bind("nome") %>'></asp:TextBox><br /> Comentário:<br /> <asp:TextBox ID="txtComentario" runat="server" Text='<%# Bind("comentario") %>' TextMode="MultiLine" Rows="4" Columns="50"></asp:TextBox><br /> <asp:HiddenField ID="hidhoraData" runat="server" Value='<%# Bind("data") %>' /> <asp:Button ID="butSubmete" runat="server" CommandName="Insert" Text="Enviar" /> </InsertItemTemplate> |
O leiaute ajustado a página contendo os controles deverá se parecer com a seguinte figura:
Agora vamos incluir o código abaixo no evento Load da página que irá atribuir a data e hora atual ao campo oculto:
protected void Page_Load(object sender, EventArgs e) { HiddenField hidData = (HiddenField)FormView1.FindControl("hidHoraData"); hidData.Value = DateTime.Now.ToString(); } |
Executando o projeto teclando F5 iremos obter o resultado:
Do jeito que esta qualquer comentário que for postado será exibido de imediato e isso não é muito aconselhável num ambiente hostil com a web. Podemos então incluir um campo do tipo booleano na tabela Comentarios chamado publicar (ou algo parecido) e atribuir ao mesmo um valor false quando da inclusão do comentário. Somente o administrador do site poderia alterar o valor do campo para true liberando assim o comentário para visualização.
Para que o recurso acima funcione teremos que efetuar a seguinte alteração na tabela Comentarios:
Alterar a estrutura da
tabela incluindo o campo publicar como
sendo do tipo bit. O tipo de dados bit consiste de 0 ou 1 e é usado para representar TRUE/FALSE ou YES/NO Onde 1 representa TRUE e 0 representa FALSE. |
Devemos também alterar as duas instruções SQL usadas no projeto como segue:
1- A instrução para incluir um comentário na tabela deverá ser alterada para:
INSERT INTO Comentarios (nome,comentario,data, publicar) VALUES (@nome, @comentario, @data, @publicar)
onde o parâmetro publicar deverá receber o valor False.
Para definir o valor do parâmetro publicar como sendo por padrão false selecione o objeto SqlDataSource e clique com na janela de propriedades procure pela propriedade InsertQuery clicando o botão a direita para abrir o editor de parâmetros. A seguir defina o parâmetro @publicar como sendo igual a false conforme abaixo:
2- Alterar a instrução SQL usada para selecionar os registros de forma a exibir somente os que forem liberados , ou seja , os que tiverem o campo publicar igual a True (1);
SELECT nome,comentario,data FROM Comentarios where publicar = 1
Com isso basta você criar uma página para gerenciar a liberação dos comentários no site com acesso restrito ao Administrador.
E estamos conversados...
Pegue o projeto completo aqui: aspComentario.zip (sem o banco de dados)
Eu sei é apenas ASP .NET, mas eu gosto...
Referências:
José Carlos Macoratti