Innanzittuto dobbiamo preparare il nosro database access, l'ho chiamato guestbook.mdb e al suo interno ho creato la tabella "guestbook" con i seguenti campi:
ID (sempre obbligatorio) è il contatore incrementale!
nickname
url (se il nostro ospite ha un sito internet e vuole farcelo conoscere...)
messaggio
data (sarà la data del post, presa automaticamente).
Avremo bisogno di due paginette: una che stampa i messaggi presenti e una che effettivamente fa l'inserimento....
vediamo la pagina principale, che ho banalmente chiamato guestbook.asp
- Codice: Seleziona tutto
- <%@LANGUAGE = JScript%>
 <%
 var Cn = new ActiveXObject("ADODB.Connection");
 var Sc = "driver={Microsoft Access Driver (*.mdb)};pwd=f3d3r1c4;dbq=" + Server.MapPath("guestbook.mdb");
 Cn.Open(Sc);
 var Sql = "SELECT count (*) as totalimex FROM guestbook";
 
 // vediamo quanti messaggi ci sono all’interno del nostro database
 var Mostra2 = new ActiveXObject("ADODB.Recordset");
 Mostra2.Open(Sql,Cn,1);
 %>
 <%
 var Cn = new ActiveXObject("ADODB.Connection");
 var Sc = "driver={Microsoft Access Driver (*.mdb)};dbq=" + Server.MapPath(“guestbook.mdb");
 Cn.Open(Sc);
 var Sql = "SELECT * FROM guestbook ORDER BY data DESC";
 // con questo ordinamento faremo in modo che l’ultimo messaggio inserito sia il primo visibile
 var Mostra = new ActiveXObject("ADODB.Recordset");
 Mostra.Open(Sql,Cn,1);
 var pag = parseInt(Request.QueryString("id"));
 if (isNaN(pag) || pag < 1) pag = 1;
 // se il valore passato nella pagina non è numerico, oppure è negative, andiamo alla pagina 1
 if (!Mostra.EOF) {
 Mostra.PageSize = 5;
 Mostra.AbsolutePage = pag;
 var paginetotali = Mostra.PageCount;
 // abbiamo deciso di visualizzare 5 messaggi per pagina
 }
 var i = 0;
 // mi uso questa variabile che si incrementerà fino al valore dato + in alto, nel nostro caso 5
 %>
 <!--- partiamo con il codice HTML vero e proprio -- >
 <html>
 <head>
 <title>webtemplum.com - Costruzione creazione aggiornamento siti internet</title>
 <script language="JavaScript" type="text/JavaScript">
 <!--- la seguente funziona controlla se sono stati inseriti I dati obbligatori; li distinguiamo facendo iniziare la casella di testo con la parola “required” -->
 function checkrequired(which){
 var pass=true
 if (document.images){
 for (i=0;i<which.length;i++){
 var tempobj=which.elements[i]
 if (tempobj.name.substring(0,8)=="required"){
 if (((tempobj.type=="text"||tempobj.type=="textarea")&&tempobj.value=='')||(tempobj.type.toString().charAt(0)=="s"&&tempobj.selectedIndex==-1)){
 pass=false
 break
 }
 }
 }
 }
 if (!pass){
 alert("Non hai compilato alcuni dati obbligatori! Correggi e riprova")
 return false
 }
 else
 return true
 }
 //-->
 </script>
 </head>
 <body >
 <!—iniziamo nel creare la nostra tabella, che conterrà nickname, mail, sito, messaggio 
 <p> </p><table width="830" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF">
 <tr>
 <td width="179" rowspan="2" align="left" valign="top"><p>
 <td width="660" height="43" align="right" valign="top"> <div align="right”></div></td>
 </tr>
 <tr>
 <td height="607" align="left" valign="top">
 <table width="600" border="0" align="center" cellpadding="0" cellspacing="0" class="testi">
 <tr>
 <td height="28">
 <p>Se il sito ti è piaciuto, e se vuoi, ti invitiamo a lasciarci
 un messaggio firmando il libro degli ospiti!</p>
 </td>
 </tr>
 </table>
 <form name="form1" method="post" onSubmit="return checkrequired(this)" action="aggiungi_guestbook.asp">
 <!—due parole su quel onSubmit=”return checkrequired(this)”: fa praticamente partire la funzione che controlla se I dati obbligatori sono stati tutti inseriti- - >
 <table width="520" border="1" align="center" cellpadding="0" cellspacing="1" class="testi">
 <tr>
 <td width="115">Nickname (*)</td>
 <td width="396"><input name="requirednickname" type="text" id="requirednickname" size="40" maxlength="20"></td>
 </tr>
 <tr>
 <td>Sito web</td>
 <td><input name="url" type="text" id="url" value="http://" size="40"></td>
 </tr>
 <tr>
 <td>E-mail</td>
 <td><input name="email" type="text" id="email" size="40"></td>
 </tr>
 <tr>
 <td>Messaggio (*)</td>
 <td rowspan="4"><textarea name="requiredmessaggio" cols="40" rows="5" id="requiredmessaggio"></textarea></td>
 </tr>
 <tr>
 <td> </td>
 </tr>
 <tr>
 <td> </td>
 </tr>
 <tr>
 <td> </td>
 </tr>
 <tr>
 <td colspan="2"><div align="center">
 <input name="Submit" type="submit" class="testi" value="Firma il guestbook">
 </div></td>
 </tr>
 </table>
 </form>
 <p align="center" class="testi"><strong>Sono presenti
 <%Response.Write(Mostra2("totalimex"))%>
 messaggi</strong> </p>
 <p align="center" class="testi">
 <%while((!Mostra.EOF) && (i<5)){%>
 <! - - Ecco lìinizio della paginazione: finchè il database non è vuoto e la variabile I è minore di 5 (quanti messaggi abbiamo scelto dall’inizio) allora stampa I messaggi 
 </p>
 <p align="center" class="testi"> </p>
 <table width="632" border="1" align="center" cellpadding="0" cellspacing="1" class="td">
 <tr class="testo">
 <td width="367" height="20" bgcolor="#FF6600"><font color="#FFFFFF">Messaggio
 lasciato il <%=Mostra("data")%> da <a href="mailto:<%=Mostra("mail")%>" target="_blank"><%=Mostra("nickname")%></a></font></td>
 <td width="256" bgcolor="#FF6600">
 <div align="right"><font color="#FFFFFF"><a href="<%=Mostra("url")%>" target="_blank"><%=Mostra("url")%></a></font></div></td>
 </tr>
 <tr>
 <td height="20" colspan="2" class="testo"><%=Mostra("messaggio")%></td>
 </tr>
 </table>
 <table width="600" border="0" align="center" cellpadding="0" cellspacing="0">
 <tr>
 <td height="19"> </td>
 </tr>
 </table>
 <p>
 <%
 i++; // incrementiamo la variabile dopo ogni messaggio stampato a video
 Mostra.MoveNext();
 }
 %>
 <!—Qui iniziamo I link per la paginazione 
 <table width="600" align="center" cellpadding="0" cellspacing="0" class="testi">
 <tr>
 <td width="40%">
 <%if (pag > 1) {%>
 « <a href="guestbook.asp?id=<%=pag - 1%>" ><font color="#000000">Precedenti</font></a>
 
 <%}%>
 <%else {%>
 <font color="#778899">« Precedenti</font>
 <%}%>
 </td>
 <td width="20%"><div align="center">Pagina <%=pag%>
 di <%=paginetotali%></div></td>
 <td width="40%" align="right">
 <%if (!Mostra.EOF) {%>
 <a href="guestbook.asp?id=<%=pag + 1%>" ><font color="#000000">Successivi</font></a>
 <font color="#000000">»</font>
 <%}%>
 <%else {%>
 <font color="#778899">Successivi »</font>
 <%}%>
 </td>
 </tr>
 </table>
 <p>
 <%Cn.Close()%>
 </p>
 </td>
 </tr>
 
 </table>
 </body>
 </html>
Bene o male ho commentato il codice al suo interno, nelle parti un po' più ostiche. Andiamo ad affrontare la pagina invece che si occupa dell'inserimento nel database... chiamata "aggiungi_guestbook.asp"
- Codice: Seleziona tutto
- <%
 nicknameoriginale = Request.Form("requirednickname")
 nickname = Replace(nicknameoriginale,"'","''")
 urloriginale= Request.Form("url")
 url = replace(urloriginale,"'","''")
 mailoriginale = request.Form("email")
 mail = replace(mailoriginale,"'","''")
 messaggiooriginale=request.Form("requiredmessaggio")
 messaggiounariga=replace(messaggiooriginale,"'","''")
 messaggio=replace(messaggiounariga, VbCrLf, "<BR>")
 'se avete seguito l'altro corso avrete visto che consiglio sempre di inserire quel "replace" in quanto
 'qualora il nostro ospite inserisca nel suo messaggio il carattere " ' " ed è molto semplice
 ' che questo accada ciò causerebbe errore. In più vediamo che stamperemo anche quando il nostro
 ' ospite sarà andato a capo, sostituendo il valore VbCrlF che appunto indica la pressione del tasto ENTER con
 ' il codice HTML <BR>
 data = Now()
 ' ecco la data, di questo istante preciso, che useremo per ordinare i messaggi
 Set cn = Server.CreateObject("ADODB.Connection")
 Set rs = Server.CreateObject("ADODB.Recordset")
 cn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="&Server.MapPath("guestbook.mdb")
 'la classica connessione al Database e di seguito l'istruzione insert
 SQL = "insert into guestbook (data, nickname, url, mail, messaggio)"
 SQL = SQL & "values ('" & data
 SQL = SQL & "','" & nickname
 SQL = SQL & "','" & url
 SQL = SQL & "','" & mail
 SQL = SQL & "','" & messaggio & "')"
 rs.Open sql, cn
 Set rs = Nothing
 cn.Close
 Set cn = Nothing
 Response.Redirect("guestbook.asp")
 'chiudiamo tutte le connessione e reinviamo immediatamente il nostro gentile firmatario alla pagina
 ' del guestbook
 %>
Finito..... non è difficilissimo come script, ma senza dubbio è uno dei più richiesti in rete!
Il risultato finale lo potete vedere sul mio sito http://www.webtemplum.com
A presto!










