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.
8 svar · 211 visningar · startad av limpon
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
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.
Jag missade och skriva in den sorry.
Connect.Execute(SQL)
den ska vara med där också
------------------
//Limpon
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
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
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
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
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
aha okej tusen tusen tack för hjälpen!
ska skriva ner det du sa o pränta in det i lillhuvve
------------------
//Limpon