Вложенные комментарии с классическим ASP и MySQL - PullRequest
1 голос
/ 17 января 2011

Идея, к которой я стремлюсь, похожа на систему форумов / комментариев, я думаю.Будет основная тема, тогда люди смогут отвечать на эту тему и друг на друга.

Поскольку ответы в базе данных будут в совершенно ином порядке по сравнению с тем, как они будут отображаться так, как я думал лучше всего.чтобы достичь этого, нужно иметь столбец parent_id в таблице, parent_id = 0 для сообщения темы, а затем ответы иметь соответствующие идентификаторы для ответа, которому они соответствуют.

Тогда я мог бы использовать рекурсивную функцию для полученияданные в правильном порядке и отображаются следующим образом, например:

Родительская тема

ответить

ответить

ответить на ответ

ответить

от ответа к ответу

от ответа к ответу на ответ

ответить

Однако это то, где я застрял.Я довольно новичок в VBScript, так что это может быть что-то действительно простое, но я просто не вижу этого.

Кто-нибудь, кто поможет, это сводит меня с ума.

1 Ответ

4 голосов
/ 19 января 2011

Полагаю, вы просите помощи с кодом, необходимым для получения этого из базы данных?

Вот код, необходимый для отображения всех «родительских» тем:

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("&nbsp;&nbsp;&nbsp;&nbsp;")
        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

Вызов ShowOneTopic с идентификатором из строки запроса, который будет присутствовать при нажатии на ссылку «развернуть»родительская тема.

Конечно, вам придется изменить строку подключения, имена полей и форматирование, но это должно по крайней мере дать вам кое-что для работы.:)

...