我想我想实现的目标背后的想法类似于论坛/评论系统。将有一个主要主题,然后人们可以回复该主题并相互回复。
由于回复在数据库中的顺序与它们的显示方式完全不同,我认为最好的实现方式是在表中有一个 parent_id col,parent_id = 0 用于主题消息,然后回复具有与其对应的回复的相关 ID。
然后我可以使用递归函数以正确的顺序获取数据并像这样显示,例如:
父主题
回复
回复
回复回复
回复
回复回复
回复回复回复
回复
然而,这就是我被困的地方。我对 VBScript 很陌生,所以它可能非常简单,但我就是看不到。
任何帮助它的人都快把我逼疯了。
最佳答案
我想您是在寻求有关从数据库获取此信息所需代码的帮助吗?
这是显示所有“父”主题所需的代码:
Sub ShowParentTopics()
Dim strSQL, objRS, objConn
objConn.Open "connection string here"
strSQL = "Select * From Topics Where parent_id=0"
Set objRS = objConn.Execute(strSQL)
Do Until objRS.EOF
Response.Write("Title: " & objRS("Title") & "<br />")
Response.Write("<a href=""?topic=" & objRS("ID") & """>Expand</a><hr />")
objRS.MoveNext
Loop
objRS.Close
Set objRS = Nothing
objConn.Close
Set objConn = Nothing
End Sub
要显示特定主题及其所有回复,您需要递归方法,这是一个应该有效的方法:
Sub ShowOneTopic(nTopicID)
'//validation might be here.... make sure topic ID is numeric!//'
Call RecursiveShowTopic nTopicID, 0
End Sub
Sub RecursiveShowTopic(nTopicID, nLevel)
Dim strSQL, objRS, objConn
Dim x, nChildID
objConn.Open "connection string here"
strSQL = "Select * From Topics Where ID=" & nTopicID
Set objRS = objConn.Execute(strSQL)
If Not(objRS.EOF) Then
For x=1 To nLevel
Response.Write(" ")
Next
If nLevel<1 Then
Response.Write("Parent ")
Else
Response.Write("Child topic level " & nLevel & " ")
End If
Response.Write("Title: " & objRS("Title") & "<br />")
End If
objRS.Close
nChildID = 0
strSQL = "Select ID From Topics Where parent_id=" & nTopicID
Set objRS = objConn.Execute(strSQL)
If Not(objRS.EOF) Then
nChildID = CLng(objRS("ID"))
End If
objRS.Close
Set objRS = Nothing
objConn.Close
Set objConn = Nothing
If nChildID>0 Then
Call RecursiveShowTopic nChildID, nLevel + 1
End If
End Sub
使用查询字符串中的 ID 调用 ShowOneTopic
,当单击某些父主题上的“展开”链接时,该 ID 将出现。
当然,您必须更改连接字符串、字段名称和格式,但这至少应该为您提供一些有用的东西。 :)
关于mysql - 经典 ASP 和 MySQL 的嵌套注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4714797/