webForumDet fria alternativet

Pollfunktion med flera alternativ?!

ASP

30 svar · 449 visningar · startad av brw

Medlem sedan juli 2000619 inlägg
Frågan#1

Undrar om nån har en schysst lösning på hur man bäst gör en poll med flera alternativ. Jag vill att alla tidigare frågor skall vara kvar så att man kan "titta på tidigare frågor".

Ska man ha unika svarsalternativ för varje fråga eller bör man ha en tabell för svarsalternativen ifall de återkommer en gång till vilket det ofta gör Tex. Ja eller Nej.

Sen ibland kan det ju vara så att man vill ha flera alternativ och sådana alternativ som inte finns sen förut.. Till exempel om man ställer en fråga om hockey vm om vilken som besökarna tror vinner matchen.. det är ju ett svarsalternativ som troligen bara kommer användas 1 gång.

Någon som har nån schysst lösning?

------------------
Ingenting är omöjligt, bara en utmaning.

Medlem sedan dec. 19996 522 inlägg
#2

Jag har funderat lite på om man inte borde ta å göra ett frågesports "quizz" asp chosan. Med flervals frågor, tex 5 olika alternativ och om man svarar rätt så sparas det in i en databas knutet till sitt namn. Kanske borde vi folk slå sina kloka huvuden ihop =)

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

Medlem sedan dec. 19996 522 inlägg
#3

ska bygga ett ikväll om jag får tid, brw, tack för att du påminnde mig !

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

Medlem sedan dec. 20011 685 inlägg
#4

www.swede.com har en gratis asp-omröstning.

Den är suverän, titta in www.formtoppen.nu/grymt så får du se hur den ser ut.

Där är även ett adminsystem.

------------------
Jag är lite borta men lämna ett meddelande

Medlem sedan dec. 19998 577 inlägg
#5

Principen för att kunna använda dynamiskt antal svar är att lägga upp en separat tabell. Varje svarspost består av frågans ID, svarets ID och Svarets text.

Så nu när du skall söka upp alla svar frågar du snällt tabellen om alla svar med frågans ID... på så sätt kan du ha hur många svar som helst utan att statiskt ta upp detta när du inte behöver det... :)

Mvh, Vide

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

Medlem sedan dec. 19996 522 inlägg
#6

frågan är om man ska koppla den till ett användar system hur man ska sköta poängställningen. Om man ska ha en tabell med alá TblScore där det finns 2 fält, Anvandare samt Poang.

Men då kan man ju rösta mer en en gång på varje fråga, och få jättemånga poäng och det är ju inte bra. Man skulle kunna ha en tabell TblScore där man sätter in användarnamnet, om han svarade rätt/fel samt Frågans Id och sedan kolla om han har svarat på frågan innan man gör inserten av poängen.

Eller så slänger man bara dit en cookie med FrågeId och låter den ligga kvar i några dagar på klienten..

Vad låter bäst ?

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

Medlem sedan dec. 19998 577 inlägg
#7

Du har helt enkelt bara en tabell med: AnvändarId, frågeId, SvarsId...

Sedan om du skall kolla så söker du på frågans Id, och på Användarens ID samtidigt, och får du tillbaks en post så har han ju redan svarat på frågan...

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

Medlem sedan juli 2000619 inlägg
#8

Vide.. du skulle inte enkelt bara göra en snabb lista på de olika tabellerna och kolumnerna som du tänker..

som jag har det idag så har jag bara med 2 svarsalternativ. Det ser då ut såhär:

FRAGORINSTALLNINGAR
id
typ (om det ska vara veckans eller dagens fråga: V/D som alternativ)

FRAGOR
id
typ (veckans eller dagens fråga)
datumvisa (vilket datum den ska visas om det är dagens fråga)
vecka (vilken vecka om det är veckans fråga)
fraga (självaste frågan)
kortinfo (lite info om frågan)
altid (svarsalternativs id)

FRAGORALTERNATIV
id
svar1
svar2

FRAGORSVAR
id
datum (datum då man svarade)
svar (vilket svar man svarat)
fragaid (vilken fråga som svaret tillhör)

Ge mig gärna förslag på som du menar hur jag ska kunna få det att bli helt dynamiskt med svarsalternativen.

------------------
Ingenting är omöjligt, bara en utmaning.

Medlem sedan dec. 19996 522 inlägg
#9

Det hade jag oxå tänkt men jag undrar mest vilket som gör den bästa "Quizzen" om man inte ska få svara på en fråga mer än 1 gång, blir det fel den gången så kan man inte försöka igen..

Eller att man kan rösta på en fråga men enbart en gång varje dag..

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

Medlem sedan dec. 19998 577 inlägg
#10

Såhär skulle jag lägga upp tabellerna...

tblFraga
id : fragetext
----------- : poster
1 : Fråga 1
2 : Fråga 2
3 : Fråga 3
4 : Fråga 4
5 : Fråga 5

tblSvar
id : fraga_id : svartext
----------- : poster
1 : 1 : Ja
2 : 1 : Kanske
3 : 1 : Nja
4 : 1 : Nej

tblPoster
id : fraga_id : svarid
----------- : poster
1 : 1 : 2
2 : 1 : 2
3 : 1 : 4
4 : 1 : 1

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

[Redigerat av Vide den 25 apr 2001]

Medlem sedan juli 2000619 inlägg
#11

Det betyder då att jag måste lägga in svarsalternativ på varje fråga och kan inte använda några svarsalternativ som redan ligger där.

Alltså borde frågan till databasen bli såhär:

Välj ut aktuell fråga som skall visas
Lista alla svarsalternativ som är till aktuell fråga från en tabell med svaralternativ som tillhör den frågan genom att man vet ID på frågan

När nån svarar sätt in frågans id och svarets id i en tabell

plocka sedan ut statistik med en loop när du vet frågans id så plockar den fram alla svarsalternativ och räknar hur många det är på respektive.

Det betyder att det kan bli lite problem när man skall lägga till en fråga eftersom du måste veta vilket id frågan har innan du kan spara ner svarsalternativen i tabellen för svarsalternativen för att de ska höra ihop.

Hur fixar man det bäst? eller tänker jag helt galet

------------------
Ingenting är omöjligt, bara en utmaning.

Medlem sedan dec. 19998 577 inlägg
#12

Precis efter du lagt in frågan så får den ju ett ID... plocka då ut den senaste posten i den tabell, och du har ditt ID... :)

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

Medlem sedan dec. 19996 522 inlägg
#13

Kan någon som är en fena kolla igenom denna pollen å komma på fel å klantigheter..Vide, lånade lite av din random funktion. =) Den är för en liga till ett användarsystem som håller koll på användarna med Sessioner, då session("username")

Mina tabeller ser ut så här

POLLANSWEAR
-------------
PollAnswearId (räknare)
PollId (tal)
PollAnswear (pm)
PollScore (yes/no)

POLLQUESTION
-------------
PollId (räknare)
PollQuestion (Pm)
PollInsertDate (datum)

POLLSCORE
-------------
PollId (tal)
UserName (text)

SCORE
-------------
UserName (text)
PollScore (tal)

Poll.asp

<%
Set Databas = Server.CreateObject("ADODB.Connection")
MdbFilePath = Server.MapPath("LocalPoll.mdb")
Databas.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & MdbFilePath & ";"
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("LocalPoll.mdb") & ";"
rstemp.move Int(Rnd*CountRnd("Rnd"))

SQLStmt = "SELECT PollAnswear.PollAnswearId, PollAnswear.PollId, PollAnswear.PollAnswear, PollQuestion.PollId, PollQuestion.PollInsertDate, PollQuestion.PollQuestion 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)
%>

<form name="form1" method="post" action="PollCheck.asp">

<%=RS("PollQuestion")%><br><br>

<% Do Until RS.EOF%>
  <input type="radio" name="svar" value="<%=RS("pollanswearid")%>"> <%=RS("pollanswear")%>
  <input type="hidden" name="PollId" value="<%=RS("PollId")%>">
  <br>
<%
RS.MoveNext
Loop
Rs.close
%>
<input type="submit" name="Submit" value="Ok">
</form>

PollCheck.asp

<%
Set Databas = Server.CreateObject("ADODB.Connection")
MdbFilePath = Server.MapPath("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 = (left(Request.Form("pollid"),1)) 

'OM DET VAR FEL SVARAT

If RS("pollscore") = false Then
	Response.Write"Detta var fel<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"Detta var ju helt rätt<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, 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
End If
%>

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

Medlem sedan dec. 19996 522 inlägg
#14

Plocka ut senaste posten med @@identity är smidigt som fean, även i access...

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

Medlem sedan dec. 19998 577 inlägg
#15

Är det något som inte fungerar?

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

Medlem sedan dec. 19996 522 inlägg
#16

nej den funkar bra, undrar bara om det är korkad kodning

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

Medlem sedan juni 200032 967 inlägg
#17

det enda jag reagerar över spontant (har inte lusläst, dock) är att du använde username för att hålla koll på saker i score och pollscore.

generellt skall man inte använda namn (eftersom folk tenderar att byta användarnamn exempelvis' ändrar stavning, etc.), utan man bör använda ett id, till exempel räknaren från medlemstabellen.

men, alla sätt är bra utom de dåliga. din kod tycker jag annars ser ganska bra ut.

mvh,

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
all your base are belong to us!</A>

Medlem sedan dec. 19996 522 inlägg
#18

jo jag har faktiskt tänkt på det anders, men nu kommer de aldrig att byta namn eftersom det är till en särskilld sak.. =) Men det är smartare att bygga det så.. ska göra det nästa gång.. danke

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

Medlem sedan dec. 19998 577 inlägg
#19

Är det inte lite overkill med att ha svarsalternativen i ett pm-fält? r'cker det inte 255 tecken (Text)? :)

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

Medlem sedan juli 2000619 inlägg
#20

Ah.. tackar vide.. ska börja programmera om lite nu då heeh :h

------------------
Ingenting är omöjligt, bara en utmaning.

260 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)