Un semplice sondaggio con le ASP

3 pagine in totale: <<Indietro 1 [2] 3 Avanti >>

Il sistema di votazione

Il file vota.asp avrà il compito di elaborare i dati presi dal form e dal database e di restituire l'output all'utente.

Eccone il contenuto:

<!-- #include file="adovbs.inc" -->
<%
'prima di iniziare l'elaborazione, eseguo un controllo in maniera
'da bloccare l'esecuzione e stampare a video un messaggio di errore
' nel caso l'utente abbia gia votato o non abbia
'selezionato nessuna opzione. Il controllo è basato sui cookie.

'estraggo dal cookie il valore
dim controllo
controllo = Request.Cookies("sondaggio")("controllo")

'se la variabile controllo è uguale a 1 l'utente ha gia votato
if controllo = 1 then
  Response.Write "Hai gia votato"

'controllo se è stata selezionata un'opzione nel form
elseif request.form("voto") = "" then
  Response.Write "Non hai selezionato nessuna opzione"
else

'l'utente non ha ancora votato, quindi creiamo il cookie in
'maniera da bloccare la votazione in futuro
  Response.Cookies("sondaggio")("controllo") = 1
 
  'ci connettiamo al database usando una connessione DNS-LESS
dim conn
set conn = Server.CreateObject("ADODB.Connection")
  conn.Open "driver={Microsoft Access Driver *.mdb)};dbq="&Server.MapPath("vota.mdb")
  dim rs
  set rs = Server.CreateObject("ADODB.Recordset")
  rs.Open "SELECT * FROM vota",conn, adOpenForwardOnly, adLockOptimistic
'prendiamo tutti i valori dal database
dim opzione1, opzione2, opzione3, opzione4, opzione5, voto
opzione1= rs.fields("opzione1")
opzione2= rs.fields("opzione2")
opzione3= rs.fields("opzione3")
opzione4= rs.fields("opzione4")
opzione5= rs.fields("opzione5")

'prende il valore dal form
voto = request.form("voto")

'controllo il valore che ha la variabile voto, ossia la votazione
'fatta dall'utente, e dopo aver incrementato di 1 il valore presente
'nel database, lo aggiorno
Select Case voto
Case "primo"
  opzione1 = opzione1 + 1
  rs("opzione1")=(opzione1)
  rs.Update
Case "secondo"
  opzione2 = opzione2 + 1
  rs("opzione2")=(opzione2)
  rs.Update
Case "terzo"
  opzione3 = opzione3 + 1
  rs("opzione3")=(opzione3)
  rs.Update
Case "quarto"
  opzione4 = opzione4 + 1
  rs("opzione4")=(opzione4)
  rs.Update 
Case "quinto"
  opzione5 = opzione5 + 1
  rs("opzione5")=(opzione5)
  rs.Update 
End Select

'libero risorse 
rs.close
set rs = nothing

'calcolo la somma dei valori presenti nel database 
dim total, unoper, dueper, treper, quattroper, cinqueper
total= CDbl((opzione1)+(opzione2)+(opzione3)+(opzione4)+(opzione5))

'per ogni valore calcolo la percentuale visualizzando solo un valore
' dopo la virgola
unoper = FormatPercent((opzione1 / total), 1)
dueper = FormatPercent((opzione2 / total), 1)
treper = FormatPercent((opzione3 / total), 1)
quattroper = FormatPercent((opzione4 / total), 1)
cinqueper = FormatPercent((opzione5 / total), 1)

'prendo le percentuali dei voti e li converto in interi.
' Questo servirà per visualizzare la barra nel grafico.
dim unobarra, duebarra, trebarra, quattrobarra, cinquebarra
unobarra = FormatNumber(unoper) * 100
duebarra = FormatNumber(dueper) * 100
trebarra = FormatNumber(treper) * 100
quattrobarra = FormatNumber(quattroper) * 100
cinquebarra = FormatNumber(cinqueper) * 100
%>

Per quanto riguarda la visualizzazione, possiamo gestirla come meglio vogliamo.
Consiglio comunque di mettere un controllo in maniera che all'apertura del sondaggio quando ci saranno di sicuro dei valori che restituiranno 0,0%, questi non vengano visualizzati ma al loro posto venga visualizzato un messaggio tipo "Nessun voto".

3 pagine in totale: <<Indietro 1 [2] 3 Avanti >>

Attenzione: Questo articolo contiene un allegato

Contenuti dell'articolo

Commenti
Dai un voto a questo articolo, ci aiuterà a migliorare il nostro sito (1 è il voto minimo, 5 il massimo).

Per procedere al rating dell'articolo devi essere autenticato.

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.


TUTORIALS
TOP TEN ARTICOLI
NOTIFICHE

Iscriviti alla nostra newsletter nuoviarticoli per ricevere e-mail le notifiche!

Indirizzo e-mail:
PROVIDER ASP.NET 2.0

Seleziona il database per avere il web.config pronto per Membership, Roles e Profile API.



IN EVIDENZA
MISC