29 messaggi dal 07 settembre 2001
ho creato uno script con la possibilita' di inserire articoli ecc...
vorrei che questo script pero' permettesse all'utente di votare l'articolo. La votazione dovrebbe avvenire tramit l'uso di alcune stelline, e la media dovrebbe essere visualizzabile (sempre con queste famose stelline), naturalmente lo stesso utente non deve poter votare piu' volte...come fare?

grazie

428 messaggi dal 06 settembre 2002
Bhè, potresti scrivere un cookies che lo fai scadere dopo 1 giorno (per permettere un voto al giorno) in questo modo:
prima del codice che aggionge il voto scrivi:

'controlla se l'utente ha gia votato
if trim(request.cookies("voti")("kiave"))="" then
'
vota

dopo che lìutente ha votato
'imsposta la scadenza del cookie al giorno successivo,
response.cookies("voti").expirer=date()+1
response.cockies("voti")("kiave")="votato"

else
response.write("Hops... non puoi votare erchè hai gia votato")


per quanto riguarda la media e le stelline non ho capito! usi un database per la visualizzazione degli articoli? i voti dove vanno? la media di cosa fai visualizzare?


http://www.manikomio.it
-La gente da buoni consigli se non può più dare il cattivo esempio-

§§################################################§§
-La gente da buoni consigli se non può più dare il cattivo esempio-
§§################################################§§
29 messaggi dal 07 settembre 2001
Ciao,
sinceramente oltre al problema del permettere di votare una volta al giorno, ho anche il problema dello script vero e proprio!

Mi spiego meglio:
gli articoli o le recensioni scritte da me o chi per me vengono salvate su un db. Io vorrei permettere agli utenti che leggono il mio materiale, di esprimere un voto. Questo voto dovrebbe essere dato su una base di 5 possibilita', queste 5 possibilita' dovrebbero essere rappresentate da delle stelle.

Trovi un esempio di quello che voglio realizzare io, qui: http://www.manuali.net/manuali/categorie.asp?cat=Grafica naturalmente al posto delle stelle in questo script ci sono dei pallini!

Fammi sapere

428 messaggi dal 06 settembre 2002
Allora, dovresti aggiongere un campo per i voti al tuo database, un campo di tipo voti e un campo numerovoti entrambi di tipo intero!
nel campo voti ci vai ad aggiungere 1 se è stata scelta l'opzione 1, 2 se è stata scelta l'opzione 2 3 opzione 3 etc etc... nel campo numero di voti invece ci aggiungi semplicemente il numero di click che sono stati fatti per votare quell'articolo a prescindere dall'opzione scelta!

insomma, le stelle verranno aggiu te in base alla divisione

cint(voti/dumerodivoti)

ora nel ciclo di stampa...
"SELECT * FROM articoli ORDER BY voti"n
record.open strSQL, connessione
do while not recod.eof

'selezioni lìimagine relativa alla media voti/numerovoti
select case cint(record("voti")/record("numerivoti"))
case 0 img="stellavuota.gif'"
case 1 img="1stella.gif"
case 2 img="2stelle.gif"
case 3 img="3stelle.gif"
case 4 img="4stelle.gif"
case 4 img="5stelle.gif"
end select

response.write("articolo "&record("titoloarticolo")
response.write("<img src='"&img&"'><br>")
LOOP



http://www.manikomio.it
-La gente da buoni consigli se non può più dare il cattivo esempio-

§§################################################§§
-La gente da buoni consigli se non può più dare il cattivo esempio-
§§################################################§§
29 messaggi dal 07 settembre 2001
Ciao,
grazie 1000 per la tuar risposta!

Ho un problema, anzi c'è stato un piccolo cambiamento (ti prego non ti arrabbiare ed aiutami).

Ho dato un'occhiata su un sito, ed ho visto una cosa molto piu' interessate. Non voglio più inserire le stelline, ma voglio fare una media numeriva. Le possibilità di voto vanno da 1 a 10.

Come posso fare? Io avrei pesanto di creare un campo select

<select name=voto>
<option>1</option>
<option>2</option>
ecc....

di far selezionare il voto, tramite <input type=submit name=Vota> e permettere all'utente di votare.

Da qui mi blocco. Come faccio a salvare tutti i voti ed a stampare (con response.write) la media numerica (che deve essere del tipo 5.5 e non 5.56)? Inoltre vorrei che il voto fosse unico. Potresti postarmi il codice?

grazie 1000 sei la mia salvezza :)

428 messaggi dal 06 settembre 2002
Allora, intanto il campo select scrivilo cosiì:

<select name=voto>
<option value=1>1</option>
<option value=2>2</option>
<option value=3>3</option>
<option value=4>4</option>
<option value=5>5</option>
</select>

allora, quando si vota nel database scrivi:
record("voti")=record("voti")+cint(resuest("voto")
record("numerovoti")=record("numerovoti")+1

per stampare la media arrotondata ad una cifra scrivi nel ciclo di stampa:

do while not recod.eof

'controlla prima che l'articolo sia stato votato
if record("numerovoti")>0 then

'calcoli la media arrotondata ad una sola cifra
media=round(record"(voti")/record("numerovoti"),1)
response.write("articolo "&record("titoloarticolo")
response.write("la media è:"&media&"<br>")

else
respnse.write("l'articolo non è stato ancora votato")
end if

LOOP




http://www.manikomio.it
-La gente da buoni consigli se non può più dare il cattivo esempio-

§§################################################§§
-La gente da buoni consigli se non può più dare il cattivo esempio-
§§################################################§§
29 messaggi dal 07 settembre 2001
grazie 1000 per la tua risposta :)
altra domanda (non mi uccide per favore):
se io volessi che l'utente inserisse anche un commento?

grazie

428 messaggi dal 06 settembre 2002
Bhè, dovresti inserire anche una tabella per i commenti (chiamata commenti) nel DB,
questa tabella dovrà contenere 2 campi: ID (di tipo numerico) e commento di tipo TESTO
assieme al form select fai comparire anche un text area chiamato commento:

al momento del voto fai un controlle se l'utente ha digitato qualcosa,se è il stato inserito qualcosa nel campo commento della tabella "commenti" . inserisci ID="id dell'articolo" e commento=request("commento") in poche parole:

inserimento voti:
strSQL="SELECT * FROM articoli WHERE id="&tuoid
record.open strSQL, connessione, 3, 3
record.addnew
record("voti")=record("voti")+cint(resuest("voto")
record("numerovoti")=record("numerovoti")+1
record.update
record.close

if trim(request("commento")<>"" then
inserimento commenti
strSQL="SELECT * FROM commenti"
record.open strSQL,connessione,3,3
record.addnew
record("commento")=request("commento")
record("id")=tuoid
record.update
record.close
end if

stampa:
sql1="SELECT * FROM articoli"
record1.open sql1, connessione
do while not record1.eof
'controlla prima che l'articolo sia stato votato
if record("numerovoti")>0 then
sql2="SELECT*FROM commenti WHERE id="&record1("id")
record2.open sql2, connessione
if record2.eof OR record2.bof then
response.write("nessun commmento per l'articolo "&record1("titoloarticolo")
else
do while not record2.eof then
response.write(record1("titoloarticolo")&":commento="&record2("commento")&"<br>")
record2.movenext
loop
record2.close
end if
'calcoli la media arrotondata ad una sola cifra
media=round(record"(voti")/record("numerovoti"),1)
response.write("articolo "&record("titoloarticolo")
response.write("la media è:"&media&"<br>")
else

response.write("l'articolo non è stato ancora votato<br>")
end if
record1.movenext
LOOP

http://www.manikomio.it
-La gente da buoni consigli se non può più dare il cattivo esempio-

§§################################################§§
-La gente da buoni consigli se non può più dare il cattivo esempio-
§§################################################§§

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.