>> Torna all'Homepage <<
Contattaci Entra nei forum Cerca nel sito
News della settimana ASP: esempi di pagine dinamiche Trucchi e suggerimenti per il PC Manuali e guide I dossier e gli approfondimenti di AmicoPc Il sito della settimana I racconti di Armando Staffa Chi siamo
     
 

 

Scarica i file
Scarica i file
citati in questa pagina

 


NUOVA VERSIONE DEL SONDAGGIO (versione intermedia)

In queste pagine vedremo come migliorare il sondaggio realizzato nel corso delle precedenti lezioni.
Per quanto riguarda il sondaggio s
ono disponibili tre versioni: la versione 'base' è la più semplice soprattutto per quanto riguarda la comprensione del codice ed è quella che abbiamo già visto negli esempi precedenti.
In questa versione 'intermedia' il codice è leggermente più complesso ma decisamente più performante nell'esecuzione.
L'ultima versione ('avanzata') invece consente una completa gestione del sondaggio direttamente online: sarà così possibile modificare il sondaggio, farne partire uno nuovo, modificare le opzioni disponibili...

In questa versione utilizzeremo una nuova funzionalità chiamata group by mediante la quale è possibile raggruppare dei record in base ai valori presenti in un campo.
A questo proposito desidero ringraziare Paolo De Nictolis, PhD Eng. Junior Programmer in R&D Department, Sysdata Sud Srl, che con grande competenza e disponibilità ha riscritto il codice di queste pagine.
In questa nuova versione del sondaggio è stato inoltre aggiunto un controllo che consente di evitare che un utente possa votare più di una volta, rendendo così più attendibile il sondaggio stesso.
Inoltre è stata aggiunta una pagina che consente di azzerare tutti i voti precedentemente espressi.

INDEX.HTM
La pagina index.htm è la stessa che abbiamo realizzato nella prima versione del sondaggio, quindi non richiede ulteriori approfondimenti.

VOTA.ASP
Una volta selezionata un'opzione del nostro sondaggio viene richiamata la pagina 'vota.asp', la quale deve verificare che l'utente non abbia già votato ed aggiungere il voto al nostro database.

Per sapere se un utente ha già votato o no, utilizziamo l'oggetto session (di cui abbiamo già parlato): quando un utente ha votato, viene creata una session, qundi se questa session esiste significa che l'utente ha già dato il suo voto e quindi non potrà più votare. Pertanto lo reindirizziamo verso una pagina di errore.

<%
if session("votato") = "si" then response.redirect "errore.htm"

Se questa session non esiste significa che l'utente non ha ancora votato, quindi il suo voto è valido.
Pertanto prendiamo dal modulo compilato il suo voto (request.form...) e verifichiamo che non si vuoto: infatti se non viene selezionata alcuna opzione del sondaggio e il modulo viene inviato la nostra variabile sarà vuota. Per evitare di aggiungere record vuoti al nostro database,effettuiamo questo controllo:

vota=request.form("vota")
if vota <>"" then

Se la variabile non è vuota (vota <> "") possiamo connetterci al database sondaggio.mdb, creare un nuovo record (AddNew) e aggiungere il voto dell'utente (rs.fields...).

Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & server.MapPath("database/sondaggio.mdb")
sql = "SELECT * FROM sondaggio"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql, conn, 3, 3
RS.AddNew
rs.Fields("vota")=vota

A questo punto aggiorniamo il database e chiudiamo la connesione svuotando il recordset.

rs.update
rs.close
set RS = Nothing
conn.close
set conn=Nothing

Ora creiamo la session mediante la quale sappiamo che l'utente ha già votato e le assegniamo una scedenza pari a trenta minuti (session.timeout...). Occorre però ricordare che se l'utente chiude il browser tale session viene eliminata, consentendogli così di votare anche prima dello scadere dei trenta minuti. Se però l'utente naviga su un altro sito e cerca di votare quando non sono ancora trascorsi trenta minuti, ottiene un messaggio di errore.

session("votato")="si"
session.timeout=30

Ora reindirizziamo l'utente verso la pagina che visualizza i risultati, ricordandoci di chiudere l'if.. then... aperto all'inizio.

response.redirect("report.asp")
end if

Nel caso però in cui un utente abbia premuto il pulsante 'vota' senza selezionare alcuna casella, la variabile vota sarebe vuota. In questo caso quindi non occorre aggiungere nulla al database, e nemmeno creare la session votato=si.
In questo caso facciamo in modo che vengano visualizzati direttamente i risultati del sondaggio senza fare altro.

if vota="" then
response.redirect("report.asp")
end if
%>

 

 

Insieme per un mondo migliore

Utenti connessi: 52

Invia questa pagina ad un amico

 

 

 

Chi siamo | Pubblicità | Note sulla privacy | Dicono di noi
Grafica cura di Paolo Omero
- Stefania Migliorucci

La riviera delle azalee