webForumDet fria alternativet

Fel i forum kod!

ASP

20 svar · 561 visningar · startad av magnusfernstrom

Medlem sedan mars 20033 686 inlägg
Frågan#1

Hejsan!

Jag har laddat ner och testat ett script från ASPSidann scriptarkiv.
Men jag får det inte att fungera som det ska.

Det är ett forum, jag kan posta och se länkar till trådarna.
Men jag kan inte läsa trådarna.

Koden får sidan där tråden skall synas ser ut så här:

<%
Option Explicit
Dim objConn 'as object
Dim strConn 'as string
Dim strSQL 'as string
Dim rstThread 'as recordset
Dim rstSubThreads 'as recordset
Dim lngThreadID 'as long

'Kontrollera om det är ett giltigt anrop till sidan.
if not IsNumeric(Request.QueryString("threadID")) or Request.QueryString("threadID") = "" then
 'Ogiltigt anrop. Skicka tillbaka till startsidan.
 Response.Redirect("default.asp")
else
 'Giltigt anrop.
 lngThreadID = Request.QueryString("threadID")
end if

'Skapa databas-anslutningen
Set objConn = Server.CreateObject("ADODB.Connection")
'forum.mdb skall bytas ut mot vad din databas-fil heter.
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("forum.mdb")
objConn.Open strConn

'Skapa SQL-strängen för att hämta den aktuella tråden.
strSQL = "SELECT threadID, threadDateTime, threadHeadline, threadPoster, threadText, threadPosterEmail FROM tblForum WHERE threadID=" & lngThreadID

'Skapa och öppna ett recordset
Set rstThread = objConn.Execute(strSQL)
%>
<html>
 <body>
  <table border="0">
   <tr>
    <td>
     <b>Rubrik</b>
    </td>
    <td>
     <b>Datum</b>
    </td>
    <td>
     <b>Vem?</b>
    </td>
   </tr>
   <tr>
    <td colspan="2">
     <b><%=rstForum(2)%></b><i><%=rstThread(1)%></i>
    </td>
   </tr>
   <tr>
    <td>
     <%=Replace(rstThread(4), vbCrLf, "<br>")%>
    </td>
   </tr>
   <tr>
    <td>
     Inlägget gjord av: <a href="<%=rstThread(5)%>"><%=rstThread(3)%></a></b>
    </td>
   </tr>
   <tr>
    <td> </td>
   </tr>
   <tr>
    <td><a href="form.asp?replyTo=<%=rstThread(0)%>">Svara på detta inlägg</a></td>
   </tr>
 <%
 'Skapa en ny sql-sträng för att få ut alla svar till tråden.
 strSQL = strSQL = "SELECT threadID, threadDateTime, threadHeadline, threadPoster, threadText, threadPosterEmail FROM tblForum WHERE threadParent=" & rstThread(0)

'Öppna ett nytt recordset
 Set rstSubThreads = objConn.Execute(strSQL)

 if (rstSubThreads.EOF or rstSubThreads.BOF) then
  %>
   <tr>
    <td>Det finns inga svar till det här inlägget.</td>
   </tr>
   <%
 else
  do while not rstSubThreads.EOF
   %>
   <tr>
    <td><hr noshade size="1"> </td>
   </tr>
   <tr>
    <td colspan="2">
     <b><%=rstSubThreads(2)%></b>&nbsp;&nbsp;&nbsp;& nbsp;<i><%=rstSubThreads(1)%></i>
    </td>
   </tr>
   <tr>
    <td>
     <%=Replace(rstSubThreads(4), vbCrLf, "<br>")%>
    </td>
   </tr>
   <tr>
    <td>
     Inlägget gjord av: <a href="<%=rstSubThreads(5)%>"><%=rstSubThreads(3)%></a></b>
    </td>
   </tr>
   <tr>
    <td>&nbsp;</td>
   </tr>
   <%
   rstSubThreads.MoveNext
  loop
  %>
  </table>
 </body>
</html>
<%
End If
'Stäng databasen
objConn.Close
SetobjConn = nothing
%>

Och det här felmeddelandet får jag:

Microsoft VBScript runtime error '800a01f4' 

Variable is undefined: 'rstForum' 

/themad/db/readThread.asp, line 47

Hela koden finns här:

http://www.aspsidan.nu/kursRead.asp?kid=118

Jag har ingen aning vad som är fel.
Även om felmeddelandet är relativt enkelt att förstå.

Tacksam för svar.

Mvh Magnus Fernström

Medlem sedan juni 200032 967 inlägg
#2

Använder man Option Explicit måste man "dimma" alla variabler man ska använda. Lägg alltså till Dim rstForum i koden där andra variabler namngivs.

Medlem sedan mars 20033 686 inlägg
#3

Jag har prövat det...Kanske skulle han nämnt det.

När jag "dimmar" den dyker detta felmeddelande upp:

Microsoft VBScript runtime error '800a000d' 

Type mismatch 

/themad/db/readThread.asp, line 48
Medlem sedan jan. 20032 285 inlägg
#4

Vilken rad är rad 48?

Medlem sedan mars 20033 686 inlägg
#5
rad 48:

<b><%=rstForum(2)%></b><i><%=rstThread(1)%></i>
Medlem sedan jan. 20032 285 inlägg
#6

Jag antar att det är samma recordset du vill använda?

<b><%=rstThread(2)%></b><i><%=rstThread(1)%></i>
Medlem sedan mars 20033 686 inlägg
#7

Hur menar du?

Men när jag kör med din kod blir resultatet så här:

Microsoft JET Database Engine error '80040e14' 
Invalid SQL statement; expected 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT', or 'UPDATE'. 

/themad/db/readThread.asp, line 72
Rubrik  Datum  Vem?  
dasdsadd  
adadasddddad  
Inlägget gjord av: dsadasdasdas  
 
Svara på detta inlägg
Medlem sedan jan. 20032 285 inlägg
#8

Byt ut

 'Skapa en ny sql-sträng för att få ut alla svar till tråden.
 strSQL = strSQL = "SELECT threadID, threadDateTime, threadHeadline, threadPoster, threadText, threadPosterEmail FROM tblForum WHERE threadParent=" & rstThread(0)

'Öppna ett nytt recordset
 Set rstSubThreads = objConn.Execute(strSQL)

mot

 'Skapa en ny sql-sträng för att få ut alla svar till tråden.
 strSQL = "SELECT threadID, threadDateTime, threadHeadline, threadPoster, threadText, threadPosterEmail FROM tblForum WHERE threadParent=" & rstThread(0)

'Öppna ett nytt recordset
 Set rstSubThreads = objConn.Execute(strSQL)
Medlem sedan mars 20033 686 inlägg
#9

Aha ok tackar! skall pröva nu.

Medlem sedan mars 20033 686 inlägg
#10

Nu blir resultatet följande:

Rubrik  Datum  Vem?  
dasdsadd  
adadasddddad  
Inlägget gjord av: dsadasdasdas  
 
Svara på detta inlägg 
Det finns inga svar till det här inlägget. 
Microsoft VBScript runtime error '800a01f4' 
Variable is undefined: 'SetobjConn' 

/themad/db/readThread.asp, line 115
Medlem sedan dec. 20025 871 inlägg
#11

Lägg till

Dim SetobjConn

Lämnar över till Sebbe igen :p

Medlem sedan jan. 20032 285 inlägg
#12

LeonL skrev:

Lägg till

Dim SetobjConn

Lämnar över till Sebbe igen :p

Ehm... Eller så skriver man bara Set objConn som två ord. ;)

Medlem sedan dec. 20025 871 inlägg
#13

. :e :e :e

Medlem sedan mars 20033 686 inlägg
#14

Ähh det förbaskade forumet funkar ju ändå inte!

Medlem sedan dec. 20025 871 inlägg
#15

Ge aldrig upp ;)

Så som det ser ut nu så är det ju bara missar och stavfel som har orsakat felen...

Medlem sedan mars 20033 686 inlägg
#16

Jaja tack för uppmuntran :)
Men nu har jag påörjat mitt forum projekt på nytt.

Allt är bra förutom denna kod:

<%
Dim lngThreadID
Dim rstThread

if not IsNumeric(Request.QueryString("threadID")) or Request.QueryString("threadID") = "" then
strThread = Request.Querystring("threadID")
Response.Redirect("default.asp")
else

lngThreadID = Request.QueryString("threadID")
end if

Set db = Server.CreateObject("ADODB.Connection")
db.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & server.mappath("forum.mdb")
SQL = "SELECT threadID, threadDateTime, threadHeadline, threadPoster, threadText, threadPosterEmail, threadParent FROM tblForum WHERE threadID=" & lngThreadID
Set rs = db.Execute(SQL)
%>
<br>
<a href="form.asp?replyTo=<%=rs("threadID")%>">Svara på detta inlägg</a>
<br>
<br>
<html>
<%=rs("threadHeadline")%>
<br>
<%=rs("threadDateTime")%>
<br>
<%=Replace(threadText, vbCrLf, "<br>")%> 
<br>
<a href="<%=rs("threadPosterEmail")%>"><%=rs("threadPoster")%></a> 
<br>
<br>
<br>
<%
SQL = "SELECT threadID, threadDateTime, threadHeadline, threadPoster, threadText, threadPosterEmail, threadParent FROM tblForum WHERE threadParent=" & threadParent(0)
Set rs = db.Execute(SQL)

if (rs.EOF or rs.BOF) then
%>
Inga svar!
<%
 else
  do while not rs.EOF
   %>
<%=rs("threadHeadline")%>
<br>
<%=rs("threadDateTime")%>
<br>
<%=Replace(threadText, vbCrLf, "<br>")%> 
<br>
<a href="<%=rs("threadPosterEmail")%>"><%=rs("threadPoster")%></a>
<br>
<br>
<%
rs.MoveNext
loop
%>
<%
db.Close
Set db = nothing
end if
%>

Detta är alltså sidan som inläggen i varje tråd skall listas.
Men den vill inte lista svaren.
Felmeddelandet jag får är:

Microsoft VBScript runtime error '800a000d' 

Type mismatch: 'threadParent' 

/themad/db/Forum/readThread.asp, line 35

Jag har genom att ändra i koden lyckats skriva ut svaren.
Resultatet blev dock att svaren från alla trådar skrevs ut.
Någon lösning?

Medlem sedan jan. 20032 285 inlägg
#17

Det är mycket lättare att hjälpa om du på något sätt markerar den felande raden, t.ex. med [.b] [./b].

Medlem sedan mars 20033 686 inlägg
#18

Ja det är ju det jag inte vet!
Eller det står ju rad 35. Men jag kan inte hitta något felaktigt.
Kan du?

Medlem sedan nov. 2003266 inlägg
#19

Jag har testat filerna och hittat ett flertal fel i koden.
Bifogar en zip med alla filerna i kördugligt skick kopplade mot en access-databas.

Medlem sedan mars 20033 686 inlägg
#20

Oj, tack så hemskt mycket Mog...
God jul på er förresten

Mvh Magnus Fernström

262 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)