Paramétrage cookie sur système de vote

  • Auteur de la discussion fred1254
  • Date de début

fred1254

Nouveau membre
Bonjour,



j'ai un système de vote en place (trouvé sur http://www.asp-php.net/scripts/asp-php/vote.php) que j'ai adapté pour mon site, il est très bien par contre il crée un cookie qui empêche de voter plusieurs fois, le vote étant destiné aux enfants je souhaiterais les laisser voter autant de fois qu'ils le souhaitent. je mets le code de ma page ci-dessous, si quelqu'un a une idée de ce que je dois changer merci de m'en faire part :). J'ai bien entendu essayer de modifier moi-même le code mais je n'arrive pas au résultat voulu.







[cpp]<html>
<head>
<title>Votez pour votre affiche pr&eacute;f&eacute;r&eacute;e</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript">
<!--
function Retour (fichier,w,h) {
ff=window.open(fichier,"new","toolbar=no,scrollbars=no,left=340,top=100,resizable=no"); if(ff) { ff.focus();ff.resizeTo(650,570) }
}
//-->
</script>
</head>
<body bgcolor="#b3dc10" text="#000000">
<table width="300" border="0" cellspacing="0" cellpadding="0" height="52">
<tr>
<td width="300" height="32">
<div align="center"><img src="Concours.gif" width="162" height="32"></div>
</td>
</tr>
<tr>
<td width="300" height="20">
<div align="center"><img src="Votez.gif" width="247" height="20"></div>
</td>
</tr>
</table>
<p>
<%@LANGUAGE="VBSCRIPT"%>
</p>
<table width="300" border="0" cellspacing="0" cellpadding="0" height="328">
<tr>
<td width="300" valign="top">
<!--#include file="../../../../db/Connections/VoteBDD.asp" -->
<%
SQL = "SELECT TOP 1 * FROM Questions " & _
"ORDER BY VoteDate DESC"
RSQuestions.open SQL, Conn, 3, 3
' on ne selectionne que le dernier sondage entré (top 1)

VoteID = RSQuestions("VoteID")
' on récupère l'ID du sondage, que l'on placera dans un cookie

VoteQuestion = RSQuestions("VoteQuestion")
' on récupère la question du sondage en cours


' --------------- Validation du formulaire ---------------
' si le formulaire est validé, on prepare la mise à jour de la table...
If Request.QueryString("valide") = "true" then

SQL = "UPDATE Reponses " & _
"SET Compteur = Compteur + 1 " & _
"WHERE VoteOptionID= " & _
Request.QueryString("choix") & ";"

If Int(Request.Cookies("VoteCookie")("VoteID")) <> VoteID then
' si le visiteur n'avait pas encore donné son avis pour ce vote... et on execute...

Conn.Execute SQL
Response.Cookies("VoteCookie").Expires = Now() + 7
'on autorise 1 vote tout les now() + x jours, à définir selon vos besoins
Response.Cookies("VoteCookie")("VoteID") = VoteID
Response.write " Le vote est validé. Merci!"

End if
End if
' ------------ Fin de validation du formulaire -----------


SQL = "SELECT * FROM Reponses " & _
"WHERE VoteID = " & VoteID
set RSReponses = Server.CreateObject("ADODB.Recordset")
RSReponses.Open SQL, Conn, 3, 3
' on extrait les réponses possibles pour ce sondage

Total = 0

While Not RSReponses.EOF
' on récupère le nombre de réponses totales données pour ce sondage
Total = Total + RSReponses("Compteur")
RSReponses.MoveNext
Wend


RSReponses.MoveFirst
' on se replace sur le 1er enregistrement


If Request.QueryString("voir") = "true" OR Request.QueryString("valide") = "true" _
OR cInt(Request.Cookies("VoteCookie")("VoteID")) = VoteID then
' --------------- Affichage des resultats ---------------
' si on a voté, déjà voté, ou demandé les résultats

' protection "Dépassement de capacité" d'un entier
' si l'on affiche les résultats et que personne n'a encore voté

If Total = 0 then
Response.write "Aucun vote !"
Else

' création de la table HTML
%>
<br>
<table width="302">
<tr>
<td colspan="3"> <%=VoteQuestion%> <br>
</td>
</tr>
<% while not RSReponses.EOF
pVotes = (RSReponses("Compteur") / Total) * 100
' pourcentage = (réponses pour la question / total réponses données) * 100
%>
<tr>
<td width="44"><%=RSReponses("VoteOption")%></td>
<td width='14'><img src='/Marches/voteASP/vote.gif' height='5' width='<%=Round(pVotes,0)%>'></td>
<td width="228"><%=Round(pVotes,1)%> %</td>
</tr>
<% RSReponses.movenext : wend
'on boucle sur les réponses en sortant leur désignation
' le pourcentage de vote arrondi et une barre graphique
%>
</table>
<br>
<% Response.write Total & " votes ont été effectués" : End If %>
<% Else
' --------------- Affichage du formulaire ---------------
' si le visiteur n'a pas encore voté
%>
<table width="302" align="center">
<form name="poll" action="vote.asp?voir=true" method="get">
<tr>
<td colspan="3"> <%=VoteQuestion%> </td>
</tr>
<% while not RSReponses.EOF
' on boucle sur les réponses, cette fois-ci dans un formulaire
' sous forme de bouton radio
%>
<tr>
<td width="176"><%=RSReponses("VoteOption")%></td>
<td width="114">
<input type="radio" name="choix" value="<%=RSReponses("VoteOptionID")%>">
</td>
</tr>
<% RSReponses.movenext : wend %>
<tr>
<td colspan="2">
<p align="center"><br>
<input type="submit" value="Voter!" name="submit">
<input type="hidden" name="valide" value="true">
<br>
<a href="vote.asp?voir=true">Voir les résultats</a> </p>
</td>
</tr>
</form>
</table>
<div align="center">
<% End if %>
<br>
<a href='JavaScript:Retour("concours.html")'><font face="Comic Sans MS, Verdana, Arial" size="2">Retourner
sur le site des 10 ans !</font></a></div>
</td>
</tr>
<tr>
<td width="300">&nbsp;</td>
</tr>
</table>
</body>
</html>[/cpp]
 

Ducktale

Grand Maître
Utilise les balises
Code:
pour encadrer les lignes de code STP, c'est illisible là :)

Mais, par rapport au fonctionnement du script, il ne t'affiche les résultats que si tu as déjà voté. Si tu permets donc de voter plusieurs fois, tu risques de ne jamais avoir les résultats affichés.
 

Ducktale

Grand Maître
Ben soit tu modifies le script pour qu'il t'affiche le formulaire et les résultats dans deux blocs différents, soit tu utilises un script différent :)
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 098
Messages
6 717 051
Membres
1 586 282
Dernier membre
Yannick3553
Partager cette page
Haut