webForumDet fria alternativet

Angående trådat forum

ASP

13 svar · 2 336 visningar · startad av His Divine Shadow

Medlem sedan sep. 20004 079 inlägg
Frågan#1

Startar en ny "tråd" nu eftersom den gamla for ur kontroll.
Jag tänkte ju att jag skulle använda ett fält som hette ThreadLev som säger vilken nivå meddelandet hör hemma på, detta är fortfarande den lösning jag vill använda eftersom det gör, om jag senare vill, att jag kan enkelt ändra från oändligt antal trådar till ett specifierat antal.

Jag tänkte det såhär.
en kod som tar Threadlev från posten man svarar, via en Querystring och med addition lägger till ett, alltså t.ex. 4 blir 5.
Och i koden som visar trådarna finns det en kod som använder detta nummer för att lägga in så många   taggar, och på så vis flyttar varje tråd till dess rätta "nivå".

Problemet är jag inte vet hur jag ska göra koden som räknar ut det och hur jag ska göra så att det kan ta detta nummer och skriva in så pass många taggar.

------------------
His Divine Shadow is the most despicable being ever created.(så sade en fan)

Sprit löser inga problem. Men det gör inte mjölk heller.

T-bird 1200; GeForce 256 32MB; WinNT4/XP; 512MB RAM; Dialup

Medlem sedan dec. 19998 577 inlägg
#2

detta är fortfarande den lösning jag vill använda eftersom det gör, om jag senare vill, att jag kan enkelt ändra från oändligt antal trådar till ett specifierat antal.

Men om du ändrar till ett tal som är lägre än vad vissa poster har, vad härnder då?

------------------
Mostly Harmless

Medlem sedan sep. 20004 079 inlägg
#3

Tja du, man kan göra en kod som tar alla poster som är över den gräns man specifierat och ändra dom till den nya gränsen.

------------------
His Divine Shadow is the most despicable being ever created.(så sade en fan)

Sprit löser inga problem. Men det gör inte mjölk heller.

T-bird 1200; GeForce 256 32MB; WinNT4/XP; 512MB RAM; Dialup

Medlem sedan sep. 20004 079 inlägg
#4

Angående att plussa ihop ThreadLev så har jag försökt knyppla ihop en formel här:

<%
ThreadLev = RS("ThreadLev")

If NOT ThreadLev = RS("ThreadLimit") then
Threadlevel = ((formatnumber(ThreadLev+1)))
ELSE
ThreadLevel = ThreadLev
End If

%>
<a href="reply.asp?ThreadID=<%=RS("ID")%>&Topic=<%=RS("Topic")%>&Threadlev=<%=ThreadLevel%>&subject=<%=("Subject")%>">
Reply</a>

Så om Threadlimit är lika med inget, är det effektivt ett oändligt antal trådar som är tillåtna.
Jag vet inte om denna kod funkar, har inte heller möjligthet att testa den nu.

------------------
His Divine Shadow is the most despicable being ever created.(så sade en fan)

Sprit löser inga problem. Men det gör inte mjölk heller.

T-bird 1200; GeForce 256 32MB; WinNT4/XP; 512MB RAM; Dialup

[Redigerat av His Divine Shadow den 24 jan 2002]

[Redigerat av His Divine Shadow den 24 jan 2002]

Medlem sedan dec. 19998 577 inlägg
#5

Om vi bortser ifrån att kanske lägger in ett limit sedan så gör du precis som jag visade i det andra inlägget, dvs en rekursiv funktion/sub som listar ut alla länkar...

------------------
Mostly Harmless

Medlem sedan sep. 20004 079 inlägg
#6

Tyvärr fick jag huvudvärk av att bara se på den där koden du gav mig :)

Jag vet inte alls hur dendär funkar, men jag stötte på vissa problem med min modell dessutom, så att investera i din modell kan va bäst nog.

sub getLoop( intId )
strSQL = "select messageid from table where parentId = " & intId
set rs = conObj.execute( strSQL )
while ( not rs.eof )
call getLoop( rs( "messageid" ) )
response.write "ID: " & rs( "messageid" ) & "<br>"
rs.movenext
wend
end sub

OK ParentID är meddelandet som man svarar på, IntID då?
Eller? Jag förstår inte heller hur koden ska fatta att det ska flyttas några steg åt höger osv...

Medlem sedan sep. 20004 079 inlägg
#7

Tyvärr fick jag huvudvärk av att bara se på den där koden du gav mig :)

Jag vet inte alls hur dendär funkar, men jag stötte på vissa problem med min modell dessutom, så att investera i din modell kan va bäst nog.

sub getLoop( intId )
strSQL = "select messageid from table where parentId = " & intId
set rs = conObj.execute( strSQL )
while ( not rs.eof )
call getLoop( rs( "messageid" ) )
response.write "ID: " & rs( "messageid" ) & "<br>"
rs.movenext
wend
end sub

OK ParentID är meddelandet som man svarar på, IntID då?
Eller? Jag förstår inte heller hur koden ska fatta att det ska flyttas några steg åt höger osv...

Medlem sedan dec. 19998 577 inlägg
#8

OK ParentID är meddelandet som man svarar på, IntID då?
Eller? Jag förstår inte heller hur koden ska fatta att det ska flyttas några steg åt höger osv...

Japp, ParentId är meddelandet man svara på, intId får du när du anropar sub:en med rs( "messageid" ), vilket är de meddelanden som hade parentid av föregående messageid.

För att får inläggen att flyttas innåt behöver du en räknare som ökas på i varje loop:

sub getLoop( intId )
[b]intI = intI + 5[/b]
strSQL = "select messageid from table where parentId = " & intId
set rs = conObj.execute( strSQL )
while ( not rs.eof )
call getLoop( rs( "messageid" ) )
response.write "[b]<img src='bild.gif' width='" & intI & "'>[/b]ID: " & rs( "messageid" ) & "<br>"
rs.movenext
wend
end sub

------------------
Mostly Harmless

Medlem sedan sep. 20004 079 inlägg
#9

Denhär koden är bara för svar va?
Man behöver väl en annan kod för att lista poster?

Vilket jag nu redan har förstås, använder mig av ett fält som jag kallar status, 1 betyder post, och 2 svar.
Detta kommer väl inte att skapa några konstiga problem hoppas jag?

Men jag tror jag börjar fatta dendär koden...

Det är väl bara att modifierade den lite och pasta in den där svaren ska räknas upp.

Fast IntID förvirrar mig fastän du förklarade den, är det ID fältet på föregående meddelande eller ID fältet på den första posten i tråden?

------------------
His Divine Shadow is the most despicable being ever created.(så sade en fan)

Sprit löser inga problem. Men det gör inte mjölk heller.

T-bird 1200; GeForce 256 32MB; WinNT4/XP; 512MB RAM; Dialup

Medlem sedan sep. 20004 079 inlägg
#10

Jag behöver hjälp, jag vet inte hur jag ska intergrera denna kod bit med min nuvarande, jag får detta felmeddelande också:
Error Type:
Microsoft VBScript compilation (0x800A03EA)
Syntax error
/forum/Thread.asp, line 37
sub Loop("intId")

Här är koden:

<!--#include file="../connect.asp"-->
<%
Topic1 = Request.QueryString("Topic")
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open forum
SQL = "SELECT * FROM Posts WHERE '"& Topic1 &"' LIKE Topic AND Status LIKE '1' Order by Date DESC"
set RS = conn.execute(SQL)

SQL3 = "SELECT * FROM Categories WHERE '"& Topic1 &"' LIKE ID"
set RS3 = conn.execute(SQL3)
%>
<html>
	<head>
	</head>
	<body>
		<center>
			<table width="100%" cellpadding="1" cellspacing="0" border="0">
				<tr>
					<td>
						<font face="Arial" size="4"><i>
								<%=RS3("Category")%>
							</i></font>
					</td>
					<td align="right">
						<a href="Post.asp?Topic=<%=Topic1%>&Status=1" target="Message"><img Border="0" src="Images\Newpost.jpg"></a>
					</td>
				</tr>
				<% Do until RS.EOF %>
				<tr>
					<td colspan="2">
						<font face="arial,tahoma" size="2"><img src="images/post.jpg">&nbsp; <a href="Message.asp?ID=<%=RS("ID")%>" target="Message">
								<%=RS("Subject")%>
							</a>&nbsp;-&nbsp;<%=RS("Author")%>&nbsp;<font face="arial,tahoma" size="1" color="<% if datediff("h",Datum1,now()) < 24 then %>Blue<%ELSE%>Red<%END IF%>">(<%=RS("Date")%> )</font>
							<br>
							<%
intId = RS("ID")
sub Loop("intId")
intI = intI + 5
strSQL = "select ID from Posts where parent = " & intId
set rs2 = conn.execute(strSQL)
while (not rs2.eof)
call getLoop(rs2("messageid"))
response.write "<img src='bild.gif' width='" & intI & "'>ID: " & rs2("ID") & "<br>"
rs2.movenext
wend
end sub
				%>
					</td>
				</tr>
				<%
				RS.Movenext
				loop
				Conn.Close
				%>
			</table>
		</center>
	</body>
</html>
<%
Set RS = Nothing
Set Conn = Nothing
%>
Medlem sedan dec. 200012 464 inlägg
#11

Lägg inte en sub mitt i koden så där. Samla dom först eller sist i filen.

En sub kan inte heta loop. GetLoop kanske om det skall stämma med ditt call.

Ta bort citationstecknen kring intid i sub definitionen.

------------------
essentitia preter non sans multiplicandum

Medlem sedan sep. 20004 079 inlägg
#12

Jag förstår inte, om jag inte kan lägga en sub där, hur och var ska den läggas?
???

Medlem sedan sep. 20004 079 inlägg
#13

---

[Redigerat av His Divine Shadow den 26 jan 2002]

Medlem sedan dec. 200012 464 inlägg
#14

Det går inte att ha definitionen av en sub inuti en loop till exempel.

Du kan lägga den först i källkodsfilen.

<!--#include file="../connect.asp"-->
<%
sub getLoop(intId)
    intI = intI + 5
    strSQL = "select ID from Posts where parent = " & intId
    set rs2 = conn.execute(strSQL)
    while (not rs2.eof)
          call getLoop(rs2("messageid"))
          response.write "<img src='bild.gif' width='" & intI & "'>ID: " & rs2("ID") & "<br>"
          rs2.movenext
    wend
    rs2.close
end sub

Topic1 = Request.QueryString("Topic")

Du måste också lägga in ett anrop till getloop

<%
intId = RS("ID")
call getLoop(intId)
%>

ungefär.

------------------
essentitia preter non sans multiplicandum

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