Guest book in Access by
neoNelle tre lezioni precedenti abbiamo visto come funzionano i database e come accedervi
attraverso una pagina ASP. Ora metteremo in pratica tutta quella teoria per costruire
un guestbook basato su access.
Utilizzeremo il seguente form
Come prima cosa impostiamo il database che accoglierà le nostre informazioni.
Apriamo access, nominiamo il nostro database guest.mdb, salviamolo nella cartella
che conterrà la pagina asp che lo processerà e creiamo una nuova tabella chiamata
guest composta dalle seguenti colonne.
- id contatore
- nome testo
- mail testo
- commento memo
- data data/ora
Nel campo data mettete come valore predefinito
Date() così da avere in
automatico la data di inserimento del record.
Limitate i caratteri inseribili nei controlli text a 40 altrimenti in fase di
inserimento il database restituirà un errore.
La nostra pagina asp, chiamiamola guest.asp, andrà impostata con una struttura
di questo genere.
Nell'header, andranno messe le istruzioni che scriveranno nel database solo se
si verifica una certa condizione mentre nel body inseriremo le istruzioni che
andranno a leggere dal database.
Cominciamo dall'header.
set dataconn=server.createobject("adodb.connection")
dir=server.mappath(".")
strconn="driver={microsoft access driver (*.mdb)}; dbq=guest.mdb; defaultdir="+dir+"
;"
dataconn.Open strconn
A questo punto inseriremo un punto di controllo per evitare che ad ogni
refresh di pagina venga inserito un record nel guestbook.
if request.form("controllo")="ok"
and session("inserimento")="" then
strinsert="INSERT INTO guest (nome, mail, commento)"
strinsert=strinsert&" VALUES=('" & request.form("nome")
& "','" & request.form("mail") & "','"
& request.form("commento") & "') ;"
dataconn.execute(strinsert)
session("inserimento")="inserito"
end if
Analizziamo più in dettaglio queste poche righe.
L'if esegue un doppio controllo, infatti agisce sul database solo se si verificano
due condizioni.
La prima è che il form è stato effettivamente spedito con il trucco del controllo
nascosto (vedi lezione 3).
La seconda condizione è che non si sia ricaricata la pagina rispedendo le stesse
informazioni.
Questo lo si fa con un semplice controllo su di una variabile di sessione.
All'avvenuta scrittura nel database si imposta il valore della variabile di sessione,
cosi che non è più possibile scrivere nel guestbook finché non si ricomincia una
nuova session. Questo sistema è utile anche per prevenire scherzi.
Passiamo al blocco di lettura che dovrà sempre essere eseguito ad ogni caricamento
di pagina.
Dopo aver inserito il form che richiama la pagina che lo contiene con l'uso delle
server variables, passiamo ad inserire la parte in ASP.
set rs=server.createobject("adodb.recordset")
sql="SELECT * FROM guest ORDER BY ID DESC ;"
rs.open sql,dataconn,3,3
<table>
do while not rs.EOF <tr>
<td>Nome:
rs.fields("nome")</td>
<td>e-mail:
rs.fields("mail")</td>
</tr>
<tr>
<td>Commento:
rs.fields("commento")</td>
<td>Data della firma:
rs.fields("data")</td>
</tr>
rs.MoveNext
loop
</table>
rs.close
dataconn.close
In questo modo produrremo tante righe di tabella quante firme sono state
inserite nel nostro guestbook.
Anche se a prima vista i database possono essere più complessi, le operazioni
di lettura e di inserimento sono molto più semplici e meno macchinose dei file
di testo.
Prima di concludere un'ultima raccomandazione.
In fondo ad ogni pagina asp mettete sempre un blocco di codice dove liberate risorse.
Ad esempio nella nostra pagina guest.asp abbiamo dichiarato due oggetti.
Quindi in fondo metteremo quanto segue.
set rs = nothing
set dataconn = nothing
Leggi commentiNumero commenti inviati: 0