![]() |
|
| News | Linguaggi | Script | Emoticons | Forum | Libri | Download | ADSL | |
Creazione di un Guestbook | |||||
|
Html
Css
Web Marketing
Javascript e Dhtml
VBScript
Asp
Asp.NET
Php
Sql
Visual Basic
Java
Xml
Ajax
IIS
Web Wizard & Tools
Meta Tag Generator
Web Grafica
GIF Animate
Clip Art
Emoticon
Icone
Siti utili
Calcio Napoli
Area Aziende
Registrazione domini
Comuni in Italia
Cartucce per la Stampante
Cartucce Brother
Cartucce Canon
Cartucce Epson
Cartucce HP
Cartucce IBM-Lexmark
Cartucce Samsung
Cartucce Xerox
|
Autore: Luca Ruggiero
Impara a creare siti dinamici con ASP e VBScript da zero! Attestato finale ed assistenza del tutor online. Impara a creare siti dinamici professionali con ASP! Attestato finale ed assistenza del tutor online. Vota questo articolo: clicca qui Introduzione
Un guestbook, detto anche libro degli ospiti, è un sistema che molti siti utilizzano per permettere ai propri utenti di lasciare un messaggio o un commento. Si tratta di un servizio molto grazioso e di semplice realizzazione, si dispone di un modulo da compilare per inserire una serie di dati richiesti, di una pagina in cui i messaggi vengono mostrati in ordine cronologico inverso (dal più recente fino al primo), e di un file che, lavorando in back-office, effettua in primis un controllo sulla validità dei dati richiesti nel modulo, poi, a condizioni soddisfatte, effettua l'inserimento del messaggio. Cosa ci serve per realizzare il guestbook Come già detto ci serviremo di soli tre file per realizzare il guestbook, il file index.asp conterrà il modulo per l'invio del messaggio e stamperà a video i messaggi ordinati come detto in precedenza; il file inserisci.asp effettuerà già detti controlli e la registrazione del messaggio; in fine, il file guestbook.mdb è il database che utilizzeremo per conservare stabilmente i messaggi sul server Web.
Struttura del database Si è scelto, per praticità e compatibilità con Asp, di utilizzare Ms Access (preferibilmente edizione 2000) come DBMS per questa applicazione, avviamo quindi la nostra copia di detto software e creiamo il file guestbook.mdb all'interno della cartella guestbook sul nostro server Web personale, creiamo una Nuova tabella in visualizzazione struttura e configuriamola con i seguenti campi: id - tipo dato: contatore | selezioniamolo ed assegniamogli la chiave primaria data - tipo dato: testo | non utilizziamo il campo data/ora, per la cronologia utilizzeremo il campo id. nickname - tipo dato: testo email - tipo dato: testo | in corrispondenza della voce Consenti lunghezza zero selezioniamo Si homepage - tipo dato: testo | in corrispondenza della voce Consenti lunghezza zero selezioniamo Si oggetto - tipo dato: testo citta - tipo dato: testo messaggio - tipo dato: memo | per consentire l'inserimento di testi lunghi. Salviamo la tabella col nome messaggi e chiudiamo Access, il database è pronto. Inserimento e lettura dei messaggi Come opportunamente segnalato nella nota del secondo paragrafo di questo articolo, utilizzeremo un solo file, index.asp, per un triplice scopo: offrire il modulo per inserire il messaggio, stampare a video i messaggi dal più recente fino al primo, impaginare solo 10 messaggi alla volta, splittando in più pagine i messaggi residui, sempre solo 10 per volta. Di seguito espongo il codice opportunamente commentato, in seguito focalizzeremo l'attenzione sui punti cruciali:
<%@LANGUAGE = JScript%>
<%
// Apro la connessione verso il database
var Cn = new ActiveXObject("ADODB.Connection");
var Sc = "driver={Microsoft Access Driver (*.mdb)};dbq=" + Server.MapPath("guestbook.mdb");
Cn.Open(Sc);
// Recupero i dati dalla tabella via Sql
var Sql = "SELECT * FROM messaggi ORDER BY id DESC";
// Utilizzo l'oggetto recordset per generare la paginazione
var Mostra = new ActiveXObject("ADODB.Recordset");
Mostra.Open(Sql,Cn,1);
// Setto una variabile di tipo QueryString per muovermi nella stessa pagina
// e mostrare a video messaggi diversi
var pag = parseInt(Request.QueryString("id"));
// Mi assicuro che il valore passato nella QueryString sia numerico
if (isNaN(pag) || pag < 1) pag = 1;
// Finchè non finisce il file continuo il conteggio ed imposto
// a 10 il numero di record che voglio vengano estratti
if (!Mostra.EOF) {
Mostra.PageSize = 10;
Mostra.AbsolutePage = pag;
}
// A questo scopo mi serve un contatore che imposto a zero (0) ed incrementerò in seguito
var i = 0;
%>
<html>
<head>
<title>lukeonweb.net Guestbook - www.lukeonweb.net</title>
<style type="text/css">
td, div { font-size: 12px; font-family: Verdana; }
a { color: #FFFFFF; text-decoration: None; }
a:hover { color: #FFFFFF; text-decoration: None; }
a.x { color: #3366CC; text-decoration: None; }
a:hover.x { color: #FF0000; text-decoration: Underline; }
</style>
</head>
<body text="#192939">
<div align="center"><b>Firma il mio Guestbook</b></div>
<br>
<div align="center" style="color: #FF0000;">I campi contrassegnati da <b>*</b> sono obbligatori</div>
<br>
<!-- Creo il modulo per l'inserimento dei messaggi -->
<table align="center" cellpadding="1" cellspacing="0">
<form method="post" action="inserisci.asp">
<tr>
<td><b>Nickname *</b></td>
<td align="right"><input type="text" name="nickname"></td>
</tr>
<tr>
<td><b>Email</b></td>
<td align="right"><input type="text" name="email"></td>
</tr>
<tr>
<td><b>Homepage</b></td>
<td align="right"><input type="text" name="homepage"></td>
</tr>
<tr>
<td><b>Città *</b></td>
<td align="right"><input type="text" name="citta"></td>
</tr>
<tr>
<td><b>Oggetto *</b></td>
<td align="right"><input type="text" name="oggetto"></td>
</tr>
<tr>
<td colspan="2"><b>Messaggio *</b></td>
</tr>
<tr>
<td colspan="2"><textarea name="messaggio" rows="5" cols="30"></textarea></td>
</tr>
<tr>
<td colspan="2" align="right">
<input type="submit" value=" Firma ">
<input type="reset" value="Cancella">
</td>
</tr>
</form>
</table>
<br>
<!--
Creo il ciclo che eseguirà due controlli, la verifica che i record vengano letti tutti
e che non ne vengano mostrati più di 10 per volta
-->
<%while((!Mostra.EOF) && (i<10)){%>
<table align="center" width="700" cellpadding="1" cellspacing="0" style="border: Solid 1px #192939;">
<tr bgcolor="#192939">
<td width="500" style="color: #FFFFFF;">
<!-- Stampo a video il nickname del firmatario e la città -->
<b>Messaggio di <%=Mostra("nickname")%> (da <%=Mostra("citta")%>)</b>
</td>
<td width="200" align="right">
<!-- Controllo che l'email sia stata inserita, in caso negativo stampo a video uno spazio vuoto, -->
<!-- altrimenti eseguo un link di tipo mailto: verso l'indirizzo segnalato -->
<%if((Mostra("email") == "") || (Mostra("email") == "undefined")){%>
<%}%>
<%else {%>
<a href="mailto:<%=Mostra("email")%>">[email]</a>
<%}%>
<!-- Lo stesso discorso vale per l'eventuale URL segnalata dal firmatario come propria Homepage -->
<%if((Mostra("homepage") == "") || (Mostra("homepage") == "undefined")){%>
<%}%>
<%else {%>
<a href="<%=Mostra("homepage")%>" target="_blank">[homepage]</a>
<%}%>
</td>
</tr>
<tr>
<td colspan="2">
<!-- Stampo a video l'oggetto, il messaggio e la data -->
<b><%=Mostra("oggetto")%></b><br><br>
<%=Mostra("messaggio")%><br><br>
<div align="right" style="font-size: 10px;">
Pubblicato in data <%=Mostra("data")%>
</div>
</td>
</tr>
</table>
<br>
<!-- Incremento il contatore e mi muovo verso il primo record -->
<%
i++;
Mostra.MoveNext();
}
%>
<!-- Stampo a video i link verso i precedenti ed i successivi 10 messaggi, i quali si attiveranno -->
<!-- solo nel caso in cui effettivamente, scorrendo i record, ne vengano trovati altri -->
<table align="center" width="700" cellpadding="0" cellspacing="0">
<tr>
<td width="50%">
<%if (pag > 1) {%>« <a href="index.asp?id=<%=pag - 1%>" class="x">Precedenti</a><%}%>
<%else {%><font color="#778899">« Precedenti</font><%}%>
</td>
<td width="50%" align="right">
<%if (!Mostra.EOF) {%><a href="index.asp?id=<%=pag + 1%>" class="x">Successivi</a> »<%}%>
<%else {%><font color="#778899">Successivi »</font><%}%>
</td>
</tr>
</table>
<!-- Chiudo la connessione -->
</body>
</html>
<%Cn.Close()%>
Beh, rileggendo i commenti al codice appena proposto forse ulteriori osservazioni sono superflue, si dà infatti per scontato che il lettore abbia un minimo di pratica con Asp e con le tecniche di manipolazione dei record estratti da una fonte di dati di tipo ADO.Se così non fosse, si consiglia di consultare il Manuale di Asp ed il Manuale di Sql di questo sito. Registrazione dei messaggi La fase successiva, nonchè conclusiva del lavoro, è quella della registrazione dei messaggi sul database, implementiamo il file inserisci.asp, di cui adesso esaminiamo il codice:
<%@LANGUAGE = JScript%>
<%
//Recupero i dati dal form
var nickname = new String(Request.Form("nickname"));
var email = new String(Request.Form("email"));
var homepage = new String(Request.Form("homepage"));
var citta = new String(Request.Form("citta"));
var oggetto = new String(Request.Form("oggetto"));
var messaggio = new String(Request.Form("messaggio"));
//Scrivo la data
var oggi = new Date();
var data = oggi.getDate() + "/"
+ (oggi.getMonth() + 1) + "/"
+ oggi.getYear() + " alle ore "
+ oggi.getHours() + ":"
+ oggi.getMinutes() + ":"
+ oggi.getSeconds();
//Controllo i campi obbligatori
if ((nickname == "") || (nickname == "undefined")) Response.Redirect("index.asp");
if ((citta == "") || (citta == "undefined")) Response.Redirect("index.asp");
if ((oggetto == "") || (oggetto == "undefined")) Response.Redirect("index.asp");
if ((messaggio == "") || (messaggio == "undefined")) Response.Redirect("index.asp");
//Creo la connessione ed il recordset
var Cn = new ActiveXObject("ADODB.Connection");
var Rs = new ActiveXObject("ADODB.Recordset");
//Creo la stringa di connessione
var Str = "driver={Microsoft Access Driver (*.mdb)};dbq=" + Server.MapPath("guestbook.mdb");
//Apro la connessone
Cn.Open(Str);
//Apro il recordset, inserisco i nuovi dati, lo aggiorno e lo chiudo
Rs.Open("messaggi",Cn,3,3);
Rs.AddNew();
Rs("nickname") = nickname;
Rs("email") = email;
Rs("homepage") = homepage;
Rs("citta") = citta;
Rs("oggetto") = oggetto;
Rs("messaggio") = messaggio;
Rs("data") = data;
Rs.Update();
Rs.Close();
//Chiudo la connessione
Cn.Close();
//Reindirizzo immediatamente l'utente verso index.asp
Response.Redirect("index.asp");
%>
Il funzionamento è semplice, recupero i dati richiesti dal modulo, scrivo manualmente la data impostata sull'ora del server Web su cui è pubblicato lo script, controllo i campi obbligatori, supponendo che l'email e la homepage non siano richiesti obbligatoriamente.A questo punto mi connetto al database, inserisco i dati passati dal modulo, chiudo la connessione e reindirizzo istantaneamente l'utente al file originale, aggiornato con il proprio messaggio in capo alla lista. |
||||
| © 2001/2008 lukeonweb.net | A cura di Luca Ruggiero - P. IVA 05564851219 | Disclaimer | Privacy | Mappa del sito | Pubblicità | Contatti | |||||