שלח תשובה

זירת השאלות

406
צפיות
8
תשובות

בדרך ליצירת פורום…

,‏ 26 בינואר, 2004

אני מנסה לבנות פורום שדומה לזה ונתקלתי בכמה בעיות :::
1. עשיתי רקורסיה ע"י שימוש בשני עמודות levelID ו-fatherID
והשתמשתי בקוד הבא :::

<% for i=0 to uBound(arr,2)' לולאת ההודעות %>
<tr>
<td>

<a href="javascript:void(0);" onClick="showMessage('message[<% =i %>]')"><% =arr(1,i) %></a>
    <strong>< </strong>
<% =arr(4,i) %>
   
<% =arr(3,i) %>
  <strong>></strong><br>
<div id="message[<% =i %>]" class="message">
  <% =arr(2,i) %>
</div>
<%
rs.open "select * from message where fatherID=" & arr(0,i) & " and levelID>0 order by date asc"
if not rs.eof then
resArr = rs.getRows(rs.recordCount)
for a=0 to uBound(resArr,2) ' לולאת התגובות
for res=0 to resArr(5,a) ' לולאת הרווחים
Wspace = Wspace + " "
next
response.write Wspace
%>
<a href="javascript:void(0);" onClick="showMessage('respond[<% =i %>:<% =a %>]')">
<%
response.write (resArr(1,a))
%></a><%
response.Write("    <strong>< </strong>")
response.Write(resArr(4,a) & "   " & resArr(3,a) & "  <strong>></strong><br>")
%>
<div id="respond[<% =i %>:<% =a %>]" class="message"><% =resArr(2,a) %></div>
<%
next
end if
%>
<% rs.close %>

</td>
</tr>
<% next %>

שבעצם זה קוד להודעה אחת השאלה שלי האם יש דרך אחרת( יותר מהירה )לעשות כדי למצוא כמה רווחים צריך לעשות במבנה העץ במקום הלולאה ?

2. אני רוצה לעשות שכל הודעה תיפתח מהמקום שלה (כולל התגובות)
זאת אומרת שלמשל תגובה שה-levelID שלה הוא עשרים אז ההודעה תיפתח במרחק של עשרים תווים ( ) מתחילת התא (td)
בעצם כמו בפורום כאן שההודעה נתפחת מהמיקום של תחילת המחרוזת שפותחת אותה … אז איך אני עושה דבר כזה ???

בתודה מראש ניר

תגיות:

8 תשובות

  1. זהר פלד הגיב:

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

  2. ניר טייב הגיב:

    טוב הבנתי משהו אבל…
    1. הבנתי שבשביל ההזחות אפשר להשתמש ב-CSS אבל איך עושים זאת?
    2. הבנתי שגם הסידור של ההודעות יכול להבצע ע"י שימוש בתאריך של ההודעה
    אבל איך אפשר שהרקורדסט יבחין בין ההודעה והתגובות(הבנים)
    האם זה יהיה נכון להשתמש בפתיחה הבאה של הרקורדסט בשביל ההבחנה בין האב והבן


    select * from message where fatherId=0 and id<>0 order by date

    שבעצם ה-0 זה ה-ID של ההודעה (בשניהם)

  3. ניר טייב הגיב:

    נגיד ו…
    אני מוחק את העמודה LevelID מה-DB שלי אז כך נראה ה-DB שלי עכשיו
    ID מס' ההודעה
    subject
    message ההודעה
    date
    senderName
    fatherID מס' האב של ההודעה

    עכשיו איך אני עושה הבחנה בין הודעה לתגובה כי השימוש בשאילתה שכתבתי קודם זה הבחנה בין התגובה להודעה כשמוציאים את התגובות בסקר העץ

  4. אוריקס הגיב:

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

    בהצלחה

  5. ניר טייב הגיב:

    תגובה…
    קראתי ואני רוצה להבין כשהם אומרים שגרה הם מתכוונים לפונקציה?!!!
    כי אם כן עשיתי את הפונקציה הבאה :::


    <%
    function AllMessage(fatherID)
    if fatherID=0 then Exit function end if
    rs.open "select * from forum where [ID]=" & fatherID & "order by [date] asc"
    if rs.EOF then
    exit function
    else
    do while not rs.EOF
    Response.Write (rs.fields("message"))
    call AllMessage(cint(rs.fields("fatherID")))
    loop
    end if
    rs.close
    end function
    %>

    השאלה שלי האם עשיתי כאן פונקציה נכונה ע"פ האלגוריתם שם
    כי אני לא בטוח בה???

    ואיך אני עושה ש-getRows ישתלט לי על ה-RS יענו שתמיד כל הנתונים ב-RS המסוים הזה ייכנסו לתוך המערך

  6. אוריקס הגיב:

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

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

    דבר שלישי – התחל לעבוד עם GetRows, יש כאן באתר מאמר.

    דבר אחרון – שגרה היא פונקציה או פרוצדורה.

    סלאמת גברבר

  7. ניר טייב הגיב:

    כמה דברים
    דבר ראשון אני כן עובד עם getRows פשוט מאוד לא אני לא יודע איך לשים בדיוק את כל הרשומות בתוך המערך יענו איך אני מגדיר שכל הרשומות יכנסו לתוך המערך??? אני יודע איך עושים שחלק מהרשומות הכינסו למערך…

    דבר שני קראתי את המאמר שלך ושל אלעד וניסיתי לעבוד ע"פ האלגוריתם שנתון שם וזה מה שהצלחתי להוציא ממנו יענו זה עושה בהתחלה התנייה שאסור ל-fatherID (המשתנה) להיות שווה ל-0
    עכשיו עשיתי שאילתא שמקבלת את כל הנתונים מהטבלה FORUM איפה שה-ID שווה ל-FatherID שנשלח כמשתנה בפונקצייה (שכחתי איך קוראים לזה)
    אחר כך התנייה שאם ה-RS בסוף או לא מוגדר אז שזה ייצא מהפונקצייה
    לאחר מכן עשיתי לולאה שרצה כל עוד ה-RS לא בסוף
    ובתוך הלולאה זה כותב את ההודעה ולאחר מכן קורא שוב לפונקצייה עם ה-FatherID של ההודעה הזאת

    אני מניח שכבר הבנת קודם אבל אם אתה אומר שזה לא טוב אז אתה יכול בבקשה לנסות לתקן לי את הקוד???

שלח תשובה