Jobbar på en omröstning. Just nu kan man rösta hur många gånger som helst... det jag vill är en funktion (if sats) som kollar om man röstat.
Jag har 3 tabeller. En som heter poll_fraga som sparar frågan och pollID. En som heter poll_svar som sparar pollID, svar, svarID och klick... Och i den tredje tabellen som heter poll_users har jag username, pollID och svarID.
Röstningen är klar, allt funkar finfint förutom checken som jag inte fått att fungera.
Såhär ser koden ut för tillfället:
<%MySQL = "SELECT * FROM poll_fraga order by id desc limit 1 "
Set RecSet = Conn.Execute(MySQL)%>
<%If RecSet.EOF then%>
Ingen fråga inlagd
<%Else%>
<%=RecSet("fraga")%>
<%End If%>
<%MySQL = "SELECT * FROM poll_svar where pollID = " & RecSet("id") & " order by svarNR "
Set Svar = Conn.Execute(MySQL)
MySQL = "SELECT sum(klick) As tot FROM poll_svar where pollID = " & RecSet("id") & " "
Set RS = Conn.Execute(MySQL)
totalt = RS("tot")
If Svar.EOF Then%>
Inga frågor!
<%End If
Do Until Svar.EOF
stat = Svar("klick")
If stat <> "0" Then
res = (stat/totalt)* 200
Else
res = "0"
End If%>
<table cellspacing="0" cellpadding="2" border="0" width="100%">
<tr>
<td width="200"><a href="forms/poll_rosta.asp?id=<%=Svar("id")%>&val=<%=Svar("svarnr")%>&pollID=<%=Svar("pollID")%>"><%=Svar("svar")%></a></td>
<td rowspan="2" width="30" valign="bottom" align="right">(<%For i=1 to Len(stat)%><%=Mid(stat,i,1)%><%Next%>)</td>
</tr>
<tr>
<td width="90" height="7"><img src="images/stapel.gif" width="<%=Round(res,0)%>%" height="5" border="1"></td>
</tr>
<%Svar.MoveNext
Loop%>
<tr>
<td colspan="2">Antal röster: <%For i=1 to Len(totalt)%><%=Mid(totalt,i,1)%><%Next%></td>
</tr>
</table>
och där jag sparar informationen när man röstar:
Set RecSet = Conn.Execute("Select * From poll_svar Where id = " & Request.QueryString("id") & " And svarNR = " & Request.QueryString("val"))
Conn.Execute("Update poll_svar Set klick = klick + 1 Where id = " & Request.QueryString("id") & " And svarNR = " & Request.QueryString("val"))
Conn.Execute("Insert Into poll_users(pollID, username, svarnr) Values(" & Request.Querystring("pollID") & ",'"& Session("username") &"', " & Request.Querystring("val") & ")")
strRedirPage = Request.ServerVariables("HTTP_REFERER")
Response.Redirect(strRedirPage)
Hmm du skulle väll kunna göra nått med cookies.. e dock helt ny på detta så jag e inte säker på att det är såhär det funkar!
if Response.Cookies("rostat")= "ja" then
response.write "du har redan röstat"
else
Set RecSet = Conn.Execute("Select * From poll_svar Where id = " & Request.QueryString("id") & " And svarNR = " & Request.QueryString("val"))
Conn.Execute("Update poll_svar Set klick = klick + 1 Where id = " & Request.QueryString("id") & " And svarNR = " & Request.QueryString("val"))
Conn.Execute("Insert Into poll_users(pollID, username, svarnr) Values(" & Request.Querystring("pollID") & ",'"& Session("username") &"', " & Request.Querystring("val") & ")")
strRedirPage = Request.ServerVariables("HTTP_REFERER")
Response.Redirect(strRedirPage)
Response.Cookies("rostat")= "ja"
end if
Jo men de vill jag inte :) Vill spara det i en databas så man som inloggad bara kan rösta EN gång... Menar, man ska inte kunna rösta igen om man tar bort sina cookies eller byter dator.
Varför måste du loopa igenom dem?
Det räcker väl om du kollar om just den inloggade liraren har röstat?
typ:
Set RecSet = Conn.Execute("Select svarnr From poll_users Where id = " & Request.QueryString("id") & " And username = & ",'"& Session("username") &"'")
If NOT Recset.EOF then
response.write "du har redan röstat"
else
Conn.Execute("Update poll_svar Set klick = klick + 1 Where id = " & Request.QueryString("id") & " And svarNR = " & Request.QueryString("val"))
Conn.Execute("Insert Into poll_users(pollID, username, svarnr) Values(" & Request.Querystring("pollID") & ",'"& Session("username") &"', " & Request.Querystring("val") & ")")
strRedirPage = Request.ServerVariables("HTTP_REFERER")
Response.Redirect(strRedirPage)
end if
strRedirPage = Request.ServerVariables("HTTP_REFERER")
Set RS = Conn.Execute("Select * From poll_users Where pollID = " & Request.Querystring("pollID") & " AND username = '" & Session("username") & "' ")
If NOT RS.EOF then
Session("fel") = "Du kan bara rösta en gång per fråga!"
Response.Redirect(strRedirPage)
else
Conn.Execute("Update poll_svar Set klick = klick + 1 Where id = " & Request.QueryString("id") & " And svarNR = " & Request.QueryString("val"))
Conn.Execute("Insert Into poll_users(pollID, username, svarnr) Values(" & Request.Querystring("pollID") & ",'"& Session("username") &"', " & Request.Querystring("val") & ")")
Response.Redirect(strRedirPage)
End If%>
Mvh
260 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2