Creare un sistema di votazione per dare un voto online a prodotti tramite Database e ASP
Rapido sistema di votazione con tre scelte che permette didare giudizi al volo su un prodotto qualsiasi. In questosistema l'unico controllo è dato da un cookie chenon permette di rivotare per lo stesso prodotto fino a quandoil cookie è attivo e/o presente. Questo scriptl'ho creato per il mio sito di recensioni letterarie maè facilmente adattabile a qualsiasi sito che presentiuna serie di record da votare estratti da un database.
La prima operazione da fare è quella di creareulteriori tre campi numerici nella tabella del database checontiene i prodotti che vorremo far votare. Questi campi ioli ho chiamati pos neu neg e il valore predefinito èlo zero. Il significato dovrebbe essere chiaro ma lospecifico per sicurezza. Pos è il campo per i commentipositivi, neu è il campo dei giudizi neutri, negè quello dei voti negativi.
Passiamo al codice premettendo che ometterò tuttoquello che riguarda la connessione al database e le selectche non riguardano le votazioni.
La pagina che visualizza il record si chiama read.asp. Inquesto simulazione stiamo visualizzando il record indicatodalla variabile Idprodotto.
<%'Nella pagina di visualizzazione del prodotto la nostra istruzione SQL saràSELECT pos, neu, neg FROM Tabella WHERE ID = " & Idprodotto'Valorizziamo le variabilipos = rs("pos")neu = rs("neu")neg = rs("neg")'Facciamo le percentuali e formattiamodim tot,pos_per,neu_per,neg_per 'dichiaro le variabilitot = (pos + neu + neg)if tot > 0 thenpos_per = Formatpercent((pos/tot),2) 'formatto al secondo decimaleneu_per = Formatpercent((neu/tot),2)neg_per = Formatpercent((neg/tot),2)elsepos_per = 0.00 'questo serve per evitare problemi di coerenza di formatoneu_per = 0.00neg_per = 0.00end if%>
Forse è superfluo dire che per visualizzare lepercentuali basta un fare un Response.Write delle variabilipos_per, neu_per, neg_per .... ma non si sa mai ;)
Vediamo come si vota.
Sotto al prodotto inseriremo tre icone (nel mio caso houtilizzato tre libri di colore diversi: rosso, giallo everde) che sono link alla pagina che gestisce il sistema divotazione.
I link alla pagina di votazione sono (ricordate che questosistema lo uso per votazioni al volo su libri)
<a href="vota.asp?voto=pos&docid=<%=Idprodotto%>"><img src="images/libro_pos.gif" border = "0" alt="Ottimo libro, lo consiglio a tutti" width="18" height="25"></a><a href="vota.asp?voto=neu&docid=<%=Idprodotto%>"><img src="images/libro_neu.gif" border = "0" alt="Da leggere, è piacevole" width="18" height="25"></a><a href="vota.asp?voto=neg&docid=<%=Idprodotto%>"><img src="images/libro_neg.gif" border = "0" alt="Non l'ho trovato interessante" width="18" height="25"></a>
Ecco la pagina vota.asp
<%Idprodotto = request("docid")voto = request("voto")pagina = "read.asp?docid="&Idprodotto 'ci serve per sapere dove tornareif request.Cookies("libro"& Idprodotto) <> Idprodotto thensSQL = "SELECT pos, neu, neg FROM Tabella WHERE ID = " & Idprodottors.Open sSQLpos = rs("pos")neu = rs("neu")neg = rs("neg")if voto = "pos" thenconn.execute "UPDATE Tabella SET pos = pos + 1 WHERE ID = " & Idprodottoend ifif voto = "neu" thenconn.execute "UPDATE Tabella SET neu = neu + 1 WHERE ID = " & Idprodottoend ifif voto = "neg" thenconn.execute "UPDATE Tabella SET neg = neg + 1 WHERE ID = " & Idprodottoend ifresponse.Cookies("libro"&Idprodotto) = Idprodottoend ifresponse.Redirect(pagina)%>
In questa pagina si controlla se chi sta votando ha il cookierelativo al prodotto. Se non lo ha viene incrementato ilvalore relativo alla votazione e si viene reindirizzati allapagina di provenienza. Se invece il cookie è presentesi viene subito reindirizzati.
Questo è tutto. Sicuramente lo script èmigliorabile sotto molti punti di vista ma è rapido eho constatato che non appesantisce il lavoro del server inmaniera significativa.