03. juli 2006 - 22:45
Der er
70 kommentarer og 1 løsning
INSERT og UPDATE
Jeg vil gerne poste data samtidig med at jeg opdatere noget andet data i db'en. Jeg har skrevet flg: tempSQL = "SELECT Subject FROM Entries WHERE (Id = " & Request("MessageId") & ")" Set tempRS = myConn.Execute(tempSQL) strSQL = strSQL & " (Name, Email, Comment, ForumId, ReplyId, Subject, IP)" strSQL = strSQL & " VALUES('" & DBFix(Trim(Request.Form("Name"))) & "', '" & DBFix(Trim(Request.Form("Email"))) & "', '" & DBFix(Trim(Request.Form("Comment"))) & "', '" & DBFix(Trim(Request("ForumId"))) & "','" & DBFix(Trim(Request("MessageId"))) & "','" & DBFix(Trim(tempRS("Subject"))) & "', '" & IP & "');" tempSQL = "Update [Entries] set " strSQL = strSQL & "[date]= '" & Now & "', " strSQL = strSQL & " Where [id] = '" & Request.querystring("Messageid") & "'" tempRS.Close Når dette sker meldes der flg fejl: Microsoft OLE DB Provider for ODBC Drivers error '80040e14' [Microsoft][ODBC Microsoft Access Driver] Syntax error in UPDATE statement. /forum/forumpost.asp, line 40 Nogle der kan hjælpe?
Annonceindlæg fra Computerworld
Du har rod i tempSQL og strSQL.
umiddelbart er din strSQL fokert medmindre der er mere kode... ellers kan du lave en insertSQL og en updateSQL og så kører conn.execute først på den ene og så den anden... Men jeg synes det kodestump der ser mystisk ud Mvh Carsten
ja, jeg ved det ser lidt mystisk ud, men det er fordi det er noget jeg har downloadet og nu redigerer. Hele koden efter jeg har redigeret den efter farvings forslag: strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("forum.mdb") Function DBFix(tempString) tempString = Replace(Trim(tempString), "'", "''") tempString = Replace(tempString, "|", "") DBFix = tempString End Function Set myConn = Server.CreateObject("ADODB.Connection") myConn.Open strDSN Posted = 0 If Len(Trim(Request.Form("Subject"))) = 0 AND Len(Trim(Request.Form("Comment"))) = 0 Then strSQL = "SELECT * FROM Forums WHERE (ID = " & Request("ForumID") & ")" Set rs = myConn.Execute(strSQL) If Not (rs.BOF Or rs.EOF) Then intForumID = rs("ID") strForum = rs("Forum") End If Else strSQL = "INSERT INTO Entries" If Len(Trim(Request.Form("MessageId"))) = 0 Then strSQL = strSQL & " (Name, Email, Subject, Comment, ForumId, Orgthread, IP)" strSQL = strSQL & " VALUES('" & DBFix(Trim(Request.Form("Name"))) & "', '" & DBFix(Trim(Request.Form("Email"))) & "', '" & DBFix(Trim(Request.Form("Subject"))) & "', '" & DBFix(Trim(Request.Form("Comment"))) & "', '" & DBFix(Trim(Request("ForumId"))) & "', TRUE, '" & IP & "');" Else tempSQL = "SELECT Subject FROM Entries WHERE (Id = " & Request("MessageId") & ")" Set tempRS = myConn.Execute(tempSQL) strSQL = strSQL & " (Name, Email, Comment, ForumId, ReplyId, Subject, IP)" strSQL = strSQL & " VALUES('" & DBFix(Trim(Request.Form("Name"))) & "', '" & DBFix(Trim(Request.Form("Email"))) & "', '" & DBFix(Trim(Request.Form("Comment"))) & "', '" & DBFix(Trim(Request("ForumId"))) & "','" & DBFix(Trim(Request("MessageId"))) & "','" & DBFix(Trim(tempRS("Subject"))) & "', '" & IP & "');" tempRS.Close End If myConn.Execute(strSQL) Posted = 1 myConn.Close Set Conn = Server.CreateObject("ADODB.Connection") DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; " DSN = DSN & "DBQ=" & Server.MapPath("forum.mdb") Conn.Open DSN strSQL = "Update [Entries] set " strSQL = strSQL & "[date]= '" & Now & "', " strSQL = strSQL & " Where [id] = '" & Request.querystring("Messageid") & "'" conn.execute(strSQL) Conn.Close Set Conn = Nothing End If Jeg får nu en anden fejl melding: Microsoft OLE DB Provider for ODBC Drivers error '80040e14' [Microsoft][ODBC Microsoft Access Driver] Syntax error in UPDATE statement. /forum/forumpost.asp, line 48
du roder stadig rundt i det kan jeg se :) i stedet for at skrive strSQL = strSQL & osv... så skriv hele stringen... altså helt fra: INSERT INTO tabel (name, etc) VALUES (bent, etc) desuden skal du ikke lukke din ADODB.connection... åben den i starten af dit dokument og luk den når du har udført sidste kodning med din database... og hvorfor har du [] om Entries, date og id? Mvh Carsten
"og hvorfor har du [] om Entries, date og id?" aner det ikke.. jeg har bare fået at vide at jeg skulle gøre sådan, og det har vist sig at virke når jeg bruger det. :s Du kunne vel ikke hjælpe mig en lille smule på vej? Jeg har virkelig svært ved at overskue og forstå det her.
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("forum.mdb") Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open strDSN Posted = 0 Function DBFix(tempString) tempString = Replace(Trim(tempString), "'", "''") tempString = Replace(tempString, "|", "") DBFix = tempString End Function If Len(Trim(Request.Form("Subject"))) = 0 AND Len(Trim(Request.Form("Comment"))) = 0 Then strSQL = "SELECT * FROM Forums WHERE ID = " & Request("ForumID") & "" Set rs = Conn.Execute(strSQL) If Not (rs.BOF Or rs.EOF) Then intForumID = rs("ID") strForum = rs("Forum") End If strSQL.Close rs.close Else If Len(Trim(Request.Form("MessageId"))) = 0 Then strSQL = "INSERT INTO Entries" strSQL = strSQL & " (Name, Email, Subject, Comment, ForumId, Orgthread, IP)" strSQL = strSQL & " VALUES('" & DBFix(Trim(Request.Form("Name"))) & "', '" & DBFix(Trim(Request.Form("Email"))) & "', '" & DBFix(Trim(Request.Form("Subject"))) & "', '" & DBFix(Trim(Request.Form("Comment"))) & "', " & DBFix(Trim(Request("ForumId"))) & ", TRUE, " & IP & ")" strSQL.Close Else tempSQL = "SELECT Subject FROM Entries WHERE Id = " & Request("MessageId") & "" Set tempRS = Conn.Execute(tempSQL) strSQL = "INSERT INTO Entries" strSQL = strSQL & " (Name, Email, Comment, ForumId, ReplyId, Subject, IP)" strSQL = strSQL & " VALUES('" & DBFix(Trim(Request.Form("Name"))) & "', '" & DBFix(Trim(Request.Form("Email"))) & "', '" & DBFix(Trim(Request.Form("Comment"))) & "', " & DBFix(Trim(Request("ForumId"))) & "," & DBFix(Trim(Request("MessageId"))) & ",'" & DBFix(Trim(tempRS("Subject"))) & "', " & IP & ")" Conn.Execute(strSQL) tempRS.Close strSQL.Close End If Posted = 1 strSQL = "UPDATE Entries SET date = NOW () WHERE id = '" & Request.querystring("Messageid") & "'" conn.execute(strSQL) strSQL.close Conn.Close Set Conn = Nothing End If
nu melder den flg. fejl: Microsoft VBScript runtime error '800a01a8' Object required: 'Conn' Jeg har prøvet at sætte myConn.Close ind til sidst, men det hjalp ikke. Jeg forstår det virkelig ikke.
hmm, du kan ikke bruge myconn længere da den ik eksisterer... men hvad linie brokker den sig i... ellers prøv: ===== strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("forum.mdb") Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open strDSN Posted = 0 Function DBFix(tempString) tempString = Replace(Trim(tempString), "'", "''") tempString = Replace(tempString, "|", "") DBFix = tempString End Function If Len(Trim(Request.Form("Subject"))) = 0 AND Len(Trim(Request.Form("Comment"))) = 0 Then strSQL = "SELECT * FROM Forums WHERE ID = " & Request("ForumID") & "" Set rs = Conn.Execute(strSQL) If Not (rs.BOF Or rs.EOF) Then intForumID = rs("ID") strForum = rs("Forum") End If strSQL.Close rs.close Else If Len(Trim(Request.Form("MessageId"))) = 0 Then strSQL = "INSERT INTO Entries" strSQL = strSQL & " (Name, Email, Subject, Comment, ForumId, Orgthread, IP)" strSQL = strSQL & " VALUES('" & DBFix(Trim(Request.Form("Name"))) & "', '" & DBFix(Trim(Request.Form("Email"))) & "', '" & DBFix(Trim(Request.Form("Subject"))) & "', '" & DBFix(Trim(Request.Form("Comment"))) & "', " & DBFix(Trim(Request("ForumId"))) & ", TRUE, " & IP & ")" conn.Execute(strSQL) strSQL.Close Else tempSQL = "SELECT Subject FROM Entries WHERE Id = " & Request("MessageId") & "" Set tempRS = Conn.Execute(tempSQL) strSQL = "INSERT INTO Entries" strSQL = strSQL & " (Name, Email, Comment, ForumId, ReplyId, Subject, IP)" strSQL = strSQL & " VALUES('" & DBFix(Trim(Request.Form("Name"))) & "', '" & DBFix(Trim(Request.Form("Email"))) & "', '" & DBFix(Trim(Request.Form("Comment"))) & "', " & DBFix(Trim(Request("ForumId"))) & "," & DBFix(Trim(Request("MessageId"))) & ",'" & DBFix(Trim(tempRS("Subject"))) & "', " & IP & ")" Conn.Execute(strSQL) tempRS.Close strSQL.Close End If Posted = 1 strSQL = "UPDATE Entries SET date = NOW () WHERE id = '" & Request.querystring("Messageid") & "'" conn.execute(strSQL) strSQL.close Conn.Close Set Conn = Nothing End If
04. juli 2006 - 00:28
#10
hov, en lille fejl fra min side. Den melder denne her fejl:
Microsoft VBScript runtime error '800a01a8'
Object required: 'strSQL'
/forum/forumpost.asp, line 20
samme fejlmeddelelse får jeg hvis jeg benytter dit andet bud. Hvis du gerne vil have den originale kildekode kan den findes her:
http://activedeveloper.dk/download/default.asp?mode=showdownload&id=36
04. juli 2006 - 00:32
#11
Nu har jeg fjernet alle close ting, nu prøver vi lige og ser om det er dem som generer os =========== strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("forum.mdb") Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open strDSN Posted = 0 Function DBFix(tempString) tempString = Replace(Trim(tempString), "'", "''") tempString = Replace(tempString, "|", "") DBFix = tempString End Function If Len(Trim(Request.Form("Subject"))) = 0 AND Len(Trim(Request.Form("Comment"))) = 0 Then strSQL = "SELECT * FROM Forums WHERE ID = " & Request("ForumID") & "" Set rs = Conn.Execute(strSQL) If Not (rs.BOF Or rs.EOF) Then intForumID = rs("ID") strForum = rs("Forum") End If Else If Len(Trim(Request.Form("MessageId"))) = 0 Then strSQL = "INSERT INTO Entries" strSQL = strSQL & " (Name, Email, Subject, Comment, ForumId, Orgthread, IP)" strSQL = strSQL & " VALUES('" & DBFix(Trim(Request.Form("Name"))) & "', '" & DBFix(Trim(Request.Form("Email"))) & "', '" & DBFix(Trim(Request.Form("Subject"))) & "', '" & DBFix(Trim(Request.Form("Comment"))) & "', " & DBFix(Trim(Request("ForumId"))) & ", TRUE, " & IP & ")" conn.Execute(strSQL) Else tempSQL = "SELECT Subject FROM Entries WHERE Id = " & Request("MessageId") & "" Set tempRS = Conn.Execute(tempSQL) strSQL = "INSERT INTO Entries" strSQL = strSQL & " (Name, Email, Comment, ForumId, ReplyId, Subject, IP)" strSQL = strSQL & " VALUES('" & DBFix(Trim(Request.Form("Name"))) & "', '" & DBFix(Trim(Request.Form("Email"))) & "', '" & DBFix(Trim(Request.Form("Comment"))) & "', " & DBFix(Trim(Request("ForumId"))) & "," & DBFix(Trim(Request("MessageId"))) & ",'" & DBFix(Trim(tempRS("Subject"))) & "', " & IP & ")" Conn.Execute(strSQL) End If Posted = 1 strSQL = "UPDATE Entries SET date = NOW () WHERE id = '" & Request.querystring("Messageid") & "'" conn.execute(strSQL) Set Conn = Nothing End If
04. juli 2006 - 11:26
#12
nu melder den flg fejL: Microsoft OLE DB Provider for ODBC Drivers error '80040e14' [Microsoft][ODBC Microsoft Access Driver] Syntax error in INSERT INTO statement. /forum/forumpost.asp, line 32
04. juli 2006 - 17:26
#13
kan du ikke ligefortælle mig hvad Datatype de forskellige kolonner er, for det afhænger af hvordan '' og "" skal sættes Mvh Carsten
04. juli 2006 - 19:49
#14
Name: Tekst Email: Tekst Subject: Tekst Comment: Notat ForumId: Tal Orgthread: Ja/Nej (check felt) IP: Tal Du kunne vel ikke forklare mig lidt om '' og ""? Bare så jeg måske i fremtiden ikke laver fejl med det :)
04. juli 2006 - 19:51
#15
hov glemte lige: date: dato og klokkeslæt id: autonummerering
04. juli 2006 - 20:12
#16
der skal også være en ReplyID :) Her du nemlig annonceret her: strSQL = strSQL & " (Name, Email, Comment, ForumId, ReplyId, Subject, IP)" hmm, "" sættes rundt om alt, men hvis det ikke er et tal dvs text så skal der '' UDENPÅ ""... ex strSQL = "INSERT INTO tabel (test) VALUES (" & tal & ")" her har vi en variabel ved navn tal, som indeholder et tal :) som indsættes i en kolonne af typen tal :) ex 2 strSQL = "INSERT INTO tabel (test) VALUES ('" & text & "')" her har vi en variabel ved navn text, som indeholder text som indsættes i en kolonne af typen text... hvis det er en true/false kolonne betegnes den også som text, medmindre den læser true og false som 0 og 1 :) Mvh Carsten
04. juli 2006 - 20:27
#17
ReplyID er også et tal. Vil det være lettere for dig hvis jeg sendte dig filen og databasen pr email?
04. juli 2006 - 20:50
#18
Det er så vidt jeg ved ikke lovligt ifl Ekspertens reglement.. Men jeg prøver lige at sætte koden op lidt anderledes hvis det er okay :) Mvh Carsten
04. juli 2006 - 21:01
#19
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("forum.mdb") Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open strDSN Posted = 0 Function DBFix(tempString) tempString = Replace(Trim(tempString), "'", "''") tempString = Replace(tempString, "|", "") DBFix = tempString End Function If Len(Trim(Request.Form("Subject"))) = 0 AND Len(Trim(Request.Form("Comment"))) = 0 Then dim ForumID = Request.Form("ForumID") strSQL = "SELECT * FROM Forums WHERE ID = " & Request.Form("ForumID") & "" Set rs = Conn.Execute(strSQL) If Not (rs.BOF Or rs.EOF) Then intForumID = rs("ID") strForum = rs("Forum") End If Else dim tempName, tempEmail, tempSubject, tempComment, tempForumId, tempMessageId tempName = DBFix(Trim(Request.Form("Name"))) tempEmail = DBFix(Trim(Request.Form("Email"))) tempSubject = DBFix(Trim(Request.Form("Subject"))) tempComment = DBFix(Trim(Request.Form("Comment"))) tempForumId = DBFix(Trim(Request.Form("ForumId"))) tempMessageId = DBFix(Trim(Request.Form("MessageId"))) If Len(tempMessageId) = 0 Then strSQL = "INSERT INTO Entries" strSQL = strSQL & " (Name, Email, Subject, Comment, ForumId, Orgthread, IP)" strSQL = strSQL & " VALUES('" & tempName & "', '" & tempEmail & "', '" & tempSubject & "', '" & tempComment & "', " & tempForumId & ", TRUE, " & IP & ")" conn.Execute(strSQL) Else tempSQL = "SELECT Subject FROM Entries WHERE Id = " & Request("MessageId") & "" Set tempRS = Conn.Execute(tempSQL) strSQL = "INSERT INTO Entries (Name, Email, Comment, ForumId, ReplyId, Subject, IP)" strSQL = strSQL & " VALUES('" & tempName & "', '" & tempEmail & "', '" & tempComment & "', " & tempForumId & "," & tempMessageId & ",'" & tempSubject & "', " & IP & ")" Conn.Execute(strSQL) End If Posted = 1 strSQL = "UPDATE Entries SET date = NOW () WHERE id = " & Request.querystring("Messageid") & "" conn.execute(strSQL) Set Conn = Nothing End If
04. juli 2006 - 21:02
#20
Finder lidt hist og her :) === strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("forum.mdb") Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open strDSN Posted = 0 Function DBFix(tempString) tempString = Replace(Trim(tempString), "'", "''") tempString = Replace(tempString, "|", "") DBFix = tempString End Function If Len(Trim(Request.Form("Subject"))) = 0 AND Len(Trim(Request.Form("Comment"))) = 0 Then dim ForumID = Request.Form("ForumID") strSQL = "SELECT * FROM Forums WHERE ID = " & Request.Form("ForumID") & "" Set rs = Conn.Execute(strSQL) If Not (rs.BOF Or rs.EOF) Then intForumID = rs("ID") strForum = rs("Forum") End If Else dim tempName, tempEmail, tempSubject, tempComment, tempForumId, tempMessageId tempName = DBFix(Trim(Request.Form("Name"))) tempEmail = DBFix(Trim(Request.Form("Email"))) tempSubject = DBFix(Trim(Request.Form("Subject"))) tempComment = DBFix(Trim(Request.Form("Comment"))) tempForumId = DBFix(Trim(Request.Form("ForumId"))) tempMessageId = DBFix(Trim(Request.Form("MessageId"))) If Len(tempMessageId) = 0 Then strSQL = "INSERT INTO Entries" strSQL = strSQL & " (Name, Email, Subject, Comment, ForumId, Orgthread, IP)" strSQL = strSQL & " VALUES('" & tempName & "', '" & tempEmail & "', '" & tempSubject & "', '" & tempComment & "', " & tempForumId & ", TRUE, " & IP & ")" conn.Execute(strSQL) Else tempSQL = "SELECT Subject FROM Entries WHERE Id = " & tempMessageId & "" Set tempRS = Conn.Execute(tempSQL) strSQL = "INSERT INTO Entries (Name, Email, Comment, ForumId, ReplyId, Subject, IP)" strSQL = strSQL & " VALUES('" & tempName & "', '" & tempEmail & "', '" & tempComment & "', " & tempForumId & "," & tempMessageId & ",'" & tempSubject & "', " & IP & ")" Conn.Execute(strSQL) End If Posted = 1 strSQL = "UPDATE Entries SET date = NOW () WHERE id = " & Request.querystring("Messageid") & "" conn.execute(strSQL) Set Conn = Nothing End If
04. juli 2006 - 23:00
#21
Der er åbenbart noget der er skrevet forkert.. jeg kan ikke selv se det. Microsoft VBScript compilation error '800a0401' Expected end of statement /forum/forumpost.asp, line 14 dim ForumID = Request.Form("ForumID") ------------^ Hvad er det "dim" betyder?
04. juli 2006 - 23:33
#22
dim indikere at det er en variabel... ====== strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("forum.mdb") Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open strDSN Posted = 0 Function DBFix(tempString) tempString = Replace(Trim(tempString), "'", "''") tempString = Replace(tempString, "|", "") DBFix = tempString End Function dim tempName, tempEmail, tempSubject, tempComment, tempForumId, tempMessageId tempName = DBFix(Trim(Request.Form("Name"))) tempEmail = DBFix(Trim(Request.Form("Email"))) tempSubject = DBFix(Trim(Request.Form("Subject"))) tempComment = DBFix(Trim(Request.Form("Comment"))) tempForumId = DBFix(Trim(Request.Form("ForumId"))) tempMessageId = DBFix(Trim(Request.Form("MessageId"))) If (Len(tempSubject) = 0) AND (Len(tempComment) = 0) Then strSQL = "SELECT * FROM Forums WHERE ID = " & tempForumId & "" Set rs = Conn.Execute(strSQL) If Not (rs.BOF Or rs.EOF) Then intForumID = rs("ID") strForum = rs("Forum") End If Else If Len(tempMessageId) = 0 Then strSQL = "INSERT INTO Entries" strSQL = strSQL & " (Name, Email, Subject, Comment, ForumId, Orgthread, IP)" strSQL = strSQL & " VALUES('" & tempName & "', '" & tempEmail & "', '" & tempSubject & "', '" & tempComment & "', " & tempForumId & ", TRUE, " & IP & ")" conn.Execute(strSQL) Else tempSQL = "SELECT Subject FROM Entries WHERE Id = " & tempMessageId & "" Set tempRS = Conn.Execute(tempSQL) strSQL = "INSERT INTO Entries (Name, Email, Comment, ForumId, ReplyId, Subject, IP)" strSQL = strSQL & " VALUES('" & tempName & "', '" & tempEmail & "', '" & tempComment & "', " & tempForumId & "," & tempMessageId & ",'" & tempSubject & "', " & IP & ")" Conn.Execute(strSQL) End If Posted = 1 strSQL = "UPDATE Entries SET date = NOW () WHERE id = " & Request.querystring("Messageid") & "" conn.execute(strSQL) Set Conn = Nothing End If
04. juli 2006 - 23:42
#23
Microsoft OLE DB Provider for ODBC Drivers error '80040e14' [Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'ID ='. /forum/forumpost.asp, line 25
05. juli 2006 - 00:01
#24
hmmm, enten er det sommer varmen eller mig, for jeg kan ikke se den fejl der... Kigger på den i morgen... Mvh Carsten
05. juli 2006 - 17:36
#25
Har lagt halv søvnløs, men fundet fejlen - tror jeg... det er fordi tempForumId er tom :) tempForumId = DBFix(Trim(Request.Form("ForumId"))) denne kode skal rettes så den får værdien af forum ID... hvordan ved du vist bedst Mvh Carsten
05. juli 2006 - 23:11
#26
er ForumId noget der hentes fra en form eller fra noget andet? Mvh Carsten
06. juli 2006 - 00:28
#27
Udsnit af formskemadelen: <% If Len(Trim(Request.Form("Subject"))) = 0 AND Len(Trim(Request.Form("Comment"))) = 0 Then %> <table> <tr> <td><strong><big>Forum: <% If Posted = 0 Then Response.Write strForum%></big></strong></td> </tr> <tr> <td width="100%"><% If Posted = 0 Then %> <p align="left"><font face="Verdana"><b><small><a href="default.asp">Til oversigt</a></small></b></font> <%End If%> </td> </tr> <tr> <tr> <td> <form method="POST" action="forumpost.asp?MessageID=<%=Trim(Request("MessageID"))%>"> <input type="hidden" name="ForumID" value="<%=intForumID%>"><input type="hidden" name="MessageID" value="<%=Trim(Request("MessageID"))%>"><table border="0" width="100%" cellspacing="1" cellpadding="0"> </td> </tr> jeg vil umiddelbart mene at det er en form, men jeg er ikke sikker på om input også går under den kategori?
06. juli 2006 - 09:34
#28
Ja, den burde da få noget med... hvis ForumId i formen har en værdi? hvordan får du intForumID frem? Mvh Carsten
06. juli 2006 - 10:13
#29
jeg ved det ærlig talt ikke. Som sagt har jeg downloadet skidtet forprogrammeret, og der er i den forbindelse blevet brugt ASP kodning som er alt for avanceret i forhold til hvad jeg kan :S Hele forumpost.asp filen ser således ud: <% strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("forum.mdb") Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open strDSN Posted = 0 Function DBFix(tempString) tempString = Replace(Trim(tempString), "'", "''") tempString = Replace(tempString, "|", "") DBFix = tempString End Function dim tempName, tempEmail, tempSubject, tempComment, tempForumId, tempMessageId tempName = DBFix(Trim(Request.Form("Name"))) tempEmail = DBFix(Trim(Request.Form("Email"))) tempSubject = DBFix(Trim(Request.Form("Subject"))) tempComment = DBFix(Trim(Request.Form("Comment"))) tempForumId = DBFix(Trim(Request.Form("ForumId"))) tempMessageId = DBFix(Trim(Request.Form("MessageId"))) If (Len(tempSubject) = 0) AND (Len(tempComment) = 0) Then strSQL = "SELECT * FROM Forums WHERE ID = " & tempForumId & "" Set rs = Conn.Execute(strSQL) If Not (rs.BOF Or rs.EOF) Then intForumID = rs("ID") strForum = rs("Forum") End If Else If Len(tempMessageId) = 0 Then strSQL = "INSERT INTO Entries" strSQL = strSQL & " (Name, Email, Subject, Comment, ForumId, Orgthread, IP)" strSQL = strSQL & " VALUES('" & tempName & "', '" & tempEmail & "', '" & tempSubject & "', '" & tempComment & "', " & tempForumId & ", TRUE, " & IP & ")" conn.Execute(strSQL) Else tempSQL = "SELECT Subject FROM Entries WHERE Id = " & tempMessageId & "" Set tempRS = Conn.Execute(tempSQL) strSQL = "INSERT INTO Entries (Name, Email, Comment, ForumId, ReplyId, Subject, IP)" strSQL = strSQL & " VALUES('" & tempName & "', '" & tempEmail & "', '" & tempComment & "', " & tempForumId & "," & tempMessageId & ",'" & tempSubject & "', " & IP & ")" Conn.Execute(strSQL) End If Posted = 1 strSQL = "UPDATE Entries SET date = NOW () WHERE id = " & Request.querystring("Messageid") & "" conn.execute(strSQL) Set Conn = Nothing End If %> <html> <head> <title>[ Post en besked ]</title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body topmargin="2" leftmargin="0" marginwidth="0" marginheight="2"> <div align="center"><center> <table border="0" width="600" cellspacing="1" cellpadding="0"> <td width="100%"> <center> <% If Len(Trim(Request.Form("Subject"))) = 0 AND Len(Trim(Request.Form("Comment"))) = 0 Then %> <table> <tr> <td><strong><big>Forum: <% If Posted = 0 Then Response.Write strForum%></big></strong></td> </tr> <tr> <td width="100%"><% If Posted = 0 Then %> <p align="left"><font face="Verdana"><b><small><a href="default.asp">Til oversigt</a></small></b></font> <%End If%> </td> </tr> <tr> <tr> <td> <form method="POST" action="forumpost.asp?MessageID=<%=Trim(Request("MessageID"))%>"> <input type="hidden" name="ForumID" value="<%=intForumID%>"><input type="hidden" name="MessageID" value="<%=Trim(Request("MessageID"))%>"><table border="0" width="100%" cellspacing="1" cellpadding="0"> </td> </tr> <tr> <td align="left"><small>Navn:</small></td> <td align="left"><small><input type="text" name="name" size="20"></small></td> </tr> <% if Request.Querystring ("type") = 1 then Response.Write "" else %> <tr> <td align="left"><small>Titel:</small></td> <td align="left"><small><input type="text" name="Subject" size="30"></font></small></td> </tr> <% End if %> <tr> <td valign="top" align="left"><small>Besked:</small></td> <td align="left"><textarea rows="15" name="Comment" cols="100"></textarea></td> </tr> <tr><td colspan="2"> <p align="right"><input style="border: 1px solid; color:gray;" type="submit" value="Send" name="Action"></p> </form> </td></tr> </table> </center> </td> </tr> </table> <% Else response.redirect ("default.asp") End If %> </tr> </table> </center></div> </body> </html>
06. juli 2006 - 10:14
#30
Det skal iøvrigt siges at det hele faktisk fungerede fint inden jeg havde den perverse trang til at tilføje en opdatering af dato efter data posting. :)
06. juli 2006 - 19:32
#31
okay, så prøv at rette tempForumId = DBFix(Trim(Request.Form("ForumId"))) til tempForumId = DBFix(Trim(Request("ForumId"))) Det burde ikke virke, jeg kan bare huske at den stod sådan før jeg ændrede i det... Mvh Carsten
06. juli 2006 - 20:05
#32
Den melder stadig den samme fejl :( Microsoft OLE DB Provider for ODBC Drivers error '80040e14' [Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'ID ='. /forum/forumpost.asp, line 25
06. juli 2006 - 20:08
#33
Hjælper det iøvrigt at når der skal oprettes tråde, så fås ForumID bl.a. vha. querystring? eks: forum/forumpost.asp?ForumId=5 Ligeledes når der skal skrives indlæg i trådene så er linket: forum/forumpost.asp?ForumId=5&MessageId=595&type=1
06. juli 2006 - 20:18
#34
Mht til din UPDATE, så kræver access at du sætter # (og ikke apostrof) rundt om datoen i din sql
06. juli 2006 - 20:24
#35
dvs. at det skal se sådan her ud? strSQL = "UPDATE Entries SET date = " & #NOW# & " () WHERE id = " & Request.querystring("Messageid") & ""
06. juli 2006 - 20:44
#36
Now er en funktion som findes i både asp og access. Hvis du benytter den fra asp, ses den fra access som en almindelig variabel, og der skal # (og uden parenteser i strengen) Hvis du benytter Access' Now funktion , skal der ikke noget rundt om strSQL = "UPDATE Entries SET date = #" & Now & "# WHERE id = " & Request.querystring("Messageid") & "" eller strSQL = "UPDATE Entries SET date = Now() WHERE id = " & Request.querystring("Messageid") & ""
06. juli 2006 - 20:46
#37
De firkantede parenteser skal benyttes, hvis du gør brug af reserverede navne. Date er et sådant navn, så der skal [] rundt om, ellers får du syntax fejl
06. juli 2006 - 21:14
#38
[Hjælper det iøvrigt at når der skal oprettes tråde, så fås ForumID bl.a. vha. querystring?] - kan mange gange være en fordel fordi man kan holde øje med om den fører ID'et med sig [Ligeledes når der skal skrives indlæg i trådene så er linket: forum/forumpost.asp?ForumId=5&MessageId=595&type=1] - ID'er er mange gange nemmest at føre over vha Querystrings... morhan, okay tak for hjælpen, er selv mest hjemmevant i MySQL :) Mvh Carsten
07. juli 2006 - 00:28
#39
Jeg har nu stadig den samme fejlmelding. Jeg forstår det virkelig ikke... det er helt forståeligt hvis du giver op Carsten. Måske skaber det hele mere bøvl end det er værd =/
07. juli 2006 - 09:35
#40
Prøv at ændre dine forms fra name til ID... Ved ikke om det har noget som helst at sige... Men nej jeg giver da ikke op :) fejlen er der, og den skal da også findes... Mvh Carsten
10. juli 2006 - 17:59
#41
det sker ikke det helt store, men nu får jeg flg fejlmelding Microsoft OLE DB Provider for ODBC Drivers error '80040e14' [Microsoft][ODBC Microsoft Access Driver] Syntax error in INSERT INTO statement. /forum/forumpost.asp, line 34
10. juli 2006 - 18:03
#42
"[Hjælper det iøvrigt at når der skal oprettes tråde, så fås ForumID bl.a. vha. querystring?] - kan mange gange være en fordel fordi man kan holde øje med om den fører ID'et med sig" Jeg tror jeg har formuleret mig lidt forkert. Det jeg prøvede at sige var at jeg tror at ForumID og MessageID fås gennem querystring'en. Nu ved jeg ikke om man kan se det i koden, men det har vist sig at være tilfældet da jeg engang for langtid siden testede forummet på forskellige led.
10. juli 2006 - 19:02
#43
okay så ret reguest.form("") til request.querystring("") Mvh Carsten
10. juli 2006 - 19:30
#44
det virker stadig ikke, og jeg får den samme fejl. Skal jeg prøve at poste kildekoden inden jeg begyndte at redigere i den?
10. juli 2006 - 21:12
#45
ja alt hvad du har lige fra <html> til </html> Mvh Carsten
10. juli 2006 - 21:52
#46
<% strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("forum.mdb") Function DBFix(tempString) tempString = Replace(Trim(tempString), "'", "''") tempString = Replace(tempString, "|", "") DBFix = tempString End Function Set myConn = Server.CreateObject("ADODB.Connection") myConn.Open strDSN Posted = 0 If Len(Trim(Request.Form("Subject"))) = 0 AND Len(Trim(Request.Form("Comment"))) = 0 Then strSQL = "SELECT * FROM Forums WHERE (ID = " & Request("ForumID") & ")" Set rs = myConn.Execute(strSQL) If Not (rs.BOF Or rs.EOF) Then intForumID = rs("ID") strForum = rs("Forum") End If Else strSQL = "INSERT INTO Entries" If Len(Trim(Request.Form("MessageId"))) = 0 Then strSQL = strSQL & " (Name, Email, Subject, Comment, ForumId, Orgthread, IP)" strSQL = strSQL & " VALUES('" & DBFix(Trim(Request.Form("Name"))) & "', '" & DBFix(Trim(Request.Form("Email"))) & "', '" & DBFix(Trim(Request.Form("Subject"))) & "', '" & DBFix(Trim(Request.Form("Comment"))) & "', '" & DBFix(Trim(Request("ForumId"))) & "', TRUE, '" & strIP & "');" Else tempSQL = "SELECT Subject FROM Entries WHERE (Id = " & Request("MessageId") & ")" Set tempRS = myConn.Execute(tempSQL) strSQL = strSQL & " (Name, Email, Comment, ForumId, ReplyId, Subject, IP)" strSQL = strSQL & " VALUES('" & DBFix(Trim(Request.Form("Name"))) & "', '" & DBFix(Trim(Request.Form("Email"))) & "', '" & DBFix(Trim(Request.Form("Comment"))) & "', '" & DBFix(Trim(Request("ForumId"))) & "','" & DBFix(Trim(Request("MessageId"))) & "','" & DBFix(Trim(tempRS("Subject"))) & "', '" & strIP & "' );" tempRS.Close End If myConn.Execute(strSQL) Posted = 1 End If myConn.Close %> <html> <head> <title>Forum 53 [ Post en besked ]</title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body topmargin="2" leftmargin="0" marginwidth="0" marginheight="2"> <div align="center"><center> <table border="0" width="600" cellspacing="1" cellpadding="0"> <tr> <td><center><img src="topbanner.jpg"></img></center></td> </tr> <tr> <td height="45" width="600" colspan="3" style="border: 1px solid;color: #E69B20;" bgcolor="#FFFFFF"> <table topmargin="2" width="600" leftmargin="0" marginwidth="0" marginheight="0"> <tr> <td> <center> <a href="../index.html" class="menu">index</a> </center> </td> <td> <center> <a href="../sites/portfolio.html" class="menu">portfolio</a> </center> </td> <td> <center> <a href="../sites/billeder.html" class="menu">billeder</a> </center> </td> <td> <center> <a href="default.asp" class="menu">forum</a> </center> </td> <td> <center> <a href="../gbog/default.html" class="menu">gæstebog</a> </center> </td> </tr> </table> </td> </tr> <td width="100%"> <center> <% If Len(Trim(Request.Form("Subject"))) = 0 AND Len(Trim(Request.Form("Comment"))) = 0 Then %> <table> <tr> <td><strong><big>Forum: <% If Posted = 0 Then Response.Write strForum%></big></strong></td> </tr> <tr> <td width="100%"><% If Posted = 0 Then %> <p align="left"><font face="Verdana"><b><small><a href="default.asp">Til oversigt</a></small></b></font> <%End If%> </td> </tr> <tr> <tr> <td> <form method="POST" action="forumpost.asp?MessageID=<%=Trim(Request("MessageID"))%>"> <input type="hidden" name="ForumID" value="<%=intForumID%>"><input type="hidden" name="MessageID" value="<%=Trim(Request("MessageID"))%>"><table border="0" width="100%" cellspacing="1" cellpadding="0"> </td> </tr> <tr> <td align="left"><small>Navn:</small></td> <td align="left"><small><input type="text" name="name" size="20"></small></td> </tr> <% if Request.Querystring ("type") = 1 then Response.Write "" else %> <tr> <td align="left"><small>Titel:</small></td> <td align="left"><small><input type="text" name="Subject" size="30"></font></small></td> </tr> <% End if %> <tr> <td valign="top" align="left"><small>Besked:</small></td> <td align="left"><textarea rows="15" name="Comment" cols="100"></textarea></td> </tr> <tr><td colspan="2"> <p align="right"><input style="border: 1px solid; color:gray;" type="submit" value="Send" name="Action"></p> </form> </td></tr> </table> </center> </td> </tr> </table> <% Else response.redirect ("default.asp") End If %> </tr> </table> </center></div> </body> </html>
10. juli 2006 - 21:54
#47
argh... jeg glemte lige at kopiere flg linje med: strIP = request.servervariables("REMOTE_ADDR") Den ligger i helt i toppen inden strDSN starter.
10. juli 2006 - 22:37
#48
<% strIP = request.servervariables("REMOTE_ADDR") strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("forum.mdb") Function DBFix(tempString) tempString = Replace(Trim(tempString), "'", "''") tempString = Replace(tempString, "|", "") DBFix = tempString End Function Set myConn = Server.CreateObject("ADODB.Connection") myConn.Open strDSN Posted = 0 dim tempName, tempEmail, tempSubject, tempComment, tempForumId, tempMessageId tempName = DBFix(Trim(Request.Form("Name"))) tempEmail = DBFix(Trim(Request.Form("Email"))) tempSubject = DBFix(Trim(Request.Form("Subject"))) tempComment = DBFix(Trim(Request.Form("Comment"))) tempForumId = DBFix(Trim(Request.Form("ForumId"))) tempMessageId = DBFix(Trim(Request.Form("MessageId"))) If (Len(tempSubject) = 0) AND (Len(tempComment) = 0) Then strSQL = "SELECT * FROM Forums WHERE ID = " & Request.Querystring("ForumID") & "" Set rs = myConn.Execute(strSQL) If Not (rs.BOF Or rs.EOF) Then intForumID = rs("ID") strForum = rs("Forum") End If Else strSQL = "INSERT INTO Entries" If Len(tempMessageId) = 0 Then strSQL = strSQL & " (Name, Email, Subject, Comment, ForumId, Orgthread, IP)" strSQL = strSQL & " VALUES('" & tempName & "', '" & tempEmail & "', '" & tempSubject & "', '" & tempComment & "', " & tempForumId & ", TRUE, " & strIP & ")" Else *** tempSQL = "SELECT Subject FROM Entries WHERE Id = " & Request.Querystring("MessageId") & "" Set tempRS = myConn.Execute(tempSQL) strSQL = strSQL & " (Name, Email, Comment, ForumId, ReplyId, Subject, IP)" strSQL = strSQL & " VALUES('" & tempName & "', '" & tempEmail & "', '" & tempComment & "', " & tempForumId & "," & tempMessageId & ",'" & tempSubject & "', " & strIP & ")" tempRS.Close End If myConn.Execute(strSQL) Posted = 1 End If myConn.Close %> <html> <head> <title>Forum 53 [ Post en besked ]</title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body topmargin="2" leftmargin="0" marginwidth="0" marginheight="2"> <div align="center"><center> <table border="0" width="600" cellspacing="1" cellpadding="0"> <tr> <td><center><img src="topbanner.jpg"></img></center></td> </tr> <tr> <td height="45" width="600" colspan="3" style="border: 1px solid;color: #E69B20;" bgcolor="#FFFFFF"> <table topmargin="2" width="600" leftmargin="0" marginwidth="0" marginheight="0"> <tr> <td> <center> <a href="../index.html" class="menu">index</a> </center> </td> <td> <center> <a href="../sites/portfolio.html" class="menu">portfolio</a> </center> </td> <td> <center> <a href="../sites/billeder.html" class="menu">billeder</a> </center> </td> <td> <center> <a href="default.asp" class="menu">forum</a> </center> </td> <td> <center> <a href="../gbog/default.html" class="menu">gæstebog</a> </center> </td> </tr> </table> </td> </tr> <td width="100%"> <center> <% If (Len(tempSubject) = 0) AND (Len(tempComment) = 0) Then %> <table> <tr> <td><strong><big>Forum: <% If Posted = 0 Then Response.Write strForum%></big></strong></td> </tr> <tr> <td width="100%"><% If Posted = 0 Then %> <p align="left"><font face="Verdana"><b><small><a href="default.asp">Til oversigt</a></small></b></font> <%End If%> </td> </tr> <tr> <tr> <td> <form method="POST" action="forumpost.asp?MessageID=<%=Rs("MessageID")%>"> <input type="hidden" name="ForumID" value="<%=intForumID%>"><input type="hidden" name="MessageID" value="<%=Rs("MessageID")%>"><table border="0" width="100%" cellspacing="1" cellpadding="0"> </td> </tr> <tr> <td align="left"><small>Navn:</small></td> <td align="left"><small><input type="text" name="name" size="20"></small></td> </tr> <% if Request.Querystring("type") = 1 then Response.Write "" else %> <tr> <td align="left"><small>Titel:</small></td> <td align="left"><small><input type="text" name="Subject" size="30"></font></small></td> </tr> <% End if %> <tr> <td valign="top" align="left"><small>Besked:</small></td> <td align="left"><textarea rows="15" name="Comment" cols="100"></textarea></td> </tr> <tr><td colspan="2"> <p align="right"><input style="border: 1px solid; color:gray;" type="submit" value="Send" name="Action"></p> </form> </td></tr> </table> </center> </td> </tr> </table> <% Else response.redirect ("default.asp") End If %> </tr> </table> </center></div> </body> </html> ====== Har sat *** et sted i koden, hvad bruger du denne select til? og har rettet noget jeg tror kan skyldes fejlene, fx at det er fra recordsættet tingene sku hentes og hverken fra querystringen eller formen :) Mvh Carsten
11. juli 2006 - 16:21
#49
***: Jeg tror at det bliver brugt til at skrive indlæg i bestemte tråde. Sådan tolker jeg ihvertfald linjen. Jeg får nu den her fejl: ADODB.Recordset error '800a0cc1' Item cannot be found in the collection corresponding to the requested name or ordinal. /forum/forumpost.asp, line 115 men da jeg ikke har andet end noteblok, så er det lidt svært at se hvilken linje der er tale om. Jeg tror ellers det vil være let for mig at rette det, hvis du kunne hjælpe mig med at finde linjen. PS: Du har vel ikke et godt tip til et gratis program til hjemmesider med linjeviser? :)
11. juli 2006 - 17:31
#50
hmm jeg bruger selv TSW webcoder men har en licens fra før det blev en non-commercial-licens... ======= <% strIP = request.servervariables("REMOTE_ADDR") strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("forum.mdb") Function DBFix(tempString) tempString = Replace(Trim(tempString), "'", "''") tempString = Replace(tempString, "|", "") DBFix = tempString End Function Set myConn = Server.CreateObject("ADODB.Connection") myConn.Open strDSN Posted = 0 dim tempName, tempEmail, tempSubject, tempComment, tempForumId, tempMessageId tempName = DBFix(Trim(Request.Form("Name"))) tempEmail = DBFix(Trim(Request.Form("Email"))) tempSubject = DBFix(Trim(Request.Form("Subject"))) tempComment = DBFix(Trim(Request.Form("Comment"))) tempForumId = DBFix(Trim(Request.Form("ForumId"))) tempMessageId = DBFix(Trim(Request.Form("MessageId"))) If (Len(tempSubject) = 0) AND (Len(tempComment) = 0) Then strSQL = "SELECT * FROM Forums WHERE ID = " & Request.Querystring("ForumID") & "" Set rs = myConn.Execute(strSQL) If Not (rs.BOF Or rs.EOF) Then intForumID = rs("ID") strForum = rs("Forum") End If Else strSQL = "INSERT INTO Entries" If Len(tempMessageId) = 0 Then strSQL = strSQL & " (Name, Email, Subject, Comment, ForumId, Orgthread, IP)" strSQL = strSQL & " VALUES('" & tempName & "', '" & tempEmail & "', '" & tempSubject & "', '" & tempComment & "', " & tempForumId & ", TRUE, " & strIP & ")" Else *** tempSQL = "SELECT Subject FROM Entries WHERE Id = " & Request.Querystring("MessageId") & "" Set tempRS = myConn.Execute(tempSQL) strSQL = strSQL & " (Name, Email, Comment, ForumId, ReplyId, Subject, IP)" strSQL = strSQL & " VALUES('" & tempName & "', '" & tempEmail & "', '" & tempComment & "', " & tempForumId & "," & tempMessageId & ",'" & tempSubject & "', " & strIP & ")" tempRS.Close End If myConn.Execute(strSQL) Posted = 1 End If myConn.Close %> <html> <head> <title>Forum 53 [ Post en besked ]</title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body topmargin="2" leftmargin="0" marginwidth="0" marginheight="2"> <div align="center"><center> <table border="0" width="600" cellspacing="1" cellpadding="0"> <tr> <td><center><img src="topbanner.jpg"></img></center></td> </tr> <tr> <td height="45" width="600" colspan="3" style="border: 1px solid;color: #E69B20;" bgcolor="#FFFFFF"> <table topmargin="2" width="600" leftmargin="0" marginwidth="0" marginheight="0"> <tr> <td> <center> <a href="../index.html" class="menu">index</a> </center> </td> <td> <center> <a href="../sites/portfolio.html" class="menu">portfolio</a> </center> </td> <td> <center> <a href="../sites/billeder.html" class="menu">billeder</a> </center> </td> <td> <center> <a href="default.asp" class="menu">forum</a> </center> </td> <td> <center> <a href="../gbog/default.html" class="menu">gæstebog</a> </center> </td> </tr> </table> </td> </tr> <td width="100%"> <center> <% If (Len(tempSubject) = 0) AND (Len(tempComment) = 0) Then %> <table> <tr> <td><strong><big>Forum: <% If Posted = 0 Then Response.Write strForum%></big></strong></td> </tr> <tr> <td width="100%"><% If Posted = 0 Then %> <p align="left"><font face="Verdana"><b><small><a href="default.asp">Til oversigt</a></small></b></font> <%End If%> </td> </tr> <tr> <tr> <td> <form method="POST" action="forumpost.asp?MessageID=<%=Request.Form("MessageID")%>"> <input type="hidden" name="ForumID" value="<%=intForumID%>"><input type="hidden" name="MessageID" value="<%=Rs("MessageID")%>"><table border="0" width="100%" cellspacing="1" cellpadding="0"> </td> </tr> <tr> <td align="left"><small>Navn:</small></td> <td align="left"><small><input type="text" name="name" size="20"></small></td> </tr> <% if Request.Querystring("type") = 1 then Response.Write "" else %> <tr> <td align="left"><small>Titel:</small></td> <td align="left"><small><input type="text" name="Subject" size="30"></font></small></td> </tr> <% End if %> <tr> <td valign="top" align="left"><small>Besked:</small></td> <td align="left"><textarea rows="15" name="Comment" cols="100"></textarea></td> </tr> <tr><td colspan="2"> <p align="right"><input style="border: 1px solid; color:gray;" type="submit" value="Send" name="Action"></p> </form> </td></tr> </table> </center> </td> </tr> </table> <% Else response.redirect ("default.asp") End If %> </tr> </table> </center></div> </body> </html>
11. juli 2006 - 18:28
#51
Fejlen ligger i: <form method="POST" action="forumpost.asp?MessageID=<%=Request.Form("MessageID")%>"> <input type="hidden" name="ForumID" value="<%=intForumID%>"><input type="hidden" name="MessageID" value="<%=Rs("ID")%>"><table border="0" width="100%" cellspacing="1" cellpadding="0"> Jeg har ændret <%=Rs("MessageID")%> til <%=Rs("ID")%>, da MessageID i virkeligheden hedder ID i db'en. (Ham der originalt kodede forummet har åbenbart valgt MessageID som alias for ID) Linjen: <form method="POST" action="forumpost.asp?MessageID=<%=Request.Form("MessageID")%>"> Hvor skal <%=Request.Form("MessageID")%> komme fra? Inden man kommer ind på siden og skal skrive indlæg/tråd, så trykker man altså på et ganske alm. link som linker videre til skrive forms'ne. Efter nærmer eftersyn kan jeg se at du har glemt at sætte update linjen ind. Det kan godt være at jeg glemte at nævne at den oprindelige kildekode ikke opdaterede data efter den havde postet :)
11. juli 2006 - 18:48
#52
[Linjen: <form method="POST" action="forumpost.asp?MessageID=<%=Request.Form("MessageID")%>"> Hvor skal <%=Request.Form("MessageID")%> komme fra? Inden man kommer ind på siden og skal skrive indlæg/tråd, så trykker man altså på et ganske alm. link som linker videre til skrive forms'ne.] - ret det til: Linjen: <form method="POST" action="forumpost.asp?MessageID=<%=Rs("ID")%>"> hvilken update linie? der er rimelig mange indlæg til at jeg har overblik over dem alle... Mvh Carsten
11. juli 2006 - 19:13
#53
"hvilken update linie? der er rimelig mange indlæg til at jeg har overblik over dem alle..." netop, der er ikke nogen :) Du kunne vel ikke hjælpe mig med at indsætte den? Noget a la strSQL = "UPDATE Entries SET date = NOW () WHERE id = '" & Request.querystring("Messageid") & "'" conn.execute(strSQL) Jeg ved ikke helt om du forstår hvad jeg mener? Min evne til at formulere mig lige nu er ikke helt i top :s
11. juli 2006 - 19:18
#54
Efter jeg har rettet linjen du fortalte mig om sker der intet. Jeg får stadig samme fejlmelding. Det er helt uforståeligt... jeg har tjekket databasen ekstra gange og alt muligt, men fejlen bliver stående. Poster lige hvordan min kildekode ser ud nu: <% strIP = request.servervariables("REMOTE_ADDR") strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("forum.mdb") Function DBFix(tempString) tempString = Replace(Trim(tempString), "'", "''") tempString = Replace(tempString, "|", "") DBFix = tempString End Function Set myConn = Server.CreateObject("ADODB.Connection") myConn.Open strDSN Posted = 0 dim tempName, tempEmail, tempSubject, tempComment, tempForumId, tempMessageId tempName = DBFix(Trim(Request.Form("Name"))) tempEmail = DBFix(Trim(Request.Form("Email"))) tempSubject = DBFix(Trim(Request.Form("Subject"))) tempComment = DBFix(Trim(Request.Form("Comment"))) tempForumId = DBFix(Trim(Request.Form("ForumId"))) tempMessageId = DBFix(Trim(Request.Form("MessageId"))) If (Len(tempSubject) = 0) AND (Len(tempComment) = 0) Then strSQL = "SELECT * FROM Forums WHERE ID = " & Request.Querystring("ForumID") & "" Set rs = myConn.Execute(strSQL) If Not (rs.BOF Or rs.EOF) Then intForumID = rs("ID") strForum = rs("Forum") End If Else strSQL = "INSERT INTO Entries" If Len(tempMessageId) = 0 Then strSQL = strSQL & " (Name, Email, Subject, Comment, ForumId, Orgthread, IP)" strSQL = strSQL & " VALUES('" & tempName & "', '" & tempEmail & "', '" & tempSubject & "', '" & tempComment & "', " & tempForumId & ", TRUE, " & strIP & ")" Else tempSQL = "SELECT Subject FROM Entries WHERE Id = " & Request.Querystring("MessageId") & "" Set tempRS = myConn.Execute(tempSQL) strSQL = strSQL & " (Name, Email, Comment, ForumId, ReplyId, Subject, IP)" strSQL = strSQL & " VALUES('" & tempName & "', '" & tempEmail & "', '" & tempComment & "', " & tempForumId & "," & tempMessageId & ",'" & tempSubject & "', " & strIP & ")" tempRS.Close End If myConn.Execute(strSQL) Posted = 1 End If myConn.Close %> <html> <head> <title>Forum 53 [ Post en besked ]</title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body topmargin="2" leftmargin="0" marginwidth="0" marginheight="2"> <div align="center"><center> <table border="0" width="600" cellspacing="1" cellpadding="0"> <tr> <td><center><img src="topbanner.jpg"></img></center></td> </tr> <tr> <td height="45" width="600" colspan="3" style="border: 1px solid;color: #E69B20;" bgcolor="#FFFFFF"> <table topmargin="2" width="600" leftmargin="0" marginwidth="0" marginheight="0"> <tr> <td> <center> <a href="../index.html" class="menu">index</a> </center> </td> <td> <center> <a href="../sites/portfolio.html" class="menu">portfolio</a> </center> </td> <td> <center> <a href="../sites/billeder.html" class="menu">billeder</a> </center> </td> <td> <center> <a href="default.asp" class="menu">forum</a> </center> </td> <td> <center> <a href="../gbog/default.html" class="menu">gæstebog</a> </center> </td> </tr> </table> </td> </tr> <td width="100%"> <center> <% If (Len(tempSubject) = 0) AND (Len(tempComment) = 0) Then %> <table> <tr> <td><strong><big>Forum: <% If Posted = 0 Then Response.Write strForum%></big></strong></td> </tr> <tr> <td width="100%"><% If Posted = 0 Then %> <p align="left"><font face="Verdana"><b><small><a href="default.asp">Til oversigt</a></small></b></font> <%End If%> </td> </tr> <tr> <tr> <td> <form method="POST" action="forumpost.asp?MessageID=<%=Rs("id")%>"> <input type="hidden" name="ForumID" value="<%=intForumID%>"><input type="hidden" name="MessageID" value="<%=Rs("id")%>"><table border="0" width="100%" cellspacing="1" cellpadding="0"> </td> </td> </tr> <tr> <td align="left"><small>Navn:</small></td> <td align="left"><small><input type="text" name="name" size="20"></small></td> </tr> <% if Request.Querystring("type") = 1 then Response.Write "" else %> <tr> <td align="left"><small>Titel:</small></td> <td align="left"><small><input type="text" name="Subject" size="30"></font></small></td> </tr> <% End if %> <tr> <td valign="top" align="left"><small>Besked:</small></td> <td align="left"><textarea rows="15" name="Comment" cols="100"></textarea></td> </tr> <tr><td colspan="2"> <p align="right"><input style="border: 1px solid; color:gray;" type="submit" value="Send" name="Action"></p> </form> </td></tr> </table> </center> </td> </tr> </table> <% Else response.redirect ("default.asp") End If %> </tr> </table> </center></div> </body> </html>
11. juli 2006 - 19:30
#55
hvor er den "update" del henne? men prøver lige at gå igennem koden en gang til, og ser hvilke ting jeg opsnuser... :) Mvh Carsten
11. juli 2006 - 19:34
#56
update delen jeg postede var noget du havde skrevet i en af de forgående indlæg. Prøv at kigge på nogle af de første indlæg. Men det er egentlig ikke særlig relevant... for det vigtigste er bare at den opdatere noget data lige efter den har gemt data i db'en. Kunne du hjælpe mig med det?
11. juli 2006 - 19:40
#57
hmm forstår godt hvorfor den ikke vil gøre noget... Rs("id") henter den jo fra databasen, men den del hvor SELECT * FROM ... er, er i en if...else sætning, som bliver løbet igennem når siden loades... eller siden submittes... Mvh Carsten
11. juli 2006 - 19:46
#58
[for det vigtigste er bare at den opdatere noget data lige efter den har gemt data i db'en. Kunne du hjælpe mig med det?] - det er jo let nok, men sålænge den nuværende fejl fremkommer, så hjælper det andet jo ikke... men ellers: strSQLinsert = "INSERT INTO tabel (navn, navn, navn) VALUES (værdi, værdi, værdi)" strSQLupdate = "UPDATE tabel SET navn = værdi WHERE navn = værdi" conn.execute(strSQLinsert) conn.execute(strSQLupdate) så indsætter den og opdaterer... Mvh Carsten
12. juli 2006 - 18:06
#59
"Rs("id") henter den jo fra databasen, men den del hvor SELECT * FROM ... er, er i en if...else sætning, som bliver løbet igennem når siden loades... eller siden submittes..." Du har ikke et bud på hvordan det kan rettes op? Jeg har selv prøvet at tænke mig lidt frem til det, men jeg kan ikke helt se enden af tunellen :)
12. juli 2006 - 19:20
#61
Endvidere vil jeg også foreslå at du begynder at lære lidt CSS, da det vil give din kode et væsentligt ansigtsløft :) og koden vil også blive hurtigere at parse... Mvh Carsten
12. juli 2006 - 19:36
#63
"Og siden har iøvrigt brugt en del css, men jeg må blankt erkende at jeg netop med formsne ikke har brugt den store tid. Kreativiteten blomstre ikke når det kommer til det område :)" Forstår først hvad du mener nu... hehe, jeg bør overveje at læse tingene mere grundigt ;)
12. juli 2006 - 20:04
#64
Men ang. skønheden af din kode, kan du lege med senere :) og hvad er type = 1 ? Mvh Carsten
12. juli 2006 - 20:27
#65
Det er bare noget jeg har lavet til når man skriver indlæg i en tråd. Den sørger for at "emne" formen ikke kommer frem. <% if Request.Querystring("type") = 1 then Response.Write "" else %> <tr> <td align="left"><small>Titel:</small></td> <td align="left"><small><input type="text" name="Subject" size="30"></font></small></td> </tr> <% End if %> Den har ingen reel betydning i forhold til at poste data.
12. juli 2006 - 20:52
#66
ved jeg godt, men nu ændrer jeg jo 180 grader i koden :) Men jeg roder fortsat videre, dog skriver jeg meget over til response.write da jeg har fået afvide at <% %> stresser serveren/browseren... ved ikke om dette er sandt, men det er stadig lige nemt at overskue Mvh Carsten
12. juli 2006 - 22:08
#67
Det lyder lækkert. Jeg påskønner virkelig den store hjælp :)
12. juli 2006 - 23:33
#68
<% strIP = request.servervariables("REMOTE_ADDR") strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("forum.mdb") Set MyConn = Server.CreateObject("ADODB.Connection") myConn.Open strDSN Posted = false dim tempName, tempEmail, tempSubject, tempComment, tempForumId, tempMessageId dim TempQueryForumID, TempQueryMessageID, TempQueryMode TempQueryForumID = Request.Querystring("ForumID") TempQueryMessageID = Request.Querystring("MessageID") TempQueryMode = Request.Querystring("Mode") Function DBFix(tempString) tempString = Replace(Trim(tempString), "'", "''") tempString = Replace(tempString, "|", "") DBFix = tempString End Function strSQL = "SELECT * FROM Forums WHERE ID = " & Request.Querystring("ForumID") & "" Set Rs = myConn.Execute(strSQL) If Not (Rs.BOF OR Rs.EOF) Then intForumID = Rs("ForumID") strForum = Rs("Name") intMessageID = Rs("Id") End If If TempQueryMode = "Post" Then tempName = DBFix(Trim(Request.Form("Name"))) tempEmail = DBFix(Trim(Request.Form("Email"))) tempSubject = DBFix(Trim(Request.Form("Subject"))) tempComment = DBFix(Trim(Request.Form("Comment"))) tempForumId = DBFix(Trim(Request.Form("ForumId"))) tempMessageId = DBFix(Trim(Request.Form("MessageId"))) If (Len(tempSubject) <> 0) AND (Len(tempComment) <> 0) Then strSQL = "INSERT INTO Entries" If Len(tempMessageId) = 0 Then strSQL = strSQL & " (Name, Email, Subject, Comment, ForumId, Orgthread, IP)" strSQL = strSQL & " VALUES('" & tempName & "', '" & tempEmail & "', '" & tempSubject & "', '" & tempComment & "', " & tempForumId & ", TRUE, " & strIP & ")" Else tempSQL = "SELECT Subject FROM Entries WHERE Id = " & Request.Querystring("MessageId") & "" Set tempRS = myConn.Execute(tempSQL) strSQL = strSQL & " (Name, Email, Comment, ForumId, ReplyId, Subject, IP)" strSQL = strSQL & " VALUES('" & tempName & "', '" & tempEmail & "', '" & tempComment & "', " & tempForumId & "," & tempMessageId & ",'" & tempSubject & "', " & strIP & ")" tempRS.Close End If myConn.Execute(strSQL) Posted = true strSQL = "UPDATE Entries SET date = NOW () WHERE id = '" & Request.querystring("Messageid") & "'" conn.execute(strSQL) End If Else %> <html> <head> <title>Forum 53 [ Post en besked ]</title> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body topmargin="2" leftmargin="0" marginwidth="0" marginheight="2"> <div align="center"><center> <table border="0" width="600" cellspacing="1" cellpadding="0"> <tr> <td><center><img src="topbanner.jpg"></img></center></td> </tr> <tr> <td height="45" width="600" colspan="3" style="border: 1px solid;color: #E69B20;" bgcolor="#FFFFFF"> <table topmargin="2" width="600" leftmargin="0" marginwidth="0" marginheight="0"> <tr> <td> <center> <a href="../index.html" class="menu">index</a> </center> </td> <td> <center> <a href="../sites/portfolio.html" class="menu">portfolio</a> </center> </td> <td> <center> <a href="../sites/billeder.html" class="menu">billeder</a> </center> </td> <td> <center> <a href="default.asp" class="menu">forum</a> </center> </td> <td> <center> <a href="../gbog/default.html" class="menu">gæstebog</a> </center> </td> </tr> </table> </td> </tr> <td width="100%"> <center> <% If Posted = false Then Response.Write "<table>" Response.Write "<tr><td>" Response.Write "<strong><big>Forum:" & strForum & "</big></strong>" Response.Write "</td></tr>" Response.Write "<tr><td width='100%'>" Response.Write "<font face='Verdana'><b><small>" Response.Write "<a href='default.asp'>Til oversigt</a>" Response.Write "</small></b></font>" Response.Write "</td></tr>" Response.Write "<tr><tr><td>" strFormForum = "<form method='POST' action='forumpost.asp?ForumID=" & intForumID & "&Mode=Post'>" strFormMessage = "<form method='POST' action='forumpost.asp?ForumID=" & intForumID & "&MessageID=" & intMessageID & "&Mode=Post'>" If TempQueryMessageID = "" then Response.Write strFormForum Else Response.Write strFormMessage End If Response.Write "<input type='hidden' name='ForumID' value='" & intForumID & "'>" If TempQueryMessageID = "" then Response.Write "" Else Response.Write "<input type='hidden' name='MessageID' value='" & intMessageID & "'>" End If Response.Write "<table border='0' width='100%' cellspacing='1' cellpadding='0'>" Response.Write "</td></tr></tr>" Response.Write "<tr><td align='left'>" Response.Write "<small>Navn:</small>" Response.Write "</td>" Response.Write "<td align='left'>" Response.Write "<small><input type='text' name='name' size='20'></small>" Response.Write "</tr>" If Request.Querystring("type") = 1 then Response.Write "" Else Response.Write "<tr><td align='left'>" Response.Write "<small>Titel:</small>" Response.Write "<td align='left'>" Response.Write "<small><input type='text' name='Subject' size='30'></small>" Response.Write "</td></tr>" End If Response.Write "<tr><td valign='top' align='left'>" Response.Write "<small>Besked:</small>" Response.Write "</td>" Response.Write "<td align='left'>" Response.Write "<textarea rows='15' name='Comment' cols='100'></textarea>" Response.Write "</td></tr>" Response.Write "<tr><td colspan='2'>" Response.Write "<p align='right'><input style='border: 1px solid; color:gray;' type='submit' value='Send' name='Action'></p>" Response.Write "</td></tr>" Response.Write "</form>" Response.Write "</td></tr>" Response.Write "</table>" Response.Write "</center>" Response.Write "</td></tr>" Response.Write "</table>" Else response.redirect ("default.asp") End If %> </tr> </table> </center></div> </body> </html> ========== Jeg lover langt fra det virker, men prøv det ad, og spørg evt hvis du vil vide hvorfor jeg har gjort som jeg har gjort samt hvis der er noget du ikke forstår... Mvh Carsten
13. juli 2006 - 21:06
#69
Den melder flg fejl: Microsoft VBScript compilation error '800a03f6' Expected 'End' /forum/forumpost.asp, line 165 Din if sætninger med Posted... vil det sige at den selv tjekker om man har submittet eller hvordan?
13. juli 2006 - 23:18
#70
altså i starten af koden sætter vi posted = false for at indikere at vi ikke har submittet endnu... derfor vil if sætningen blive true og den udskriver alt i response.write osv... når vi så submitter bliver siden jo halvt reloaded og den starter forfra med at læse koden, den når så alt det med opdatering etc og så bliver posted = true, og den springer hen til else delen hvor reponse.redirect er :) [Expected 'End'] - hader bare den fejl... :( men kigger lige på det Mvh Carsten
25. december 2008 - 12:28
#71
lukket
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.