webForumDet fria alternativet

Fel med skicka i formulär till databas

ASP

3 svar · 280 visningar · startad av syrolis

Medlem sedan feb. 2003107 inlägg
Frågan#1

Hej alla!

Jag har ett för mig knepigt problem.
Driver ett forum som har fungerat nu ett halvår eller så. Det har ca 20-25 användare. Det senaste två månaderna har det dock trilskats med mig och en användare till. Vi kan nämligen inte längre göra nya inlägg på forumet utan bara besvara inlägg.
Mycket trist!
Numera får jag skriva mina nya inlägg direkt i databasen och den andre maila person nr 3 som får skriva in inlägget....

Vad kan det vara för fel?
Webbläsarversion? Jag har IE 6.0.2800
Fungerar varken på min W98, W2000Pro eller XPPro

Mitt forum ligger på sidan http://europenytt.no-ip.com/dd/nyttforum/default.asp för den som vill gå in och titta. Det finns ett testforum om man vill "kladda" lite.

Koden till sidan som skickar nya inlägg/besvarar inlägg kommer här:

 <TABLE WIDTH="100%" BORDER="0" CELLSPACING="0" CELLPADDING="12" BGCOLOR="#F0F0F0">
  <TR VALIGN="TOP">
    <TD ALIGN="center"><H3>Diskussionsforum hos <%= SiteTitle %></H3></TD>
  </TR>
</TABLE>
<BR>
<%
Dim DB, InReplyTo, rsInReplyTo, IsAReply
Set DB = Connect (ForumMDB)

If Request ("Action") = "Skicka" Then
    ' We are into the second step: We should be inserting the records now.

    ' Open a Recordset so that we can insert it into the "Messages" table.
	Dim rsMessage
	Set rsMessage = Server.CreateObject ("ADODB.Recordset")
	rsMessage.Open "Messages", DB, adOpenStatic, adLockPessimistic

	' Create a new, blank record.
	rsMessage.AddNew

	' Now set all fields to the values we got from the form.
	rsMessage ("ForumID") = Request ("ForumID")
	rsMessage ("PostedBy") = Request ("PostedBy")
	rsMessage ("Email") = Request ("Email")
	rsMessage ("Subject") = Request ("Subject")
	rsMessage ("Body") = Request ("Body")
	rsMessage ("InReplyTo") = Request ("InReplyTo")
	rsMessage ("Date") = Now

	' And save them.
	rsMessage.Update

	' We also need to update the "Last Post on" and "Total Posts"
	' for the corresponding forum.
	Dim rsForum
	Set rsForum = Server.CreateObject ("ADODB.Recordset")
	rsForum.Open "SELECT Posts, LastPost FROM Forums WHERE ForumID = " & Request ("ForumID"), DB, adOpenStatic, adLockPessimistic

	' Update the values with the new values:
	' Increment "Posts" &  set the time of the last post as Now.
	rsForum ("Posts") = rsForum ("Posts") + 1
	rsForum ("LastPost") = Now
	rsForum.Update

	' Set cookies for the "From" and "Email" fields,
	' so that the user need not enter them again
	' if he sends another message in the same session.
	' Cookies are saved only for the session, not permanently.
	Response.Cookies (SiteTitle)("PostedBy") = Request("PostedBy")
	Response.Cookies (SiteTitle)("Email") = Request("Email")

	' Take the user to the Forum page, so he can see the
	' message he just posted.
	Response.Redirect "forum.asp?ForumID=" & Request ("ForumID")

Else
	' Else means, we are still in Step1,
	' and we should display the form.

	' Is this message in reply to some other message,
	' or is it an original message?
	InReplyTo = Request ("InReplyTo")

	' "IsAReply" is a Boolean variable that means the following:
	'   True  : This is in reply to a message.
	'   False : This is an original message.
	If InReplyTo <> 0 And InReplyTo <> "" Then
		IsAReply = True
		Set rsInReplyTo = DB.Execute ("SELECT * FROM Messages WHERE MessageID = " & InReplyTo)
	End If

    ' If it's not a reply, and the ForumID is not supplied,
    ' then something is wrong. Take the user back.

    ' Beware, it is NOT an error if this is a reply & the ForumID.
    ' If we have the original message, we can determine which Forum this belongs to.
    If Not IsAReply And (Request ("ForumID") = "" Or Request ("ForumID") = 0) Then
		Response.Redirect "forum.asp"
	End If
	%>
<TABLE WIDTH="90%" BORDER="1" CELLSPACING="0" CELLPADDING="8" ALIGN="CENTER">
  <TR ALIGN="LEFT" VALIGN="TOP" BGCOLOR="#FFFFFF">
    <TD COLSPAN="2">Posta ett meddelande <% If IsAReply Then Response.Write " som svar till <B>" & rsInReplyTo("Subject") & "</B> av <B>" & rsInReplyTo ("PostedBy") & "</B>"%></TD>
  </TR>
  <TR ALIGN="LEFT" VALIGN="TOP" BGCOLOR="#FFFFFF">
    <TD COLSPAN="2">
      <FORM ACTION="<%= Request.ServerVariables ("PATH_INFO") %>">
		<INPUT TYPE="hidden" NAME="ForumID" VALUE="<% If IsAReply Then Response.Write rsInReplyTo ("ForumID") Else Response.Write Request ("ForumID") %>">
		<INPUT TYPE="hidden" NAME="InReplyTo" VALUE="<% If InReplyTo = "" Then Response.Write "0" Else Response.Write InReplyTo %>">
        <TABLE WIDTH="100%" BORDER="0" CELLSPACING="0" CELLPADDING="4" ALIGN="CENTER">
          <TR ALIGN="LEFT" VALIGN="TOP">
            <TD WIDTH="20%" ALIGN="RIGHT">Från:</TD>
            <TD WIDTH="80%">
              <INPUT TYPE="text" NAME="PostedBy" SIZE="60" MAXLENGTH="50" VALUE="<%= Request.Cookies (SiteTitle)("PostedBy") %>">
            </TD>
          </TR>
          <TR ALIGN="LEFT" VALIGN="TOP">
            <TD WIDTH="20%" ALIGN="RIGHT">Email Adress:</TD>
            <TD WIDTH="80%">
              <INPUT TYPE="text" NAME="Email" SIZE="60" MAXLENGTH="100" VALUE="<%= Request.Cookies (SiteTitle)("Email") %>">
            </TD>
          </TR>
          <TR ALIGN="LEFT" VALIGN="TOP">
            <TD WIDTH="20%" ALIGN="RIGHT">Ämne:</TD>
            <TD WIDTH="80%">
              <INPUT TYPE="text" NAME="Subject" SIZE="60" MAXLENGTH="100" VALUE="<% If IsAReply Then Response.Write "Re: "  & rsInReplyTo ("Subject")%>">
            </TD>
          </TR>
          <TR ALIGN="LEFT" VALIGN="TOP">
            <TD WIDTH="20%" ALIGN="RIGHT">Meddelande:</TD>
            <TD WIDTH="80%">
              <TEXTAREA NAME="Body" COLS="50" ROWS="12"></TEXTAREA>
            </TD>
          </TR>
          <TR ALIGN="LEFT" VALIGN="TOP">
            <TD WIDTH="20%" ALIGN="RIGHT">&nbsp;</TD>
            <TD WIDTH="80%">
              <INPUT TYPE="submit" NAME="Action" VALUE="Skicka">
            </TD>
          </TR>
        </TABLE>
      </FORM>
    </TD>
  </TR>
</TABLE>
<p align="center">
<%
End If
%>
<BR>
<font face="Tahoma" size="2"><b><a href=# onClick="topWindow()">Hur
lägger jag in smileys? Eller visar foton/bilder?</a></b></font>
<TABLE WIDTH="100%" BORDER="0" CELLSPACING="0" CELLPADDING="6" ALIGN="CENTER">
  <TR ALIGN="CENTER" VALIGN="TOP">
    <TD COLSPAN="2" ALIGN="LEFT">
      <H6><A HREF="http://www.manastungare.com/asp/">&copy; 2000, Manas Tungare.</a></H6>
    </TD>
    <TD ALIGN="RIGHT" WIDTH="20%">
      <DIV ALIGN="LEFT"><A HREF="default.asp"><IMG SRC="forum45x45.gif" BORDER="0"></A>&nbsp;<A HREF="javascript:history.go(-1)"><IMG SRC="mt45x45.gif" BORDER="0"></A></DIV>
    </TD>
  </TR>
</TABLE>
Medlem sedan dec. 20003 887 inlägg
#2

Det där var ju ren och fin (samt trevligt kommenterad :)) kod, som jag inte kunde se några fel i.

Det går ju förstås att byta ut lite saker i den, så det förslaget kan jag visa.

[blue]'We are in the second step: We should be inserting the records now.[/blue]
strSQL = "INSERT INTO Messages(ForumID, PostedBy, Email, Subject, Body, InReplyTo, Date) VALUES ("
strSQL = strSQL & Request.Form("ForumID") & ", "
strSQL = strSQL & "'" & Replace(Request.Form("PostedBy"), "'", "'') & "', "
strSQL = strSQL & "'" & Replace(Request.Form("Email"), "'", "'') & "', "
strSQL = strSQL & "'" & Replace(Request.Form("Subject"), "'", "''") & "', "
strSQL = strSQL & "'" & Replace(Request.Form("Body"), "'", "''") & "', "
strSQL = strSQL & Request.Form("InReplyTo") & ", "
strSQL = strSQL & "#" & Now & "#)"

[blue]'Store the values in the database[/blue]
DB.Execute strSQL, , adCmdText

Istället för att använda SELECT och Recordset.AddNew och Recordset.Update. Varför du inte längre kan skriva inlägg har jag inget bra svar på dock :l
Får du inget felmeddelande av något slag?

Medlem sedan feb. 2003107 inlägg
#3

Nej, jag får inget felmeddelande alls :(
Det händer bara ingenting...

Man skriver sitt inlägg fyller på med namn och ev. mailadress och trycker på skicka. Men inte en reaktion. Precis som om skicka-knappen inte hade någon funktion utan sitter där för syns skull bara.

När jag replikerar ett meddelande däremot så är allt ok. Meddelandet går fram.

Jag har varit väldigt IE-trogen men kanske ska prova med någon annan webbläsare :q
Ger mig den på att det kanske bara är någon inställning någonstanns eftersom det fungerar för så många andra att lägga in nya inlägg. x(

Dessutom har ju sidan fungerat för mig förut...

Medlem sedan mars 20002 836 inlägg
#4

I IE 6 så är ju hanteringen av COOKIES default satt ganska hårt.

Prova att ändra dessa till att tillåta cookies från alla

cya,
/PatrikB

259 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
116 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)