16. december 2006 - 14:23Der er
78 kommentarer og 1 løsning
Hjælp til kodning af forum
Hey..
Jeg har lavet en side med forum, men jeg har nogle problemer med en del af kodningen. Det som jeg gerne vil have den til, er at regne ud hvor mange svar der er, og hvem der sidst har svaret, men jeg ved ikke helt hvordan jeg skal gøre det.
Jeg har brugt denne kode: <% dim id id=request.querystring("id")
if id="" then Set rs = Server.CreateObject("ADODB.RecordSet") strSQL = "SELECT * FROM indlaeg order by indlaegid desc" rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
i=1 a=0 Set indlaeg = Server.CreateObject("ADODB.RecordSet") strSQL = "Select * From indlaeg order by indlaegid desc" indlaeg.Open strSQL, Conn, adOpenKeyset, adLockOptimistic %>
<% i=1 do until indlaeg.eof a=a+1 Set id = Server.CreateObject("ADODB.RecordSet") strSQL = "SELECT * FROM users where brugernavn ='"&indlaeg("navn")&"'" id.Open strSQL, Conn, adOpenKeyset, adLockOptimistic if i=1 then bg="#FFFFFF" i=0 else bg="#eeeeee" i=1 end if %> <tr bgcolor="<%=bg%>"> <td> <a href=indlaeg.asp?id=<%=indlaeg("indlaegid")%>><%=indlaeg("emne")%></a> </td> <td> Antal Svar </td> <td> <%=indlaeg("navn")%> </td> <td> Seneste Svar </td> </tr> <%indlaeg.movenext loop%> <%end if%>
Håber at der er nogen der kan hjælpe mig med at få gjort det sidste færdig..
Hos Computerworld it-jobbank er vi stolte af at fortsætte det gode partnerskab med folkene bag IT-DAY – efter vores mening Danmarks bedste karrieremesse for unge og erfarne it-kandidater.
Når jeg skifter den sætning ud, som du foreslog, fik jeg denne fejl:
Fejltype: Microsoft OLE DB Provider for ODBC Drivers (0x80040E14) [Microsoft][ODBC Microsoft Access-driver] Du har forsøgt at køre en forespørgsel, der ikke medtager det angivne udtryk "navn" som en del af en aggregatfunktion.
lidt uoverskuelig kode her på E, så har lige skåret lidt i din kode bare så vi kan teste om det virker... prøv det her.. og huske at rette COUNT(indlageID) til COUNT(IndlaegID) hvis det bare var en stave fejl
<%Set id = Server.CreateObject("ADODB.RecordSet") strSQL = "SELECT COUNT(indlageID) as antal FROM Indlaeg" id.Open strSQL, Conn, adOpenKeyset, adLockOptimistic %>
Antal indlæg = <%=id("antal")%>
<% dim id
Set indlaeg = Server.CreateObject("ADODB.RecordSet") strSQL = "SELECT Emne, Navn, Svar MAX(ID) as sidste FROM Svar WHERE ID = sidste" indlaeg.Open strSQL, Conn, adOpenKeyset, adLockOptimistic %>
Det vil sige at: Set rs = Server.CreateObject("ADODB.RecordSet") strSQL = "SELECT * FROM indlaeg order by indlaegid desc" rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
Skal skiftes ud med: Set rs = Server.CreateObject("ADODB.RecordSet") strSQL = "SELECT COUNT(indlageID) as antal FROM Indlaeg" rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
Og til sidste svar skal jeg lave denne: Set svar = Server.CreateObject("ADODB.RecordSet") strSQL = "SELECT Emne, Navn, Svar MAX(ID) as sidste FROM Svar WHERE ID = sidste;" svar.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
Når jeg tjekker det i browseren, får jeg denne besked: Fejltype: Microsoft OLE DB Provider for ODBC Drivers (0x80040E10) [Microsoft][ODBC Microsoft Access-driver] Der er for få parametre. Der var ventet 1.
Fejlen ligger i denne linje: rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
Set rs = Server.CreateObject("ADODB.RecordSet") strSQL = "SELECT COUNT(indlageID) as antal FROM Indlaeg" rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
for så ville jeg jo foreslå a ud retter indlageID som jeg gjorde dig opmærksom på i mit indlæg før
Set rs = Server.CreateObject("ADODB.RecordSet") strSQL = "SELECT COUNT(IndlaegID) as antal FROM Indlaeg" rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
Nu får jeg tilgengæld at vide at: Fejltype: Microsoft OLE DB Provider for ODBC Drivers (0x80040E14) [Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl, fordi der mangler en operator i forespørgselsudtrykket "Svar MAX(ID)".
Har skrevet dette: Set svar = Server.CreateObject("ADODB.RecordSet") strSQL = "SELECT Emne, Navn, Svar MAX(ID) as sidste FROM Svar WHERE ID = sidste;" svar.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
Set svar = Server.CreateObject("ADODB.RecordSet") strSQL = "SELECT Emne, Navn, Svar MAX(IndlaegID) as sidste FROM Svar WHERE ID = sidste;" svar.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
Set svar = Server.CreateObject("ADODB.RecordSet") strSQL = "SELECT TOP 1 Emne, Navn,svar, dato FROM Svar;" svar.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
Set svar = Server.CreateObject("ADODB.RecordSet") strSQL = "SELECT TOP 1 Emne, Navn,svar, dato,IndlaegID FROM Svar ORDER BY IndlaegID DESC;" svar.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
Denne kode regner heller ikke ud hvor mange svar der er: Set rs = Server.CreateObject("ADODB.RecordSet") strSQL = "SELECT COUNT(indlaegID) as antal FROM indlaeg" rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
Men hvor mange inlæg der er, hvilket jo ikke helt var meningen
<% Set indlaeg = Server.CreateObject("ADODB.RecordSet") strSQL = "SELECT COUNT(svar.indlaegid) as antal, indlaeg.emne as Emne FROM indlaeg, svar WHERE svar.indlaegid = indlaeg.indlaegid ORDER BY indlaeg.indlaegid desc" indlaeg.Open strSQL, Conn, adOpenKeyset, adLockOptimistic do until indlaeg.eof %> Antal: <%=indlaeg("antal")%> <br /> Emne: <%=indlaeg("Emne")%><br /><br /> <%indlaeg.movenext loop%>
Har jo disse: <% dim id id=request.querystring("id")
if id="" then Set rs = Server.CreateObject("ADODB.RecordSet") strSQL = "SELECT COUNT(indlaegID) as antal FROM indlaeg" rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
i=1 a=0
Set indlaeg = Server.CreateObject("ADODB.RecordSet") strSQL = "Select * From indlaeg order by indlaegid desc" indlaeg.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
Set svar = Server.CreateObject("ADODB.RecordSet") strSQL = "SELECT TOP 1 Navn, Tid, dato,IndlaegID FROM Svar ORDER BY IndlaegID desc" svar.Open strSQL, Conn, adOpenKeyset, adLockOptimistic %>
if id="" then Set rs = Server.CreateObject("ADODB.RecordSet") strSQL = "SELECT COUNT(indlaegID) as antal FROM indlaeg" rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
Giver denne fejlbesked: Fejltype: Microsoft OLE DB Provider for ODBC Drivers (0x80040E14) [Microsoft][ODBC Microsoft Access-driver] Du har forsøgt at køre en forespørgsel, der ikke medtager det angivne udtryk "Emne" som en del af en aggregatfunktion. /varde/test.asp, line 7
Linjenummeret, siger at fejlen ligger i: indlaeg.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
Nu siger den dette: Fejltype: Microsoft OLE DB Provider for ODBC Drivers (0x80040E14) [Microsoft][ODBC Microsoft Access-driver] Du har forsøgt at køre en forespørgsel, der ikke medtager det angivne udtryk "indlaeg.indlaegID" som en del af en aggregatfunktion.
<% Set indlaeg = Server.CreateObject("ADODB.RecordSet") strSQL = "SELECT COUNT(svar.indlaegid) as antal FROM svar ORDER BY indlaeg.indlaegid desc" indlaeg.Open strSQL, Conn, adOpenKeyset, adLockOptimistic do until indlaeg.eof %> Antal: <%=indlaeg("antal")%> <br /> <%indlaeg.movenext loop%>
Ked af at sige det, men nu siger den dette: Fejltype: Microsoft OLE DB Provider for ODBC Drivers (0x80040E10) [Microsoft][ODBC Microsoft Access-driver] Der er for få parametre. Der var ventet 1.
<% Set indlaeg = Server.CreateObject("ADODB.RecordSet") strSQL = "SELECT COUNT(svar.IndlaegID) as antal FROM svar ORDER BY indlaeg.indlaegID desc" indlaeg.Open strSQL, Conn, adOpenKeyset, adLockOptimistic do until indlaeg.eof %>
<% Set indlaeg = Server.CreateObject("ADODB.RecordSet") strSQL = "SELECT COUNT(IndlaegID) FROM svar ORDER BY IndlaegID desc" indlaeg.Open strSQL, Conn, adOpenKeyset, adLockOptimistic do until indlaeg.eof %> Antal: <%=indlaeg("IndlaegID")%> <br />
Fejltype: Microsoft OLE DB Provider for ODBC Drivers (0x80040E14) [Microsoft][ODBC Microsoft Access-driver] Du har forsøgt at køre en forespørgsel, der ikke medtager det angivne udtryk "IndlaegID" som en del af en aggregatfunktion. /varde/test.asp, line 7
<% Set indlaeg = Server.CreateObject("ADODB.RecordSet") strSQL = "SELECT COUNT(IndlaegID) as antal FROM svar" indlaeg.Open strSQL, Conn, adOpenKeyset, adLockOptimistic do until indlaeg.eof %> Antal: <%=indlaeg("antal")%> <br />
<% Set indlaeg = Server.CreateObject("ADODB.RecordSet") strSQL = "SELECT COUNT(IndlaegID) as antal FROM svar" indlaeg.Open strSQL, Conn, adOpenKeyset, adLockOptimistic do until indlaeg.eof %> Antal: <%=indlaeg("antal")%> <br />
<% Set rs = Server.CreateObject("ADODB.RecordSet") strSQL = "SELECT * FROM indlaeg ORDER BY IndlaegID desc" rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
Set svar = Server.CreateObject("ADODB.RecordSet") strSQL = "SELECT Emne, Navn,svar, dato,IndlaegID FROM Svar ORDER BY IndlaegID desc;" svar.Open strSQL, Conn, adOpenKeyset, adLockOptimistic %> <% Set indlaeg = Server.CreateObject("ADODB.RecordSet") strSQL = "SELECT COUNT(IndlaegID) as antal FROM svar ORDER BY IndlaegID" indlaeg.Open strSQL, Conn, adOpenKeyset, adLockOptimistic do until indlaeg.eof %> Antal: <%=indlaeg("antal")%> <br /> Emne: <%=rs("emne")%> <br /> Nyeste: <%=svar("Navn")%> <br /> <%indlaeg.movenext rs.movenext svar.movenext loop%>
Fejltype: Microsoft OLE DB Provider for ODBC Drivers (0x80040E14) [Microsoft][ODBC Microsoft Access-driver] Du har forsøgt at køre en forespørgsel, der ikke medtager det angivne udtryk "IndlaegID" som en del af en aggregatfunktion. /varde/test.asp, line 69
<% Set rs = Server.CreateObject("ADODB.RecordSet") strSQL = "SELECT * FROM indlaeg ORDER BY IndlaegID desc" rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
Set svar = Server.CreateObject("ADODB.RecordSet") strSQL = "SELECT Emne, Navn,svar, dato,IndlaegID FROM Svar ORDER BY IndlaegID desc;" svar.Open strSQL, Conn, adOpenKeyset, adLockOptimistic %> <% Set indlaeg = Server.CreateObject("ADODB.RecordSet") strSQL = "SELECT COUNT(IndlaegID) as antal,IndlaegID FROM svar ORDER BY IndlaegID" indlaeg.Open strSQL, Conn, adOpenKeyset, adLockOptimistic do until indlaeg.eof %> Antal: <%=indlaeg("antal")%> <br /> Emne: <%=rs("emne")%> <br /> Nyeste: <%=svar("Navn")%> <br /> <%indlaeg.movenext rs.movenext svar.movenext loop%>
Fejltype: Microsoft OLE DB Provider for ODBC Drivers (0x80040E14) [Microsoft][ODBC Microsoft Access-driver] Du har forsøgt at køre en forespørgsel, der ikke medtager det angivne udtryk "IndlaegID" som en del af en aggregatfunktion. /varde/test.asp, line 15
tror ikke man kan gøre det sådan.. men må lige prøve
<% Response.Buffer = True %>
<% Set rs = Server.CreateObject("ADODB.RecordSet") strSQL = "SELECT * FROM indlaeg ORDER BY IndlaegID desc" rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
Set svar = Server.CreateObject("ADODB.RecordSet") strSQL = "SELECT Emne, Navn,svar, dato,IndlaegID FROM Svar ORDER BY IndlaegID desc;" svar.Open strSQL, Conn, adOpenKeyset, adLockOptimistic %> <% Set indlaeg = Server.CreateObject("ADODB.RecordSet") strSQL = "SELECT COUNT(IndlaegID) as antal,IndlaegID as indid FROM svar ORDER BY indid" indlaeg.Open strSQL, Conn, adOpenKeyset, adLockOptimistic do until indlaeg.eof %> Antal: <%=indlaeg("antal")%> <br /> Emne: <%=rs("emne")%> <br /> Nyeste: <%=svar("Navn")%> <br /> <%indlaeg.movenext rs.movenext svar.movenext loop%>
Fejltype: Microsoft OLE DB Provider for ODBC Drivers (0x80040E14) [Microsoft][ODBC Microsoft Access-driver] Du har forsøgt at køre en forespørgsel, der ikke medtager det angivne udtryk "indid" som en del af en aggregatfunktion. /varde/test.asp, line 15
<% Set rs = Server.CreateObject("ADODB.RecordSet") strSQL = "SELECT * FROM indlaeg ORDER BY IndlaegID desc" rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
Set svar = Server.CreateObject("ADODB.RecordSet") strSQL = "SELECT Emne, Navn,svar, dato,IndlaegID FROM Svar ORDER BY IndlaegID desc;" svar.Open strSQL, Conn, adOpenKeyset, adLockOptimistic %> <% Set indlaeg = Server.CreateObject("ADODB.RecordSet") strSQL = "SELECT COUNT(IndlaegID) as antal FROM svar WHERE svar IN (SELECT IndlaegID FROM svar ORDER BY IndlaegID" indlaeg.Open strSQL, Conn, adOpenKeyset, adLockOptimistic do until indlaeg.eof %> Antal: <%=indlaeg("antal")%> <br /> Emne: <%=rs("emne")%> <br /> Nyeste: <%=svar("Navn")%> <br /> <%indlaeg.movenext rs.movenext svar.movenext loop%>
<% Set rs = Server.CreateObject("ADODB.RecordSet") strSQL = "SELECT * FROM indlaeg ORDER BY IndlaegID desc" rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
Set svar = Server.CreateObject("ADODB.RecordSet") strSQL = "SELECT Emne, Navn,svar, dato,IndlaegID FROM Svar ORDER BY IndlaegID desc;" svar.Open strSQL, Conn, adOpenKeyset, adLockOptimistic %> <% Set indlaeg = Server.CreateObject("ADODB.RecordSet") strSQL = "SELECT COUNT(IndlaegID) as antal, IndlaegID FROM svar WHERE IndlaegIDIN (SELECT IndlaegID FROM svar ORDER BY IndlaegID" indlaeg.Open strSQL, Conn, adOpenKeyset, adLockOptimistic do until indlaeg.eof %> Antal: <%=indlaeg("antal")%> <br /> Emne: <%=rs("emne")%> <br /> Nyeste: <%=svar("Navn")%> <br /> <%indlaeg.movenext rs.movenext svar.movenext loop%>
Fejltype: Microsoft OLE DB Provider for ODBC Drivers (0x80040E14) [Microsoft][ODBC Microsoft Access-driver] Du har forsøgt at køre en forespørgsel, der ikke medtager det angivne udtryk "IndlaegID" som en del af en aggregatfunktion.
dim id id=Request.QueryString("ID") svarid="0" Set rs = Server.CreateObject("ADODB.RecordSet") strSQL = "SELECT * FROM svar WHERE IndlaegID="&ID&"" rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
Set rs2 = Server.CreateObject("ADODB.RecordSet") strSQL = "SELECT * FROM indlaeg WHERE IndlaegID="&ID&"" rs2.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
if i=1 then bg="#FFFFFF" i=0 else bg="#eeeeee" i=1 end if
Her er den kode som skriver dataene ind i databasen: <% id=request.querystring("id") Set rs = Server.CreateObject("ADODB.RecordSet") strSQL = "SELECT * FROM svar order by svarid" rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
Set rs1 = Server.CreateObject("ADODB.RecordSet") strSQL = "SELECT * FROM Users WHERE brugernavn='"&session("username")&"'" rs1.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
if Request.ServerVariables("REQUEST_METHOD") = "POST" then rs.AddNew rs("Navn") = session("username") rs("svar") = Replace(Request.Form("svar"), vbCrLf, "<br>") rs("indlaegID") = id rs.update response.redirect "indlaeg.asp?id="&id end if %>
<% id=request.querystring("id") Set rs = Server.CreateObject("ADODB.RecordSet") strSQL = "SELECT * FROM svar order by svarid" rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
Set rs1 = Server.CreateObject("ADODB.RecordSet") strSQL = "SELECT * FROM Users WHERE brugernavn='"&session("username")&"'" rs1.Open strSQL, Conn, adOpenKeyset, adLockOptimistic
if Request.ServerVariables("REQUEST_METHOD") = "POST" then rs.AddNew rs("Navn") = session("username") rs("svar") = Replace(Request.Form("svar"), vbCrLf, "<br>") rs("indlaegID") = id rs.update response.redirect "indlaeg.asp?id="&id end if %>
<% dim connection dim sSQL sSQL= "UPDATE Indlaeg SET tal = tal + 1 WHERE IndlaegID = " & id " Set connection = Server.CreateObject("ADODB.Connection") connection.Open connection.execute(sSQL) Connection.Close Set Connection = Nothing %>
hvis ikke det virker må du gerne tilpasse den din database forbindelse.. den skal bare køre denne sql
"UPDATE Indlaeg SET tal = tal + 1 WHERE IndlaegID = " & id "
Fejltype: Der opstod en Microsoft VBScript-kompileringsfejl (0x800A0409) Strengkonstanten er uafsluttet /varde/svar.asp, line 26, column 66 sSQL= "UPDATE Indlaeg SET tal = tal + 1 WHERE IndlaegID = " & id " -----------------------------------------------------------------^
Når jeg prøver at køre testkoden får jeg denne meddelelse: Fejltype: Microsoft OLE DB Provider for ODBC Drivers (0x80040E10) [Microsoft][ODBC Microsoft Access-driver] Der er for få parametre. Der var ventet 1. /varde/test.asp, line 11
Samtidig, ændrere tallet i databasen sig ikke, der står stadig nul, selvom, jeg opretter et svar uden problemer..
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.