webForumDet fria alternativet

poll-script

15 svar · 420 visningar · startad av qwerty

qwertyMedlem sedan jan. 2001391 inlägg
#1

Laddade hem en poll-funktion från www.swede.com, men lyckas inte få den att funka.

Nån som har lust att ladda ner den och se om den går att få att fungera? http://www.swede.com under asp-script.

------------------
Qwerty

Den som provar han testar...

qwertyMedlem sedan jan. 2001391 inlägg
#2

Så här är fallet:

Jag försöker göra en poll med fem alternativ. Man ska välja två stycken och man får bara rösta en gång. Den som jag hittade ovan verkar vara idealisk, men som ni vet får jag den inte att fungera.
Om ingen kan hjälpa mig att få den att funka, undrar jag om någon kan tipsa mig om ett sådant script. Har sökt här på wf efter en tråd, men inte hittat något som stämmer in riktigt.

Det vore super-hygglo om nån kunde försöka hjälpa mig lite. Den poll jag använder nu bygger på två textfiler. ja och nej. Men jag skulle vilja ha med en databas och ha en admin-funktion för att kunna lägga till nya frågor o sånt....

------------------
Qwerty

Den som provar han testar...

crisse6Medlem sedan dec. 20002 441 inlägg
#3

varför inte ta och gå in på idg.se under webmastern??? det finns ju pollskript med högst 5 alt och minst 2 alt... med cookies så man inte kan rösta flera ggr.

------------------
www.groda.net *kvack*, *kvack*

qwertyMedlem sedan jan. 2001391 inlägg
#4

...har kikat på den. Problemet är att det är en access 2000-databas och jag kan bara använda access 97-baser. Därför ställer jag följande fråga.

------------------
Qwerty

Den som provar han testar...

McMillerMedlem sedan okt. 2000210 inlägg
#5

Om du har access 97 så är det väl bara att göra en databas där som är likadan och använda den istället? för jag ha rför mig att det står i idgs text hur den är uppbyggd. bara en idé :)

------------------
//McMiller

Jag är inte idiot, jag har bara fem skruvar och en mutter lös...

iceM2Medlem sedan mars 2001311 inlägg
#6

Dessutom går det alltid att ladda hem en Access 97 alternativt 2000 databas från webstudio...

------------------
http://www.hutters.net

qwertyMedlem sedan jan. 2001391 inlägg
#7

...dessutom var det inte från webstudio utan från webbmastern och dessutom skickade dom med en textfil som det stod så här i:

Databasen är av Microsoft Access 2000-format och fungerar inte med lägre versioner av Access.

Så det så!

------------------
Qwerty

Den som provar han testar...

qwertyMedlem sedan jan. 2001391 inlägg
#8

...har fått pollscriptet från mikrodatorn att fungera. (så som dom vill). Jag försöker dock att modifiera det för att det ska passa mina behov och det går inte riktigt lika bra. Man kan bara rösta på ett alternativ-jag vill att man ska kunna rösta på 2...egentligen är det väl mest det som jag vill. Någon som har ett hett tips på hur jag ska göra.
Dels för att man max ska kunna sätt 2 kryss i formuläret och dels så att den räknar upp värdet för båda svaren på resultatsidan.

Har försökt en halv dag nu, men alltid är den något som inte fungerar (...som jag inte klarar kanske jag borde skriva.)

------------------
Qwerty

Den som provar han testar...

[Redigerat av qwerty den 28 maj 2001]

erkaMedlem sedan dec. 19994 597 inlägg
#9

Jag gjorde en flervals poll för ett community med admin funktioner. Här ser du koden för att kolla om svaret var rätt och sidan där man röstar

pollcheck.asp

   <%
Set Databas = Server.CreateObject("ADODB.Connection")
MdbFilePath = Server.MapPath("db/LocalPoll.mdb")
Databas.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";"

SQLStmt = "SELECT * FROM PollAnswear Where PollAnswearId = "& Request.Form("svar") &""
Set RS = Databas.Execute(SQLStmt)

PollId = Request.Form("pollid")

'OM DET VAR FEL SVARAT

If RS("pollscore") = false Then
	Response.Write"<b>Detta var fel</b><br>"

	SQLStmt2 = "SELECT * FROM PollScore Where PollId = "& PollId &" And UserName = '"& Session("username") &"' "
	SET RS2 = Databas.Execute(SQLstmt2)

	If RS2.EOF = True then

		Response.Write"Du har inte röstat på denna fråga tidigare, men du hade fel så noll poäng till dig!"
		SQL = "INSERT INTO POLLSCORE"
		SQL = SQL & "(PollId,Username) "
		SQL = SQL & "VALUES(" & PollId & ", '" & Session("username") & "')"
		Databas.Execute(SQL)
		poang = 0
		SQLStmt ="UPDATE SCORE SET PollScore = PollScore +"& poang &"  Where Username = '"& Session("username") &"'"
		Databas.Execute(SQLStmt)
	Else
		Response.Write "Redan Röstat, inga poäng utdelade"
	End if
	RS2.close

'OM DET VAR RÄTT SVARAT

ElseIf RS("pollscore") = true Then
	Response.Write"<b>Detta var ju helt rätt</b><br>"
	

	SQLStmt2 = "SELECT * FROM PollScore Where PollId = "& PollId &" And UserName = '"& Session("username") &"' "
	SQLStmt = "SELECT PollCorrect, PollId From PollQuestion where PollId = "& PollId &""
	Set RS = Databas.Execute(SQLStmt)
	SET RS2 = Databas.Execute(SQLstmt2)

	If RS2.EOF = True then
	
		Response.Write"Du har inte röstat på denna fråga tidigare, du hade helt Rätt så ett poäng till dig!"
		SQL = "INSERT INTO POLLSCORE"
		SQL = SQL & "(PollId,Username) "
		SQL = SQL & "VALUES(" & PollId & ", '" & Session("username") & "')"
		Databas.Execute(SQL)
		poang = 1
		SQLStmt ="UPDATE SCORE SET PollScore = PollScore +"& poang &"  Where Username = '"& Session("username") &"'"
		Databas.Execute(SQLStmt)
	Else
		Response.Write "Redan Röstat, inga poäng utdelade"

	End if
	RS2.close

Response.Write"<br><br><b>Svaret på frågan:</b><br>"
Response.Write""& RS("PollCorrect") &""
RS.Close
End If
%>

Poll.asp

                   <form name="form1" method="post" action="Default.asp?DocId=PollCheck&CatId=Poll">
<%
SQL = "select Count(*) AS Rnd from PollQuestion"
Set CountRnd = databas.execute(SQL)

Randomize
Set rstemp = Server.Createobject("ADODB.Recordset")
SQL = "Select PollId from PollQuestion"
rstemp.cursorlocation = 3
rstemp.cachesize = 5
rstemp.open SQL, "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("db/LocalPoll.mdb") & ";"
rstemp.move Int(Rnd*CountRnd("Rnd"))

SQLStmt = "SELECT PollAnswear.PollAnswearId, PollAnswear.PollId, PollAnswear.PollAnswear, PollQuestion.PollId, PollQuestion.PollInsertDate, PollQuestion.PollQuestion,PollQuestion.PollFrom FROM PollQuestion INNER JOIN PollAnswear ON PollQuestion.PollId = PollAnswear.PollId Where PollQuestion.PollId = "& RStemp("pollid") &" AND PollAnswear.PollId = "& RStemp("pollid") &" "
Set RS = Databas.Execute(SQLStmt)
%>
                         
                          <input type="hidden" name="PollId" value="<%=RS("PollId")%>">
                         <%=RS("PollQuestion")%><br>
 <br>
<% Do Until RS.EOF%>
<input type="radio" name="svar" value="<%=RS("pollanswearid")%>">
<%=RS("pollanswear")%> <br>
 <%
RS.MoveNext
Loop
Rs.close
%>
<br>
<input type="image" border="0" name="imageField" src="images/knappar/btnOK.gif" width="21" height="16">
                         
</form>

va fan, den bidde konstig när jag kopierade in den, hinner inte ändra på den. Men du ser påt ungefär hur man kan göra

Tilläggas kan att detta var en fråge sport ingen poll. Men du ser ju hur man kan göra typ..som sagt innan

------------------
1 Man, 1 Million dead, The odds are just about even - Ash

[Redigerat av erka den 28 maj 2001]

qwertyMedlem sedan jan. 2001391 inlägg
#10

Kanske är jag dum....

...men om du har samma namn(name) på alla radiobuttons vid alternativet kan man väl bara välja ett alternativ? Jag vill att man ska kunna rösta på två alternativ...

------------------
Qwerty

Den som provar han testar...

VideMedlem sedan dec. 19996 094 inlägg
#11

Har man samma namn, och man väljer flera, så kommer värdet i form av en komma-separerad lista... den kan du antingen splita upp till ett array eller vad du nu vill... :)

------------------
Budweiser - Slightly contaminated water... probably harmless, but I would recommend boiling before you drink it...
webEye.nu SweQuake.com

qwertyMedlem sedan jan. 2001391 inlägg
#12

Kolla här:

Detta är mitt formulär. Där går bara att markera ett alternativ. När man trycker på en andra flyttas markeringen dit. Jag vill att man ska kunna välja 2. Varken mer eller mindre. Om man väljer ett eller tre ska man få ett felmess som säger att man måste välja 2 alternativ.

<form method="post" action="poll_stats.asp?id=<%=intPoll_ID%>">
  <table width="400" border="0" cellspacing="0" cellpadding="1">
    <tr> 
      <td colspan="2"><%=strQuestion%></td>
    </tr>
    <tr> 
      <td width="46">&nbsp;</td>
      <td width="350">&nbsp;</td>
    </tr>
<%
For i = 0 To intAnswers-1
%>
    <tr> 
      <td width="46" align="center"> 
        <input type="radio" name="vote" value="<%=i+1%>">
      </td>
      <td width="350"><%=arrAnswer(i)%></td>
    </tr>
<%
Next
%>
    <tr> 
      <td width="46">&nbsp;</td>
      <td width="350">&nbsp;</td>
    </tr>
    <tr> 
      <td colspan="2">
        <input type="submit" name="button" value="R&ouml;sta">
        &nbsp;&nbsp; <a href="poll_stats.asp?id=<%=intPoll_ID%>">Se aktuell 
        st&auml;llning</a></td>
    </tr>
  </table>
</form>

...och här är sidan som registrerar resultatet.

<%
Response.Buffer = True
%>
<!--#include file="dbcon.asp" -->
<%
Dim intError 
intError = 0
If len(request.form("button"))>0 THEN
	If request.form("vote")="" THEN
		intError = 1
	Else
		If request.cokies("votepoll")("pollid") = request.querystring("id") THEN
			strVoteDate = request.cokies("votepoll")("votedate")
			intError = 2
		Else
			Dim intVoteNr, strSetSQL
			intVoteNr = cint(request.form("vote"))
			strSetSQL = "Poll_Count"&intVoteNr&"=Poll_Count"&intVoteNr&"+1"
			strSQL = "UPDATE Polls SET "&strSetSQL&" WHERE Poll_ID="&request.querystring("id")
			con.Execute(strSQL)
			response.cokies("votepoll")("pollid") = request.querystring("id")
			response.cokies("votepoll")("votedate") = Date()
		End If
	End If
End If

%>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF">
<%
strSQL = "SELECT * FROM Polls WHERE Poll_ID="&request.querystring("id")
Set rs = con.Execute(strSQL)
intPoll_ID = rs(0)
strQuestion = rs(1)
strStartDate = rs(2)
intAnswers = rs(9)
strPollImage = rs(16)

Dim PollStats()
ReDim PollStats(intAnswers-1, 3)  ' 1=Question  2=Votes
intSum = 0
For i=0 To intAnswers-1
	PollStats(i, 1) = rs("Poll_Answer"&i+1)
	PollStats(i, 2) = rs("Poll_Count"&i+1)
	intSum = intSum + rs("Poll_Count"&i+1)
Next

%>

allvarligt talat:
jag har försökt nu i en och en halv dag med detta nu. Blir glad om nån vill hjälpa mig...

...och cookies är medvetet felstavat.

------------------
Qwerty

Den som provar han testar...

erkaMedlem sedan dec. 19994 597 inlägg
#13

Du får använda dig av något javascript, sök på javascript forumet för det där med radioknapparna

------------------
1 Man, 1 Million dead, The odds are just about even - Ash

[Redigerat av erka den 29 maj 2001]

qwertyMedlem sedan jan. 2001391 inlägg
#14

Tack för tipset!

Nu funkar formuläret som det ska. Sidan som tar emot rösterna ger nu följande felmess. Koden finns ju ovan om nån vill kika.

type mismatch: 'cint'

/rosta/poll_stats.asp, line 17

Detta är rad 17:

intVoteNr = cint(request.form("vote"))

------------------
Qwerty

Den som provar han testar...

VideMedlem sedan dec. 19996 094 inlägg
#15

Antingen skickas inget med i i Form("vote") eller så har du icke-nummeriska tecken med... ett komma kanske?

------------------
Budweiser - Slightly contaminated water... probably harmless, but I would recommend boiling before you drink it...
webEye.nu SweQuake.com

qwertyMedlem sedan jan. 2001391 inlägg
#16

Så här då eller?

myArray = split(request.form("vote"),",")

Till själva huvudproblemet:
När jag splitat upp listan i en array, hur får jag då dessa värden att registreras som röster? Nedan koden som den ser ut nu.

Dim intVoteNr, strSetSQL
                                         intVoteNr = cint(request.form("vote"))
                                         strSetSQL = "Poll_Count"&intVoteNr&"=Poll_Count"&intVoteNr&"+1"
                                         strSQL = "UPDATE Polls SET "&strSetSQL&" WHERE Poll_ID="&request.querystring("id")
                                         con.Execute(strSQL)

------------------
Qwerty

Den som provar han testar...

[Redigerat av qwerty den 29 maj 2001]

Genererad på 514 ms · cache AV · v20260730165559-full.f96bc7eb