|

REALIZZARE UN SONDAGGIO (versione avanzata)

REPORT.ASP
Questa pagina ha il compito di visualizzare il risultato
del sondaggio attuale nonché di eventuali sondaggi
precedenti.
Cominciamo a scrivere le intestazioni della pagina.
|
<html>
<head>
<title>Risultati sondaggio</title>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1">
<style TYPE="text/css">
<!--
A:link { text-decoration: none; }
A:visited { text-decoration: none; }
A:active {text-decoration: none; }
A:hover {text-decoration: underline; }
A:hover {color: orange }
.link:hover {color: #000000; }
-->
</style></head>
<body
bgcolor="#FFFFFF" text="#333333"
link="#000099" vlink="#000099"
alink="#000099">
|
Creiamo
la connessione al database e selezioniamo i sondaggi
presenti, ordinandoli in base al campo contatore in
ordine decrescente, in modo che il sondaggio più
recente (ovvero quello attuale) sia visualizzato al
primo posto.
|
Dim
Conn
Set Conn = Server.CreateObject("ADODB.Connection")
conn.Open "driver={Microsoft Access Driver
(*.mdb)};dbq=" & server.mappath("mdb-database/sondaggio.mdb")
Dim rs
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open "select * from sondaggio order by
id desc", conn
|
Dato
che vogliamo visualizzare il risultato di tutti
i sondaggiu presenti, anche quelli vecchi, le operazioni
che andremo a compiere dovranno essere ripetute finché
non si giunge all'ultimo reocrd del database (do
while not rs.eof)
Nella
variabile prima memorizziamo il valore prelevato
dal campo primo del database. Così anche
per la variabile seconda.
|
prima=rs("primo")
seconda=rs("secondo")
|
Il sondaggio in questione può avere da un minimo
di due ad un massimo di cinque opzioni di scelta. Nel
caso in cui le opzioni siano solo due, i campi terzo,
quarto, quinto (ovvero i campi in cui sono memorizzari
i testi di queste opzioni) avranno come unico valore
il simbolo -.
Pertanto se rs("tre") (quindi se il sondaggio
prevede una terza opzione di scelta) è diverso
da "-" allora la variabile terza assumerà
il valore prelevato dal campo terzo del database
(ovvero conterrà il numero di voti ottenuti dalla
terza opzione).
In caso contrario la variabile in questione avrà
valore pari a zero (else terza = 0).
|
if
rs("tre") <> "-" then
terza=rs("terzo")
else
terza = 0
end if
|
Ugualmente
per le variabili quarta e quinta.
|
if
rs("quattro") <> "-"
then
quarta=rs("quarto")
else
quarta=0
end if
if
rs("cinque")<>"-" then
quinta=rs("quinto")
else
cinque=0
end if
|
Ora
contiamo il numero di voti totali. Anche se il sondaggio
ha meno di cinque opzioni, noi sommiamo tutte le variabili
appena create: infatti abbiamo detto che nel caso in
cui un'opzione non sia selezionabile il relativo campo
conterrebbe il simbolo '-' e di conseguenza la variabile
associata avrebbe valore zero.
Pertanto il codice da inserire diventa:
|
totale=
(prima + seconda + terza + quarta + quinta)
|
Verifichiamo
che il totale abbia un valore diverso da zero (ovvero
almeno una persona ha votato): in quetso modo evitiamo
di dividere un numero per zero (cosa che genera un errore
durante l'esecuzione).
Calcoliamo
le percentuali per ogni opzione del sondaggio.
Utilizziamo il metodo già visto per le due precedenti
versioni del sondaggio 'format.percent', la cui
struttura è
format.percent(numero,
cifre_decimali)
dove
il numero da trasformare in percentuale è dato
dalla variabile divisa per il totale.
I valori così ottenuti sono memorizzati nella
variabile prima2, seocnda2, terza2...
|
prima2= FormatPercent((prima / totale), 1)
seconda2= FormatPercent((seconda / totale), 1)
terza2= FormatPercent((terza / totale), 1)
quarta2= FormatPercent((quarta / totale), 1)
quinta2= FormatPercent((quinta / totale), 1)
|
Nel
caso in cui nessuno abbia ancora espresso un voto valido,
il totale avrà valore zero. Di conseguenza tutte
le variabili (in cui sono memorizzate le relative percentuali)
avranno valore pari a zero.
|
ELSE
prima2 = 0
seconda2 = 0
terza2 = 0
quarta2 = 0
quinta2 = 0
END IF
|
Ora
prendo le percentuali così ottenute (senza decimali)
e moltiplico per due: ottengo così un valore
che utilizzerò per specificare la dimensione
della barre colorate. In questo modo al variare della
percentuali di un'opzione, la relativa barra si modificherà
in proporzione.
Utilizziamo la funzione Mid(numero,inizio,fine) dove
numero è la percentuale di voti per la
prima opzione, inizio è la prima cifra
da prendere (ovvero quella nella posizione uno) e fine
è l'ultima cifra del numero da prendere (ovvero
la posizione due, in quanto non utilizziamo i decimali).
|
prima3
= (Mid( prima2, 1, 2))*2
seconda3 = (Mid( seconda2, 1, 2))*2
terza3 = (Mid( terza2, 1, 2))*2
quarta3 = (Mid( quarta2, 1, 2))*2
quinta3 = (Mid( quinta2, 1, 2))*2
%>
|
|