בניית פורום רקורסיבי – חלק א'

‏ • 3 באפריל, 2004

פורום רקורסיבי הוא אחד מהפורומים הקלים לבניה. במאמר זה נסביר כיצד מתבצעת תצוגת הפורום הרקורסיבי. המאמר מדגים תצוגת פורום בסיסי ביותר. את שאר הפיצ'רים, כגון חלוקה לעמודים, טפסי הוספת ההודעה וכו', אנו בטוחים שתוכל לבנות בעצמך (:
קודם כל נבנה את הטבלה במסד :














IDמספור אוטומטימפתח ראשי
parentIdמספרID של הודעת האב, הודעה ראשית תהיה 0
Subjectטקסטנושא ההודעה

נתחיל בשליפת כל הרשומות:










1
2
3
4  








<%
sql="SELECT id, parentId, title FROM Messages ORDER BY Id "
rs.Open sql,Conn
%>


לאחר מכן נכניס הכול לתוך מערך getrows










1
2
3
4  








<%
dim recArray
recArray = rs.getRows()
%>


עכשיו נבצע לולאה ובתוכה נבדוק האם ה-parentID שווה לאפס (כלומר – זו הודעה ראשית) אז נקרא לפונקציה רקורסיבית אליה נשלח את האינדקס (אינדקס = מס' שורה) ואם ה-parentId לא שווה ל-0 (זו תגובה) אז לא קורה כלום והלולאה ממשיכה הלאה (כי התגובות מוצגות בתוך הפונק' הרקורסיבית).










1
2
3
4
5
6
7
8
9  








<%
dim i
for i=0 to uBound(recArray,2)
    if recArray(1,i)=0 then ' זו הודעה ראשית
        call showMessage(i)
        Response.Write("<hr>")
    end if
next
%>


לאחר מכן נבנה את הפונקציה הרקורסיבית שמדפיסה את ההודעה.
הזחת ההודעות נעשית ע"י padding:










1
2
3
4
5
6
7
8
9
10
11
12
13
14  








<%
function showMessage(index)
    dim subject
    subject = recArray(2,index)
    Response.Write("<div style=""padding-right: 20px"">")
    Response.Write(subject)
    for a=0 to uBound(recArray,2)
        if recArray(1,a) = recArray(0,index) Then
            call showMessage(a) 'הצגת התגובות
        end if
    next
    Response.Write("</div>")
end function
%>


וזהו עכשיו יש לנו פורום רקורסיבי בסיסי…

הקוד במלואו












1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31  








<%
sql="SELECT id, parentId, title FROM Messages ORDER BY Id "
rs.Open sql,Conn
dim recArray
If Not rs.EOF Then
    recArray = rs.getRows()
    dim i
    for i=0 to uBound(recArray,2)
        if recArray(1,i)=0 then ' זו הודעה ראשית
            call showMessage(i)
            Response.Write("<hr>")
        end if
    next

Else
    Response.Write("אין הודעות")
End If

function showMessage(index)
    dim subject
    subject = recArray(2,index)
    Response.Write("<div style=""padding-right: 20px"">")
    Response.Write(subject)
    for a=0 to uBound(recArray,2)
        if recArray(1,a) = recArray(0,index) Then
            call showMessage(a) 'הצגת התגובות
        end if
    next
    Response.Write("</div>")
end function
%>


תגיות: , , ,

ניר טייב

בונה אתרים ומתכנת בשפות:HTML, CSS, JavaScript, PHP 5, JSP&Servlets ורובי.

תגובות בפייסבוק