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.