webForumDet fria alternativet

Tolkar inte röster.

ASP

8 svar · 211 visningar · startad av limpon

Medlem sedan sep. 2001175 inlägg
Frågan#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?

------------------
//Limpon

Medlem sedan juni 20008 205 inlägg
#2

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

------------------
You can't be young forever, but you can be immature indefinitely.

Medlem sedan sep. 2001175 inlägg
#3

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

den ska vara med där också

------------------
//Limpon

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.

------------------
essentitia preter non sans multiplicandum

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 =)

------------------
//Limpon

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.

------------------
essentitia preter non sans multiplicandum

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

------------------
//Limpon

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

------------------
essentitia preter non sans multiplicandum

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

------------------
//Limpon

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