Tolkar inte röster.

ASP

8 svar · 237 visningar · startad av limpon

Medlem sedan sep. 2001175 inlägg
Trådstart#1

Har ett problem här med mitt röstnings script som jag gjort till min sida.
Man har 4:a alternativ, Ja, Nej, Kanske, Vet inte.

Men då jag ska lägga in den valda röster i databasen så har jag gjort så att den ska bli +1 så jag sedan kan skriva ut hur många röster som har röstat på de olika sakerna.

Men det är något fel, jag förstår inte vad. Hoppas nån kan hjälpa mig jag visar filen vote.asp här nu.

----------------------------------
<form method="POST" action="votehandle.asp">
<select size="1" name="vote">
<option value="Ja">Ja</option>
<option value="Nej">Nej</option>
<option value="Vet_inte">Vet Inte</option>
<option value="kanske">Kanske</option>
</select>
<input type="submit" value="Rösta" name="submit">
</form>
---------------------------------

och sedan votehandle.asp

---------------------------------
<%

Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("../database/database.mdb")&";"

Set RecSet = Server.CreateObject("ADODB.Recordset")
Set RecSet = Connect.Execute("SELECT * FROM vote ORDER BY voteID Desc")

temp = Request.Form("vote")
SQL="UPDATE vote SET " & temp & "=" & RecSet(temp )+ 1

JA = RecSet("Ja") / RecSet("total") * 100
Nej = RecSet("Nej") / RecSet("total") * 100
Vet_inte = RecSet("vet_inte") / RecSet("total") * 100
Kanske = RecSet("kanske") / RecSet("total") * 100
ProcentJA = RecSet("Ja") / RecSet("total") * 3
ProcentNej = RecSet("Nej") / RecSet("total") * 3
ProcentVet_inte = RecSet("vet_inte") / RecSet("total") * 3
ProcentKanske = RecSet("kanske") / RecSet("total") * 3

response.write "Totalt" & recset("total") & "<br>"
response.write "Ja"& JA & "<br>"
response.write "Nej"& NEJ & "<br>"
response.write "Vet inte"& vet_inte & "<br>"
response.write "Kanske"& Kanske & "<br>"

%>

-----------------------------------

Det är ju i SQL satsen som felet ligger, men vad är felet?

Medlem sedan juni 20008 205 inlägg
#2

Tja, du kör ju aldrig UPDATE-satsen, till att börja med.

Medlem sedan sep. 2001175 inlägg
#3

Jag missade och skriva in den sorry.
Connect.Execute(SQL)

den ska vara med där också

Medlem sedan dec. 200012 464 inlägg
#4

Du borde uppdatera total också och sen så borde du ha med ett villkor på voteid i din update för nu uppdaterar du alla röstningar.

Det du visar nu är resultatet innan du uppdateringen sker. Du borde lägga select efter det att du har gjort update.

Medlem sedan sep. 2001175 inlägg
#5

Jo Total är ju en sak jag tänkte ta senare, går ju att göra lite onödiga satser som räknar ut det för o vara lättsam av sig =)

Men hur tänkte du jag ska lösa det som då? Jag har bara hållit på med det här en månad, men försöker lära mig =)

Medlem sedan dec. 200012 464 inlägg
#6
Set Connect = Server.CreateObject("ADODB.Connection") 
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("../database/database.mdb")&";"

set recset = connect.execute("select max(voteid) from vote)
voteid = recset(0)
recset.close

temp = Request.Form("vote")
SQL="UPDATE vote SET " & temp & " = " & temp & " + 1 where voteid = " & voteid
connect.execute sql,,128

Set RecSet = Connect.Execute("SELECT * FROM vote where voteid = " & voteid)

Ja = recset("JA")
Nej = recset("Nej")
Vet_inte = recset("Vet_inte")
Kanske = recset("kanske")
total = clng(Ja) + clng(Nej) + clng(Kanske + clng(Vet_inte) 

ProcentJA = (Ja / total) * 100
ProcentNej = (Nej / total) * 100
ProcentVet_inte = (vet_inte) /total) * 100
ProcentKanske = (kanske / total") * 100

response.write "Totalt " & total & "<br>"
response.write "Ja "& JA & "<br>"
response.write "Nej "& NEJ & "<br>"
response.write "Vet inte "& vet_inte & "<br>"
response.write "Kanske "& Kanske & "<br>"

%>

Uträkningarna med *3 förstod jag inte vad dom betydde.

Medlem sedan sep. 2001175 inlägg
#7

Det var för bilderna som jag tänkte använda sedan, dom blir lite för kort annars så jag multiplicerade det med 3.

Men nu fick jag direkt några frågor.
---
set recset = connect.execute("select max(voteid) from vote)
voteid = recset(0)
recset.close

Vad gör dessa rader? Och varför?
---
connect.execute sql,,128
vad betyder 128?
--
total = clng(Ja) + clng(Nej) + clng(Kanske + clng(Vet_inte)

Vad innebär clng ?
---

Den som inte frågar får inget veta =)

Men tusen tack för kodsnutten ska testa om det funkar med det nya nu

Medlem sedan dec. 200012 464 inlägg
#8

set recset = connect.execute("select max(voteid) from vote)
voteid = recset(0)
recset.close

Detta är för att hämta upp högsta värdet för voteid. Det blir samma resultat av

set recset = connect.execute("select voteid from vote order by voteid desc")
voteid = recset(0)
recset.close

men varianten med Max borde vara effektivare.

connect.execute sql,,128
vad betyder 128?

128 innebär att man säger åt ADO att inte skapa något recordset alls. Om man inte anger 128 så skapas ett tomt och stängt recordset.

total = clng(Ja) + clng(Nej) + clng(Kanske + clng(Vet_inte)

Vad innebär clng ?

clng används för att konvertera ett uttryck till subtypen long. Det är för att + skall tolkas som aritmetiskt plus och inte som strängkonkatenering.

T.ex

a = "4"
b = "1"
c = a + b 'ger 41

c = clng(a) + clng(b) 'ger 5

Medlem sedan sep. 2001175 inlägg
#9

aha okej tusen tusen tack för hjälpen!
ska skriva ner det du sa o pränta in det i lillhuvve

253 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)