Agora que já criamos o banco de dados (veja aqui), vamos fazer o script que acessa os tópicos.

Esse script terá os links de cada tópico apontando para um segundo script que exibirá os textos do tópico selecionado.

Vamos acessar o banco de dados para começar:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%> <% ' Conexão aberta Set conn = Server.CreateObject("ADODB.Connection") Set rs = Server.CreateObject("ADODB.RecordSet") ' Altere a linha abaixo com os dados do seu banco de dados conn.Open "Driver=MySQL ODBC 5.1 Driver; DATABASE=nomeDoBancoDeDados; SERVER=seuServidor; UID=seuID; PASSWORD=∗∗∗∗∗∗;" %>

Em seguida eu já vou verificar se o usuário está tentando salvar um novo tópico. Caso tenha sido enviado o título do novo tópico, ele será salvo no banco. Assim o novo título salvo já constará quando eu listar todos os tópicos, em seguida.

<% If Request("topico") <> "" Then sqlTopico = "INSERT INTO foruns (topico, descricao, ultimaMensagem, postagens) VALUES ('" & Request("topico") & "', '" & Request("descricao") & "', '', '')" conn.Execute(sqlTopico) End If %>

Agora vamos começar a produzir o HTML para a página. Este exemplo foi atualizado para HTML5:

<!DOCTYPE html> <html lang="pt-BR"> <head> <meta charset="iso-8859-1"> <title>Fórum básico em ASP</title> </head> <body> <div class="conteudo"> </div> </body> </html>

Já temos uma página vazia e uma div com a classe “conteudo”, que poderá ser estilizada mais tarde através de um arquivo CSS. Dentro desta div vai o nosso conteúdo, que consistirá da lista de tópicos e do formulário para salvar um novo tópico.

<% ' Consulta que abre a tabela foruns sqlForuns = "SELECT * FROM foruns" ' Armazena a consulta no objeto rs Set rs = conn.Execute(sqlForuns) ' Inicia a lista de fóruns (tópicos) Response.Write "" ' Loop que percorre os registros da tabela foruns enquanto não chegar ao final da consulta While Not rs.EOF Response.Write "- " Response.Write "<a href=""mensagens.asp?id=" & rs("forumID") & """>" Response.Write rs("topico") & "</a>" Response.Write rs("descricao") Response.Write "<span>Última Mensagem: " & rs("ultimaMensagem") & "</span> (" & rs("postagens") & " postagens)" Response.Write "" rs.MoveNext Wend ' Fim da lista Response.Write "" %> <form action="foruns.asp" method="post" name="addForum"> <fieldset><legend>Adicionar um tópico</legend> <p><label for="topico"> Título </label> <input name="topico" type="text" size="70" maxlength="255" /> </p> <p> <label for="descricao"> Descrição </label> <textarea name="descricao" cols="60" rows="5"> </textarea> <input name="submit" type="submit" value="Criar" /> </p> </fieldset> </form>

Para mostrar os tópicos disponíveis, utilizamos uma nova consulta sql. Porém desta vez, armazenamos o resultado da consulta no objeto RecordSet que eu chamei de rs. Como resultado teremos todos os registros que o banco retornou, ou seja, os tópicos existentes no nosso sistema.

Inicia-se um loop While que se repetirá até percorrermos todos os registros do nosso objeto rs. Tudo o que está dentro do loop While será executado e repetido até que a expressão Not rs.EOF retorne True, indicando que chegamos ao final da consulta.

Atenção para um erro comum: sem o comando MoveNext do objeto RecordSet, o cursor do objeto continuará apontando para o mesmo registro, e o loop nunca chegará ao seu fim, gerando um erro no script.

Em seguida, temos o formulário HTML que aponta de volta para a mesma página com os dados para adicionar um novo fórum. Se preferir, retire-o da página para que somente pessoas autorizadas possam moderar o seu fórum.