Imposta Webstyler come Pagina Iniziale - Set Webstyler as Home page
Aggiungi Webstyler ai tuoi Preferiti

 

sponsor


Clicca il settore che ti interessa e di cui vuoi vedere la lista degli articoli

SISTEMI OPERATIVI

TREND WEB

MARKETING

WEB WRITING

WEB STYLE

WEB DESIGN

DATABASE

ASP

PHP

Clicca il settore che ti interessa e di cui vuoi vedere la lista dei tutorial

MARKETING

WEB DESIGN

ASP

PHP

Lista Faq

Lista News

FAQ

NEWS

Vota il sondaggio !!!

Cosa manca in questo portale
Sezione Download
Libreria immagini
Libreria icone
Script php - mysql
Interviste web designer
altro (commenta)
iscriviti alla newsletter per ricevere le novità del sito comodamente nella tua casella di posta elettronica

 iscrizione

 cancellazione

La ns galleria dedicata alle opere digitali

VISITA LA GALLERIA DIGITALE

Aiutaci a far crescere Webstyler , collaborare è facile e veloce

COLLABORA 

LOGIN

Clicca per visualizzare tutti i link recensiti

AZ
Web Gif
Simply4you
Mw Hardware Max
Lukeonweb
Manuali.net
DevSpy
Sos-Ok.net
Guarda tutti i link

Clicca per visionare la classifica completa !

Korat Ozturan32856

Fox Comunication4139

Cherry Bomb Press1249
Classifica completa

Chi siamo .:. Cosa facciamo .:. Cosa faremo .:.

CHI SIAMO

CONTATTACI

Inserite le parole da cercare - Il metodo utilizzato di default è l'and , cioé verrano selezionate le pagine che contengono tutti i valori da Voi inseriti

Comunità Virtuale - Entra nel ns Nuovo FORUM !! Oppure in CHAT !!

FORUM

CHAT

 
 
Data : 09-03-2003 Autore : Luca Ruggiero
Tipo : TutorialSettore : asp
Titolo : Creazione di un guestbook
     

Si ringrazia LUKEONWEB per la gentile concessione dell'articolo


:-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.

Nota: Possiamo utilizzare due file diversi per presentare il modulo e per visualizzare i messaggi, ma per un discorso pratico si è scelto di inglobare in un unico file i due servizi. Inoltre, la demo risultante da questo articolo è stata corredata di un nuovo servizio rispetto alla versione precedente, ovvero la possibilità di leggere soli 10 messaggi per pagina, grazie alla tecnica della paginazione.

:-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:

Nota: La stilizzazione utilizzata non verrà commentata, l'aspetto estetico del guestbook può essere personalizzato a seconda dei guisti del lettore.



<%@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.

:-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.

torna alla home page

 

v.2.0 - © Copyright 2002-06 Webstyler.it . Tutti i diritti sono riservati.
E' vietata la riproduzione anche parziale

Risoluzione ottimale 1024 x 768 

| info@webstyler.it | webmaster@webstyler.it |