Articoli Referenze Script FAQ Downloads Menu Javascript Ricette Cocktail Corsi online Registrazione domini Area Aziende



Un guestbook in ASP

Home + Articoli + Messaggistica + Articolo # 144
Autore: Luca Ruggiero



Introduzione

Un guestbook, in italiano libro degli ospiti, è un sistema di messaggistica molto semplice per ricevere commenti sul proprio sito Web dagli utenti, utilizzato per lo più da siti amatoriali.

Tecnicamente stiamo parlando di una semplice applicazione input/output di dati su di un database attraverso ASP. In un recente articolo abbiamo visto come realizzare un guestbook in ASP, XML, XSLT ed XMLDOM, ma la soluzione ideale per l'archiviazione dei dati, comunque, è un database.

Lo scopo di questo articolo non è solo quello di fornire il prodotto finale, ma anche quello di insegnare effettivamente al lettore come realizzare un guestbook in ASP o qualsiasi applicazione simile.

Il database del guestbook

Iniziamo col creare nel nostro Web Server la cartella guestbook, abilitiamo i permessi in lettura ed in scrittura, posizioniamo all'interno di questa cartella il file guestbook.mdb e creiamo la tabella guestbook corredata dai seguenti campi:
  • id - di tipo Contatore;
  • nome - di tipo Testo con lunghezza 50 caratteri;
  • messaggio - di tipo Memo.
Come si evince dalla struttura del database, è possibile creare un prodotto finale più completo, specificando anche la città di appartenenza di colui che firma il guestbook, il sesso, il suo indirizzo email, l'IP di provenienza, data e ora, e cosi via.

Anche la grafica del guestbook in oggetto è men che scarna, allo scopo di focalizzare l'attenzione sulla fase tecnica di interazione tra ASP ed il database.

Il file di configurazione

Creiamo all'interno della cartella guestbook il file config.asp e corrediamolo del seguente codice:
<%
    Option Explicit
    On Error Resume Next
    Response.Buffer = True
    Response.Expires = 0

    Dim cn, rs, sc
    sc = "driver={Microsoft Access Driver (*.mdb)};dbq="
    sc = sc & Server.MapPath("guestbook.mdb")

    Function ConnOpen()
        Set cn = Server.CreateObject("ADODB.Connection")
        Set rs = Server.CreateObject("ADODB.Recordset")
        cn.Open sc
    End Function

    Function ConnClose()
        cn.Close
        Set rs = Nothing
        Set cn = Nothing
    End Function
%>
Non facciamo altro che gestire gli eventuali errori ed impostare delle intestazioni; in secondo luogo usiamo due funzioni per aprire e chiudere la connessione al database, e per disporre degli oggetti che ci interessano.

Si tratta dunque di un file che opera in back-office e lo includeremo nei file di front-office.

Modulo di inserimento e lettura dei messaggi

Creiamo adesso, nella cartella guestbook, il file default.asp che, come in oggetto, contiene il modulo di inserimento dei messaggi e l'elenco dei messaggi già presenti.

Segue il codice:
<%@LANGUAGE = VBScript%>
<!--#include file="config.asp"-->
<%
    Call ConnOpen()
%>
<html>
<head>
<title>Un guestbook in ASP</title>
</head>
<body>

<h1>Un guestbook in ASP</h1>

<form method="post" action="guestbook.asp">
<b>Il tuo nome</b><br>
<input type="text" name="nome" maxlength="50"><br><br>
<b>Inserisci il messaggio</b><br>
<textarea name="messaggio" rows="10" cols="50"></textarea><br><br>
<input type="submit" value="Firma il Guestbook">
</form>

<h2>Elenco dei messaggi</h2>

<%
    rs.Open "SELECT * FROM guestbook ORDER BY id DESC", cn, 1
    If rs.EOF Then
%>
<p>Non ci sono messaggi...</p>
<%
    Else
        While rs.EOF = False
%>
<p>
<b><%=rs("nome")%></b><br><br>
<%=rs("messaggio")%>
</p>
<hr>
<%
            rs.MoveNext
        Wend
    End If
    rs.Close
%>

</body>
</html>
<%
    Call ConnClose()
%>
Esaminiamo il codice. Per prima cosa includiamo il file di configurazione ed apriamo la connessione al database. Nel corpo della pagina creiamo il codice HTML del modulo di inserimento e, in un secondo momento, andiamo a leggere nel database, stampando a video l'elenco dei messaggi già presenti, dal più recente al più vecchio, oppure mostriamo un messaggio che avvisa che non ci sono messaggi, qualora questo sia vero. Alla fine chiudiamo la connessione al database.

Inserimento di un nuovo messaggio

Nel paragrafo precedente abbiamo visto che il modulo di inserimento di un nuovo messaggio punta al file guestbook.asp, oggetto di questo paragrafo. Creiamolo nella cartella guestbook e corrediamolo del seguente codice:
<%@LANGUAGE = VBScript%>
<!--#include file="config.asp"-->
<%
    Call ConnOpen()
%>
<html>
<head>
<title>Un guestbook in ASP</title>
</head>
<body>

<p align="center">
<%
    Dim nome, messaggio
    nome = Request.Form("nome")
    messaggio = Request.Form("messaggio")
    If nome = "" Or messaggio = "" Then
%>
Attenzione: tutti i campo sono obbligatori!<br><br>
<a href="javascript:window.history.back();">Torna indietro</a>
<%
    Else
        rs.Open "guestbook", cn, 3, 3
        rs.AddNew
        rs("nome") = nome
        rs("messaggio") = messaggio
        rs.Update
        rs.Close
%>
Messaggio inserito con successo!<br><br>
<a href="default.asp">Torna indietro</a>
<%
    End If
%>
</p>

</body>
</html>
<%
    Call ConnClose()
%>
Oltre all'inclusione del file di configurazione, all'apertura della connessione all'inizio, e della chiusura alla fine, espletiamo le seguenti operazioni nel corpo della pagina: recuperiamo i campi dal modulo, verifichiamo che siano stati valorizzati, lanciamo un messaggio di errore nel caso in cui le condizioni non siano soddisfatte e, a condizioni soddisfatte, effettuiamo l'inserimento nel database, lanciando un messaggio di successo.

Conclusioni e spunti

Probabilmente molti si aspettavano che la realizzazione di un guestbook in ASP, o con qualsiasi altro linguaggio, fosse compito spettante solo a grandi programmatori, ed invece è possibile notare che, in pochi e semplici passaggi, abbiamo creato un prodotto finito!

Come anticipato all'apertura dell'articolo, per quanto completo, il guestbook che abbiamo realizzato è graficamente molto scarno e potrebbe raccogliere molte più informazioni.

Colgo l'occasione per offrire alcuni link, interni a questo sito, che spiegano come realizzare singole utility da integrare al guestbook:

© 2008 ASP Center di Luca Ruggiero - P. IVA 05564851219 - Utenti online: 28 - Disclaimer | 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