Kanske något sånt här:
snitt = roster/antal
snitt = FormatNumber(snitt, 2, -1, 0, 0)
eller vad är det egentligen som strular?
8 svar · 312 visningar · startad av skalleper
Hejsan.. Jag skulle fortfarande vilja ha hjälp med mitt röstnings system. Jag vill ha så att man ska kunna rösta på en medlem..
En skala på 1 till 10.
Hur går man till väga för det...
Jag har 2 tabeller..
Roster & Antal
Hur går jag tillväga för att räkna ut röstresultatet..
det skalla vara 1 till 10 och 2 decimaler.
Kanske något sånt här:
snitt = roster/antal
snitt = FormatNumber(snitt, 2, -1, 0, 0)
eller vad är det egentligen som strular?
Det borde väl vara ganska enkelt.
I ena tabellen har du alla medlemmer, och något specifikt som identifierar dem, tex räknar IDn som alltid finns.
I andra har du rösterna och lägger in namn på den som röstat, poäng och ett fält som kopplar röstningen till ett ID fält (en medlem) i andra tabellen.
Därefter frågar du bara efter alla röster, till den medlemmen genom att använda ett Where utryck med ID från medlemmen i SQL frågan.
För sjutton gubbar...
Ett ihopslängt script, kanske inte helt optimerat, slumpfunktionen verkar vara något tvivelaktig, men hur som helst lite vägledning kanske det kan ge.
<%
'solbulles lilla röstningscript.
strConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("minpoll.mdb")
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open strConnString
Set RS=Server.CreateObject("ADODB.Recordset")
person = Request.Form("person")
id = Request.Form("id")
poang = Request.Form("radiobutton")
If poang <> "" AND id <> "" then
response.write "Du gav <b>" & person & " " & poang & "</b> poäng.<p>"
strSQL="UPDATE poll SET roster = roster + 1 , betyg = betyg + " & poang & " WHERE ID = " & id
connect.execute strsql,,128
End If
'Slumpa fram från databasen, verkar vara en tvivelaktig metod!?!
strSQL = "Select person, id, betyg, roster from poll"
Set RS = Connect.Execute(strSQL)
If RS.EOF Then
Response.Write "Det finns inga personer"
Else
arrPersoner = RS.GetRows()
Randomize
vem = Round(Rnd*Ubound(arrPersoner,2))
id = arrPersoner(1,vem)
person = arrPersoner(0,vem)
End If
Set RS = nothing
Connect.Close
Set Connect = nothing
response.write "Nu kan du rösta på <b>" & person & "</b><br>"
Response.write "<form name=""form1"" method=""post"" action=""minpoll1.asp"">"
For i = 1 to 10
Response.write "<input type=""radio"" name=""radiobutton"" value=" & i &" onclick=""submit('this.form')"">" & i & vbcrlf
Next
response.write "<input type=""hidden"" name=""id"" value=" & id & ">"
response.write "<input type=""hidden"" name=""person"" value=" & person & ">"
response.write "</form><p>"
response.write "Så här är ställningen i nuläget:"
If IsArray(arrPersoner) Then
response.write "<table width=""50%"" border=""0"" cellspacing=""2"" cellpadding=""2"">"
response.write "<tr><td>Namn</td><td>Antal röster</td><td>Totalt betyg</td><td>Snittbetyg</td></tr>"
For I = 0 TO UBound(arrPersoner,2)
person = arrPersoner(0,I)
id = arrPersoner(1,I)
betyg = arrPersoner(2,I)
roster = arrPersoner(3,I)
If betyg > 0 AND roster > 0 then
snitt = betyg/roster
snitt = FormatNumber(snitt, 2, -1, 0, 0)
End If
response.write "<tr><td>" & person & "</td><td>" & roster & "</td><td>" & betyg & "</td><td>" & snitt & "</td></tr>"
Next
response.write "</table>"
Else
Response.Write "Inget hittades."
End If
%>
Databasen till detta:
id : autonummer
roster : nummer
betyg : numer
person : text
Cookies
Hur gör jag för att spärra så att man inte kan rösta på en flera gånger på samma dag...
Hade tänkt mig lägga en cookie där alla id sprara med ett , imellan..
fast jag vet inte hur jag hämta ut alla id sen..
Hade det varit SQL hade jag nog löst det
Inte för att jag vet om du använder något av det jag postade, men detta borde väl funka ihop med det i alla fall:
strSQL = "Select person, id, betyg, roster from poll order by betyg/roster desc"
FEl
Den sortera fel när man man tar roster/antal
den sortera efter heltal typ.. sen decimalerna går den inte efter
När jag kör det script jag postade tidigare med denna sql:
strSQL = "Select person, id, betyg, roster from poll order by betyg/roster desc"
Så tycker jag nog att det blir rätt.....?