וובמאסטר - תיכנות ובניית אתרים

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

ניר טייב/‏ 3 אפריל, 2004
F+
F-
פורום רקורסיבי הוא אחד מהפורומים הקלים לבניה. במאמר זה נסביר כיצד מתבצעת תצוגת הפורום הרקורסיבי. המאמר מדגים תצוגת פורום בסיסי ביותר. את שאר הפיצ'רים, כגון חלוקה לעמודים, טפסי הוספת ההודעה וכו', אנו בטוחים שתוכל לבנות בעצמך (:
קודם כל נבנה את הטבלה במסד :
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 ורובי.
תגיות: ASP‏  /  פורום‏  /  רקורסיה‏  /  SQL‏  

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

תגובות למאמר



תגיות פופולאריות

X
הצטרף לעמוד שלנו בפייסבוק להישאר מעודכן!
וובמאסטר © כל הזכויות שמורות