JjepsOMedlem sedan mars 2001484 inlägg Nu har jag inte riktigt satt mig in i vad "föregående talare" sagt om ditt problem, men såhär skulle jag göra:
Ett formulär med fem stycken radio buttons:
<input type="hidden" value="<%=medlID%>" name="medlID">
<input type="radio" value="1" name="vote"> 1
<input type="radio" value="2" name="vote"> 2
etc.
Två nya kolumner i medlemstabellen; voteSum och numVotes. När någon röstar på en medlem gör du följande UPDATE-sats:
medlID = Request.Form("medlID")
vote = Request.Form("vote")
SQL = "UPDATE medlemmar SET voteSum = voteSum + " & vote & ", numVotes = numVotes + 1 WHERE medlemsID = " & medlID
conn.Execute(SQL)
När du sedan visar betyget för en medlem gör du helt sonika såhär:
SQL = "SELECT medlemsID, voteSum, numVotes FROM medlemmar WHERE medlemsID = " & medlID
Set rs = conn.Execute(SQL)
betyg = Round(rs("voteSum")/rs("numVotes"),2)
Response.Write "Betyg: " & betyg
Topplista:
SQL = "SELECT TOP 10 * FROM medlemmar ORDER BY (voteSum / numVotes) DESC"
Set rs = conn.Execute(SQL)
do until rs.EOF
betyg = Round(rs("voteSum")/rs("numVotes"),2)
response.write betyg & " " & rs("medlemsnamn") & "<br>"
rs.Movenext
loop
Disclaimer: Jag har inte testat koden själv :e
------------------
/ jeps0
crisse6Medlem sedan dec. 20002 526 inläggokej, jag har nu testat din kod, började med själva röstningen... det funkar inte :( varför funkar inte denna kod:
<%
Set Databas = Server.CreateObject("ADODB.Connection")
Set rsRosta = Server.Createobject("ADODB.Recordset")
MdbFilePath = Server.MapPath("rosta.mdb")
Databas.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ= " & MdbFilePath & ";"
medlID = Request.Form("username")
vote = Request.Form("knapp")
SQL = "UPDATE alternativ SET antalRoster = antalRoster + " & vote & ", betyg = betyg + 1 WHERE ID = " & medlID
Response.Write SQL
Databas.Execute(SQL)
%>
får detta felmess(inkl. response.write av sql)
UPDATE alternativ SET antalRoster = antalRoster + 3, betyg = betyg + 1 WHERE ID = *karin*
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][Drivrutin för ODBC Microsoft Access] Syntaxfel (operator saknas) i frågeuttrycket 'ID = *karin*'.
/groda/rostat.asp, line 24
line 24 är ju då sql-satsen...
------------------
www.groda.net *kvack*, *kvack*
crisse6Medlem sedan dec. 20002 526 inläggokej! så här ser koden ut nu...den kod som ska uppdatera rösta, men inte ett j*vla dugg händer ju i db:n... vad är fel?
Ursäkta min slarvighet... inlägget ovan löste sig ganska fort.. :r
<%
Set Databas = Server.CreateObject("ADODB.Connection")
Set rsRosta = Server.Createobject("ADODB.Recordset")
MdbFilePath = Server.MapPath("rosta.mdb")
Databas.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ= " & MdbFilePath & ";"
sql2 = "SELECT betyg, antalRoster FROM alternativ"
Set rsRosta = databas.execute (sql2)
%>
<%
vote = Request.Form("knapp")
SQL = "UPDATE [alternativ] SET [betyg] = [betyg] + " & vote & ", [antalRoster] = [antalRoster] + 1 WHERE [id] = " & Request.Form("id") & ""
Response.Write SQL
Databas.Execute(SQL)
%>
------------------
www.groda.net *kvack*, *kvack*
LLarsGMedlem sedan dec. 200012 464 inlägg Update-satsen ser helt ok ut. I och med att du inte får något fel så tyder det på att det inte finns någon person med det id som du anger.
Har du testat att köra den separat i något verktyg?
------------------
essentitia preter non sans multiplicandum
crisse6Medlem sedan dec. 20002 526 inläggLarsG, det finns asså inget inlagt i db:n... inget id finns alltså, men jag trodde att det skulle läggas in automatiskt om det ej fanns...??? hur löser vi detta då?
------------------
www.groda.net *kvack*, *kvack*
LLarsGMedlem sedan dec. 200012 464 inlägg Ok,då får du först kontrollera om det finns
<%
Set Databas = Server.CreateObject("ADODB.Connection")
MdbFilePath = Server.MapPath("rosta.mdb")
Databas.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ= " & MdbFilePath & ";"
id = request.form("id")
sql = "SELECT betyg, antalRoster FROM alternativ where id =" & id
Set rsRosta = databas.execute (sql)
vote = Request.Form("knapp")
if rsRosta.eof then
'det finns ingen med det id som angavs
sql = "insert into alternativ (id,antalRoster,betyg) values (" & _
id & ",1," & vote & ")"
else
SQL = "UPDATE alternativ SET betyg = betyg + " & vote & ", antalRoster = antalRoster + 1 WHERE id = " & id
end if
Response.Write SQL
Databas.Execute SQL,,128
%>
------------------
essentitia preter non sans multiplicandum
crisse6Medlem sedan dec. 20002 526 inläggfår fel mess... operator saknas... :(
kolla koden: (ska få fram siffran som står i fältet betyg samt siffran i antalRoster)
<%
Set Databas7 = Server.CreateObject("ADODB.Connection")
Set rsRosta = Server.Createobject("ADODB.Recordset")
MdbFilePath7 = Server.MapPath("rosta.mdb")
Databas7.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ= " & MdbFilePath7 & ";"
medId = Request.Form("medId")
SQL2 = "SELECT betyg, antalRoster FROM alternativ WHERE medId = " & medId
Response.Write SQL2
Set rsRosta = Databas7.Execute(SQL2)
betyg = Round(rsRosta("betyg")/rsRosta("antalRoster"),2)
Response.Write "Betyg: " & betyg
%>
------------------
www.groda.net *kvack*, *kvack*
crisse6Medlem sedan dec. 20002 526 inläggTack LarsG! :e
en fråga...
jag har i koden så att om inte det ID:et man försöker nå finns så sätter den in ny data... det funkade med ID, men inte med username...???
det är sql satsen som gör inserten som strular + att update sql:en strular också... den gillar inte ngt med username...
Förklaring: UPDATE:en ska uppdatera om posten finns, med bl a röster, betyg och username... INSERT:en ska lägga till användaren som man vill rösta på samt lägga in rösterna och betyget man gav honom/henne..kolla:
<%
Set Databas = Server.CreateObject("ADODB.Connection")
MdbFilePath = Server.MapPath("rosta.mdb")
Databas.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ= " & MdbFilePath & ";"
id = request.form("medId")
username = request.form("username")
sql = "SELECT betyg, antalRoster FROM alternativ where username = '" & username &"'"
Response.Write sql
Set rsRosta = databas.execute (sql)
vote = Request.Form("knapp")
if rsRosta.eof then
'det finns ingen med det id som angavs
sql = "insert into alternativ (medId,antalRoster,betyg,username) values (" & _
id & ",1," & vote & "," & username & ")"
else
vote = cInt(vote)
SQL = "UPDATE alternativ SET betyg = betyg + " & vote & ", antalRoster = antalRoster + 1 WHERE [username] = '" & Request.Form("username") &"'"
Response.Write SQL
end if
Databas.Execute SQL,,128
%>
------------------
www.groda.net *kvack*, *kvack*
@ndersMedlem sedan juni 200032 967 inläggvad gäller insert-frågan så kan det ju vara bra om man har apostrofer runt värdet som skall in i username.
är medID en räknare? isf kan du inte ha med den i insert-satsen.
update-frågan, hur ser den ut när du kör response.write? har vote något värde?
------------------
<A HREF="http://cartman.nu" TARGET=_blank>
can i borrow your goat?
</A>
crisse6Medlem sedan dec. 20002 526 inläggnej. medId är ingen räknare... det var det fält som funkade innan jag kom på att jag måste använda username... så jag tog bort medId ändå i inserten...
vadå apostrofer, jag vet inte var och hur du menar? vore sjyst av dig att ändra i min kod...
UPDATE får jag ut detta:
UPDATE alternativ SET betyg = betyg + 4, antalRoster = antalRoster + 1 WHERE [username] = 'linkan'
------------------
www.groda.net *kvack*, *kvack*
@ndersMedlem sedan juni 200032 967 inlägghmm... update-frågan ser helt korrekt ut tycker jag. vad får du för felmeddelande på den?
du har ju apostrofer runt username-värdet överallt ('linkan' t.ex.), men inte i insert-frågan:
sql = "insert into alternativ (medId,antalRoster,betyg,username) values (" & _
id & ",1," & vote & ",'" & username & "')"
mvh,
------------------
<A HREF="http://cartman.nu" TARGET=_blank>
can i borrow your goat?
</A>
crisse6Medlem sedan dec. 20002 526 inläggfick nu ett annat fel... men en bit frammåt tror jag ;)
detta felmess (inkl. sql)
SELECT betyg, antalRoster FROM alternativ where username = 'gbgkillen'insert into alternativ (medId,antalRoster,betyg,username) values (,1,2,'gbgkillen')
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][Drivrutin för ODBC Microsoft Access] Syntaxfel i INSERT INTO-uttryck.
/groda/rostat.asp, line 35
okej, hela koden igen då! rad 35 markerad med fet stil!
<%
Set Databas = Server.CreateObject("ADODB.Connection")
MdbFilePath = Server.MapPath("rosta.mdb")
Databas.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ= " & MdbFilePath & ";"
username = request.form("username")
sql = "SELECT betyg, antalRoster FROM alternativ where username = '" & username &"'"
Response.Write sql
Set rsRosta = databas.execute (sql)
%>
<%
vote = Request.Form("knapp")
if rsRosta.eof then
'det finns ingen med det id som angavs
SQL = "insert into alternativ (medId,antalRoster,betyg,username) values (" & _
id & ",1," & vote & ",'" & username & "')"
response.write sql
else
vote = cInt(vote)
[b]SQL = "UPDATE alternativ SET betyg = betyg + " & vote & ", antalRoster = antalRoster + 1 WHERE [username] = '" & Request.Form("username") &"'"[/b]
Response.Write SQL
end if
Databas.Execute SQL,,128
%>
igentligen är det ju raden där executen körs, men det är ju i sql:en det är fel! ;)
hjälp!
------------------
www.groda.net *kvack*, *kvack*
@ndersMedlem sedan juni 200032 967 inlägghörru!
i din insertsats ser man ju att du saknar ett värde, medId. parentesen kan ju inte börja med ett komma.
antingen tar du bort medId från frågan helt och hållet eller så får du se till att du verkligen har ett värde med.
sen kan du ju kommentera bort de response.write sql som inte är aktuella.
------------------
<A HREF="http://cartman.nu" TARGET=_blank>
can i borrow your goat?
</A>
crisse6Medlem sedan dec. 20002 526 inläggälskar dig @nders! det funkar ju nu!
------------------
grodan, version 2 är snart klar!grodan - där det alltid kvackas!
crisse6
@ndersMedlem sedan juni 200032 967 inläggjippi! :)
------------------
<A HREF="http://cartman.nu" TARGET=_blank>
can i borrow your goat?
</A>
crisse6Medlem sedan dec. 20002 526 inläggbara en fråga... ??? varför vill den inte dividera ut resultat i min kod...???
kolla:
<%
i = 0
betyg = Round(rs("betyg")/rs("antalRoster"),2)
Response.Write "<table width=""200"" border=""0"" valign=""top"" cellpadding=""4"">" & VbCrLf
Response.Write "<tr>" & VbCrLf
Response.Write "<td bgcolor=""white""><font face=""Verdana"" size=""1"" color=""black"">" & "#:" & "</font></td>"
Response.Write "<td bgcolor=""white""><font face=""Verdana"" size=""1"" color=""black"">" & "Användarnamn:" & "</font></td>"
Response.Write "<td bgcolor=""white""><font face=""Verdana"" size=""1"" color=""black"">" & "Antalröster:" & "</font></td>"
Response.Write "<td bgcolor=""white""><font face=""Verdana"" size=""1"" color=""black"">" & "Betyg:" & "</font></td>"
Response.Write "</tr>" & VbCrLf
Response.Write "<br><br>"
Response.Write "<font face=""Verdana"" size=""1""><b>Här är topplistan på dom populäraste medlemmarna på grodan. Placering 1-10, högsta betyg är 5.</font></b>"
Do Until rs.EOF
i = i+1
counter = counter + 1
If counter Mod 2 = 0 then
color = "ffffff"
Else
color = "E8A216"
End If
Response.Write "<tr>" & VbCrLf
Response.Write "<td bgcolor=""#" & Color & """><font face=""Verdana"" size=""1"" color=""black"">"& i &". </font></td>"
Response.Write "<td bgcolor=""#" & Color & """><font face=""Verdana"" size=""1"" color=""black"">" & rs("username") & "</font></td>"
Response.Write "<td bgcolor=""#" & Color & """><font face=""Verdana"" size=""1"" color=""black"">" & rs("antalRoster") & "</font></td>"
Response.Write "<td bgcolor=""#" & Color & """><font face=""Verdana"" size=""1"" color=""black"">"& betyg & "</font></td>"
rs.MoveNext
Loop
Response.Write "</tr>" & VbCrLf
%>
får inget felmess, bara själv talet från db:n :(
------------------
grodan, version 2 är snart klar!grodan - där det alltid kvackas!
crisse6
LLarsGMedlem sedan dec. 200012 464 inlägg betyg = Round(cint(rs("betyg"))/cint(rs("antalRoster")),2)
------------------
essentitia preter non sans multiplicandum
crisse6Medlem sedan dec. 20002 526 inlägghmm...ja, nu blir det iaf medelvärde, MEN samma betyg för alla...??? inte bra!
här är sql-satsen som väljer...
SQL3 = "SELECT TOP 10 * FROM alternativ WHERE betyg ORDER BY (betyg / antalRoster) DESC"
vad är fel? fattar NADA!
------------------
grodan -besök den nu!!!
[Redigerat av crisse6 den 02 jun 2001]
LLarsGMedlem sedan dec. 200012 464 inlägg SQL3 = "SELECT TOP 10 * FROM alternativ WHERE [b]betyg[/b] ORDER BY (betyg / antalRoster) DESC"
ser skumt ut. Skall det inte vara
SQL3 = "SELECT TOP 10 * FROM alternativ WHERE betyg > 0 ORDER BY (betyg / antalRoster) DESC"
------------------
essentitia preter non sans multiplicandum
crisse6Medlem sedan dec. 20002 526 inläggnope... det gör ingen skillnad, står samma resultat hela tiden! det ska inte vara ngt annat i utskrivningen av betyget då? eller...?
------------------
grodan -besök den nu!!!