שלח תשובה

זירת השאלות

564
צפיות
4
תשובות

בעיית רקורסיה…

,‏ 11 בפברואר, 2004

עשיתי רקורסיה בצד השרת והכל עובד פיקס עכשיו התחלתי להעביר לצד הלקוח
את המערך הועבר אבל שאני עושה את הרקורסיה היא לא עובדת כמו שצריך כך הרקורסיה נראית בצד השרת אצלי

for a=0 to uBound(recArray,2)
if recArray(1,a) = id then
call showAllMessage(recArray(0,a),recArray(2,a),recArray(3,a),recArray(4,a),level+2)
end if
next

כש-ID מתקבל כפרמטר

וכך עשיתי בלקוח

for (a=0;a<=JSrecArray[1].length;a++){
if ( JSrecArray[1][a]==JSrecArray[0][this.id] ){
showAllMessage(a,parseInt(parseInt(this.level)+1))
}
}

כש-this.id זה ה-ID של ההודעה הראשית(האב) ו-JSrecArray[1] זה תת מערך שמכיל את כל ה-parentIDים של כל ההודעות / תגובות

בעצם זה מגיע עד תגובה ראשונה ולבנים שלה ולנכדים הראשונים ולנינים הראשונים והלאה זה אף פעם לא מגיע לתגובה השנייה ולנכדים ולניינים שלה
מישהו יודע איך לפתור את זה ???

וזה בעצם הפונקציה המלאה

function showAllMessage(id,level){ // id of the message, level of spacing,message, date of the message & subject
var subject,message,Ndate,a
subject = JSrecArray[2][id]
message = JSrecArray[3][id]
Ndate = JSrecArray[4][id]
this.id = id
this.level = parseInt(level)
document.write("<div style='padding-right:" + level*5 + ";'>") // create div & the padding-right of the div
document.write("<span class='subject' onClick=displayOrNot('message("+this.id+":"+this.level+")')>" + subject + "</

span><br>") // writing the subject

// write the hide message
document.write("<span class='message' style='display: none;' id='message("+id+":"+level+")'>" + message + "

<br><br> ")
document.write("<span onClick=MM_openBrWindow('addMessage.asp?id="+id+"','הוסף תגובה',") class='option'

style='font-size:16px'> הוסף תגובה </span>")
document.write(" /  <span onClick=" class='option'>הדפס הודעה</span>")
document.write(" /  <span onClick=" class='option'>פתח בחלון חדש</span>")
document.write("<br></span>")

// looping to sub Messages of this message
for (a=0;a<=JSrecArray[1].length;a++){
if ( JSrecArray[1][a]==JSrecArray[0][this.id] ){
showAllMessage(a,parseInt(parseInt(this.level)+1))
}
}
document.write("</div>")
}

וכך אני מתחיל עם הרקורסיה
for (i=0;i<JSrecArray[1].length;i++){
if (JSrecArray[1][i]=="0"){
document.write("<div style='backGround-Color: B0BDD7;border:1px solid #8DA5D5;padding:5px;'>") ;
showAllMessage(i,0)
document.write("</div><br>");
}
}


תודה לכל העוזרים ניר

תגיות:

4 תשובות

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

    טוב הסתדרתי
    בלולאה הייתי צריך לעשות כך :::

    for (a=0;a<=JSrecArray[1].length;a++){
    if (JSrecArray[1][a]==JSrecArray[0][id]){
    showAllMessage(a,level+1)
    }
    }

    תודה בכל מקרה

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

    עכשיו לחלק שלדעתי דיי מסובך…
    טוב יש לי פורום רקורסיבי (לפחות העמוד הראשי) עכשיו אני רוצה להכניס בו חלוקה לדפים אבל כיוון שכל תגובה מקבלת ID באותה טבלה של ההודעות אז אני לא יכול לעשות ב-getRows מס' שורות כי אם אני אעשה את זה אז אני אקבל הודעות שרק חלק מהשרשור שלהן נמצא ואת החלק האחר של השרושר לא יהיה קיים בתוך הפורום אלא רק במסד אז מה אני יכול לעשות כדי שבפורום יהיה חלוקה לדפים

    כל נראית הטבלה שלי ב-DB

    | ID | מס' אוטומטי
    | parentID | מס'
    |subject| תזכיר MEMO
    |message| תזכיר MEMO
    |date| תאריך / שעה DATE/TIME

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

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

    טוב התקדמתי קצת מישהו יכול לעזור לי
    עכשיו יש לי את השאילתא הבאה (אני בניתי בעזרת ערקי מנומש מתפוז) :

    SELECT forum.id, forum.parentID, forum.subject, forum.message, forum.date
    FROM forum
    WHERE forum.rootID in (SELECT TOP 15 fixedForum.rootID FROM fixedForum ORDER BY fixedForum.rootID DESC)
    GROUP BY forum.id, forum.parentID, forum.subject, forum.message, forum.date, forum.rootID
    ORDER BY forum.rootID DESC , forum.parentID;

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

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

    והמשך…
    עכשיו על השאילתא שנתתי יש בה את התת שאילתא שלוקחת מה-view
    fixedForum את ה-15 rootIDים הראשונים וכך נראית השאילתא של ה-view
    fixedForum :::

    SELECT forum.rootID, MAX(forum.rootID) AS MAXrootID
    FROM forum
    GROUP BY forum.rootID
    ORDER BY forum.rootID DESC;

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

שלח תשובה