Un Forum di discussione in ASP - Parte 1 | |
![]() |
|
| |
|
ASP Center
Articoli
Referenze
Script
FAQ
Downloads
Siti utili
ASP
E-Commerce con ASP
Menu Javascript
Ricette
Cocktail
Registrazione domini
Area Aziende
|
Un Forum di discussione in ASP - Parte 1
Concesso in esclusiva a Mr.Webmaster. Vietata la riproduzione.
Introduzione
Un Forum di discussione è un sistema di comunicazione per mezzo del quale è possibile ottenere una riproduzione informatizzata di un'assemblea in cui, con un certo criterio ed un certo ordine, ad una domanda posta da un partecipante, tutti gli altri partecipanti possono dare una risposta. Le domande possono essere divise ed accorpate in categorie omogenee, al fine di conservare il suddetto ordine tra le discussioni e garantire un criterio di ricerca ottimale. Per partecipare ad una discussione, o per aprire una nuova discussione (dette in gergo anche topic), ogni utente deve essere iscritto e possedere delle credenziali di accesso, ovvero username e password. Al fine di conservare tutti i dati degli utenti e delle discussioni utilizzeremo un database Ms Access, preferibilmente nella versione 2000. Struttura del database Si crei sul proprio server Web personale (IIS o PWS che sia) la cartella vbforum e si crei al suo interno il file di database forum.mdb composto dalle seguenti tabelle e dai relativi campi:
Il file di configurazione Per la definizione di alcune variabili e caratteristiche generiche che dovranno essere comuni ad ogni pagina utilizzeremo un file di inclusione che chiameremo config.asp composto dal seguente codice:
<%
Option Explicit
On Error Resume Next
Response.Buffer = True
Dim StrCn
StrCn = ""
StrCn = StrCn & "driver={Microsoft Access Driver (*.mdb)};"
StrCn = StrCn & "dbq=" & Server.MapPath("forum.mdb")
%>
dove
Option Explicitindica che tutte le variabili utilizzate devono essere dichiarate e dimensionate On Error Resume Nextserve alla gestione degli errori Response.Buffer = Trueimposta su True il buffer del server dedicato a questa applicazione Dim StrCn ' e quanto segue...definisce la stringa di connessione al database. Attenzione: non inserire in questo file la dichiarazione @LANGUAGE per la definizione del linguaggio di scripting (in questo caso VBScript) perchè questo file verrà incluso con la direttiva #include delle SSI. Menu del Forum Da tutte le pagine del Forum sarà possibile, attraverso un menu di navigazione, raggiungere altre pagine del Forum stesso, ovvero la Homepage (che vedremo nel prossimo paragrafo), la pagina di iscrizione, la pagina di elenco degli utenti, la pagina di inserimento di un nuovo messaggio e la pagina di login e di logout. Vale quindi la pena di creare un file esterno anche per la gestione del menu, che chiameremo menu.asp composto dal seguente codice:
<table width="700" align="center">
<tr>
<td width="350"><b>Forum</b></td>
<td width="350" align="right">
<a href="index.asp">Homepage</a> |
<a href="iscriviti.asp">Iscriviti</a> |
<a href="utenti.asp">Utenti</a> |
<a href="nuovo.asp">Nuovo messaggio</a> |
<%If Session("username") = "" Then%>
<a href="login.asp">Login</a>
<%Else%>
<a href="logout.asp">Logout</a>
<%End If%>
</td>
</tr>
</table><br>
Dal codice è possibile dedurre che il layout del Forum sarà contenuto in una tabella centrata di 700 pixel di larghezza. Le voci contemplate nel menu sono:
<%If Session("username") = "" Then%>
<a href="login.asp">Login</a>
<%Else%>
<a href="logout.asp">Logout</a>
<%End If%>
che verifica se la variabile di sessione Session("username") sia vuota o meno.La Homepage La Homepage del Forum si concretizza nel file index.asp che si occuperà di:
<%@LANGUAGE = VBScript%>
<!--#include file="config.asp"-->
<%
' VARIABILI CHE MI SERVONO ALL'INTERNO DELLA PAGINA
Dim Cn, Rs, Conta, Colore, N_Iscr, N_Disc, N_Disc_Sez
' APRO LA CONNESSIONE
Set Cn = Server.CreateObject("ADODB.Connection")
Cn.Open StrCn
' ESTRAGGO LE SEZIONI DEL FORUM
Set Rs = Cn.Execute("SELECT * FROM sezioni ORDER BY nome ASC")
' NUMERO DI ISCRITTI AL FORUM
Set N_Iscr = Cn.Execute("SELECT COUNT(*) AS id FROM utenti")
' NUMERO DI NUOVI MESSAGGI,
' INTESI COME DOMANDE, NON COME RISPOSTE
Dim SQL_Disc
SQL_Disc = "SELECT COUNT(*) AS id FROM messaggi "
SQL_Disc = SQL_Disc & "WHERE titolo <> ''"
Set N_Disc = Cn.Execute(SQL_Disc)
' CONTATORE PER I COLORI ALTERNATI PER LE SEZIONI
Conta = 0
%>
<html>
<head>
<title>Forum</title>
</head>
<body>
<!--#include file="menu.asp"-->
<table width="700" align="center" border="1">
<tr bgcolor="#CCCCCC">
<td width="600"><b>Elenco sezioni<b></td>
<td width="100" align="center"><b>N. Messaggi<b></td>
</tr>
<%
' MOSTRO LE SEZIONI...
' AVVISO SE NON CI SONO SEZIONI NEL FORUM...
If Rs.EOF Then
With Response
.Write "<tr><td colspan=2>"
.Write "Nessuna sezione presente</td></tr>"
.Write "</td></tr>"
End With
' OPPURE LE MOSTRO A VIDEO IMPAGINATE IN UNA TABELLA HTML
Else While Not Rs.EOF
Colore = "#FFFFFF"
If Conta Mod 2 <> 0 Then Colore = "#EEEEEE"
%>
<tr bgcolor="<%=Colore%>">
<td>
<a href="sezione.asp?id=<%=Rs("id")%>"><%=Rs("nome")%></a>
</td>
<td align="center">
<%
' ESTRAGGO IL NUMERO DI MESSAGGI A SECONDA DELLA DISCUSSIONE
Dim SQL
SQL = ""
SQL = SQL & "SELECT COUNT(*) AS id FROM messaggi "
SQL = SQL & "INNER JOIN sezioni "
SQL = SQL & "ON messaggi.id_sezione = sezioni.id "
SQL = SQL & "WHERE sezioni.id = "
SQL = SQL & Rs("id") & " AND messaggi.titolo <> ''"
Set N_Disc_Sez = Cn.Execute(SQL)
Response.Write N_Disc_Sez("id")
%>
</td>
</tr>
<%
Conta = Conta + 1
Rs.MoveNext
Wend
End If
%>
</table>
<p align="center">
Ci sono
<b><%=N_Iscr("id")%></b>
utenti iscritti e
<b><%=N_Disc("id")%></b>
discussioni
</p>
</body>
</html>
<%
' UN PO DI PULIZIA...
Cn.Close
Set Cn = Nothing
%>
|
Newsletter
Stringhe di Conn.
|
||
| © 2008 ASP Center di Luca Ruggiero - P. IVA 05564851219 - Disclaimer | Privacy | Pubblicità | Supportaci | Staff | Contatti | ||||
| Appunti PHP | Giornale Webmaster | Mr.Webmaster | Download | DevSpy.com | ASPCode.it | ClaudioGarau.it | Webmaster Facile | Come Faccio | AlVerde.net | CodiceFacile.it | I Programmatori | By Luciani | VoiceXML Italian User Group | Giochi | Extro Web Site | Morpheus Web | AG Web Solutions | Net-Free | PC Sicuro | PC Self | Tutorial Web | Dablones | ||||