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

 


REALIZZARE UN SONDAGGIO (versione avanzata)

SONDAGGIO.MDB
Questo è il database su cui si basa il funzionamento del nostro sondaggio. Dovrà essere memorizzato nella cartella 'mdb-database' la quale dovrà avere i permessi di scrittura ablitati.
Il database (nel nostro caso di tratta di Access 2000) dovrà contenere dei campi così denominati:

- id: ovvero il campo contatore;
- testo: campo testo nel quale viene memorizzata la domanda del sondaggio;
- primo, secondo, terzo, quarto, quinto: campi numerici che conterrano il numero di voti per ogni opzione del sondaggio. Il valore iniziale è pari a zero;
- uno, due, tre, quattro, cinque: campi testo nei quali sono memorizzati i testi delle possiibli opzioni di scelta del sondaggio (per es. ottimo, buono...)

INDEX.ASP
E' l'homepage del sito. Dato che il testo del sondaggio non è specificato nel codice html della pagine ma è prelevato da un file di testo, questa pagina dovrà necessariamente avere estensione .asp
Il codice è molto semplice: col normale codice html creiamo una tabella, all'interno della quale visualizziamo le informazioni contenute nel file di testo, ovvero il testo del sondaggio nonché le varie opzioni (da un minimo di due ad un massimo di cinque).
Il file di testo viene generato e modificato automaticamente, come avremo modo di vedere più avanti.
Anche questo file, come il database, deve essere posizionato in una cartella avente i permessi di scrittura abilitati (nel nostro caso si tratta della cartella mdb-database).

<html>
<head>
<title>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">
<table width="128" border="0" cellspacing="0" cellpadding="0" align="center">
<form method="post" action="vota.asp">
<tr bgcolor="#FFFFFF" valign="middle">
<td height="45" width="134"> <%
dim miofile
dim objOpenFile
dim objFso
dim objFile

miofile=server.mappath("mdb-database/index.txt")

set objFso = Server.CreateObject("Scripting.FileSystemObject")
set objOpenFile = objFso.OpenTextFile(miofile,1,false,0)
response.write objOpenFile.ReadAll
set objFso=nothing
%></td>
</tr>
<tr bgcolor="#FFFFFF" valign="middle">
<td height="32">
<div align="center">
<input type=image src="vota.gif" alt="Vota!" border="0" name="Vota!" width="40" height="20">
</div>
</td>
</tr>
</form>
</table>
</body>
</html>

 

 

VOTA.ASP
Premendo il pulsante 'vota' viene richiamata la pagina 'vota.asp' la quale dovrà memorizzare il voto nel database.
Innanzitutto controlliamo che l'utente non abbia ancora votato: in pratica controlliamo che non esista la session chiamata votato. Infatti dopo la votazione viene creato l'oggetto session in questione; quindi se esiste questa session significa che l'utente ha già votato, quindi lo reindirizziamo verso una pagina di errore, alla quale passiamo il parametro tipo=votato
Pertanto avremo

<%
if session("votato") = "si" then response.redirect "errore.asp?tipo=votato"

Come prima cosa dobbiamo vedere qual è stato il voto dell'utente, ovvero quale pulsante di opzione ha selezionato.
Per far questo è sufficiente scrivere:

vota=request.form("vota")

Nel caso cui si prema il pulsante 'Vota' senza selezionare alcuna opzione, la variabile in question sarebbe vuota, quindi non bisogna aggiungere nulla al codice ma semplicemente vengono mostrati a video i risultati del sondaggio.
Quindi solo se la variabile vota non è vuota eseguiamo la connessione al database e le operazioni connesse.

if vota <>"" then

Normale connessione al database

Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & server.MapPath("mdb-database/sondaggio.mdb")

Poiché nel database sono memorizzati anche i sondaggi precedenti, dobbiamo selezionarli ordinandoli in ordine decrescente rispetto al campo contatore, ovvero dal più recente al più vecchio.
In questo modo siamo sicuri che il primo sondaggio trovato sarà quello attualmente in uso.

sql = "SELECT * FROM sondaggio order by id desc"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql, conn, 3, 3

A questo punto dobbiamo verificare quale sia il valore della variabile vota, ovvero quale opzione del sondaggio l'utente ha selezionato.
In base alla sua scelta noi dovremo regolarci di conseguenza: infatti se l'utente ha scelto la prima opzione, la variabile vota sarà uguale a primo: quindi selezioniamo il campo chiamato primo dal database, preleviamo il valore contenuto e lo aumentiamo di un'unità.
E così per le altre opzioni di scelta.

Per far questo utilizziamo la funzione Select case nome_variabile:
in pratica elechiamo i possibili valori che questa variabile può assumere: per ogni valore specifichiamo il codice ASP da eseguire.
La struttuara è la seguente:

select case nome_variabile

case "primo_valore"
codice da eseguire

case "secondo valore"
codice da eseguire

...

end select

Per esempio: se la variabile vota ha valore quarto (Case "quarto") il codice da eseguire sarà rs.Fields("quarto")=rs("quarto")+1

Select case vota
Case "primo"
rs.Fields("primo")=rs("primo")+1
Case "secondo"
rs.Fields("secondo")=rs("secondo")+1
Case "terzo"
rs.Fields("terzo")=rs("terzo")+1
Case "quarto"
rs.Fields("quarto")=rs("quarto")+1
Case "quinto"
rs.Fields("quinto")=rs("quinto")+1
end select

Fatto questo aggiorniamo il database e chiudiamo la connessione.

rs.update
Set RS = Nothing
Set conn=Nothing

Ora creiamo una session che chiamiamo votato alla quale assegniamo il valore si. In questo modo sappiamo che l'utente ha già votato e non potrà farlo se non dopo trenta minuti, ovvero alla scadenza della session stessa (session.timeout=30)

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

Ora reindirizziamo l'utente verso la pagina 'report.asp' la quale visualizza i voti del sondaggio attuale nonché dei sondaggi precedenti.

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

Nel caso in cui la variabile vota sia vuota, significa che l'utente ha premuto il pulsante di invio senza selezionare alcuna opzione: in questo caso lo reindirizziamo subitoi verso la pagina dei risultati.

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

 

<< indietro

Utenti connessi: 66

Invia questa pagina ad un amico

 

 

 

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