ABA


"יחסים בין הורה לבן.. אשמח לעזרה PHP"
גירסת הדפסה        
קבוצות דיון בניית אתרים נושא #11392 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 11392
djME

   23:14   28.12.06   
אל הפורום  
  יחסים בין הורה לבן.. אשמח לעזרה PHP  
 
   טוב אז ככה..
אני מנסה ליצור פורום עץ פשוט כדיי לאמן את התיכנות שלי
ניתקלתי בבעיה אומנם לא גדולה אבל בלתי פתירה מבחינתי

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

עכשיו הצלתי לעזות משהו כזה.. רק עם שני פונקציות ראשונה להורה ושניה לבן...

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

אשמח לעזרה ואם משהו מוכן לעלות אולי קוד שאולי הוא יצר שיוכל להמחיש
לי את זה אני אשמח

תודה רבה


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  פונקציה רקורסיבית Sn00py  29.12.06 07:28 1
     כן זה בערך מה שעשיתי רק שיש לי בעיה djME 29.12.06 12:37 2
         תנסה להעביר משתנה בן הריקורסיות כפרמטר בחתימה.. MoonHunter 31.12.06 18:16 4
  רקורסיה... -DoTaN- 30.12.06 20:51 3

       
Sn00py 
חבר מתאריך 1.8.02
2954 הודעות
   07:28   29.12.06   
אל הפורום  
  1. פונקציה רקורסיבית  
בתגובה להודעה מספר 0
 
   ערכתי לאחרונה בתאריך 29.12.06 בשעה 07:32 בברכה, Sn00py
 
אתה צריך להשתמש ברקורסיה...

אתה צריך לבנות פונקציה בעיקרון שמוציאה את כל ההודעות שה parentId שלהן שווה ל-0(ואז יענו, הודעות ראשיות). אח"כ בהצגת כל הודעה צריך לקרוא לפונקציה רקורסיבית שתציג את ההודעות שה parentId שלהן הוא ה ID של ההודעה המוצגת(הראשית)... וזהו.

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

לירן.

\x6C\x65\x65\x74\x68\x61\x78\x30
\x72\x3A\x2D\x29
tresp4sser


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
djME

   12:37   29.12.06   
אל הפורום  
  2. כן זה בערך מה שעשיתי רק שיש לי בעיה  
בתגובה להודעה מספר 1
 
   אני לא מצליח להציג את הבן של הבן של בן

למשל:

הורה
--ילד
----ילד של הילד
------ילד של הילד של הילד
----ילד של הילד

הורה
--ילד
--ילד
----ילד של הילד
----ילד של הילד
-------ילד של הילד של הילד

בקיצור אני לא מצליח להציג יפה את הילדים של הילדים של הילדים

כמו שניתן לומר את זה יותר ברור כל ילד הוא גם הורה של ילד אחר במידה ויש וכן הלאה


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
MoonHunter
חבר מתאריך 1.8.02
680 הודעות
   18:16   31.12.06   
אל הפורום  
  4. תנסה להעביר משתנה בן הריקורסיות כפרמטר בחתימה..  
בתגובה להודעה מספר 2
 
   כלומר תכניס משתנה לפונקציה שתקרא לו למשל deep.
בתחילת הריקורסיה הערך שלו יהיה 0, כאשר תמצא בן כלשהו, תפעיל שוב את הפונקציה אבל הפעם תועשה (deep+1)..
לפי deep תדפיס את הרווחים או מה שזה לא יהיה..
בהצלחה


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
-DoTaN-

   20:51   30.12.06   
אל הפורום  
  3. רקורסיה...  
בתגובה להודעה מספר 0
 
   ערכתי לאחרונה בתאריך 30.12.06 בשעה 20:53 בברכה, -DoTaN-
 
הרעיון הוא כזה:
בנה פונקציה, שתבדוק אם יש תגובה לתגובה (שרשור) , אם כן, היא תציג את זה ותקרא בחזרה לפונקציה... אם לא היא פשוט תסיים...

יש לי משהו שפעם IceCold עזר לי לבנות, שמציג "תפריט ניווט", "דף ראשי > גלרייה > תמונות > דף 1 > תמונה 3" וכו'.
זה בנוי בהנחה שלכל "אבא" יש רק "בן" אחד, אבל אפשר לשנות את זה לתגובות עם לולאת while פשוטה.

אני מקווה שזה יעזור לך

(ד"א צריך לפני השימוש, חייב לקרוא לפונקציה בפעם הראשונה עם ה"אבא" הראשון.

cat_id - זה הID של ה"אבא"
cat_name - השם של הקטגוריה
cat_nav - הID של ה"בן"


function getDad($cat_id,$cat_name,$cat_nav)
{

$q = "SELECT * FROM gal_cats WHERE dad_id = ".$cat_id."";
$rs = mysql_query("SELECT * FROM gal_cats WHERE ID = ".$cat_id."");
if ($rs && mysql_num_rows($rs) == 1)
{
$rowx = mysql_fetch_array($rs);
$bar = $bar . " ><a href=\"gallery.php?cat={$cat_nav}\"><font color=black> " . $cat_name . "</a>";
getDad($rowx["dad_id"],$rowx["name"],$rowx["ID"]);
}
else
{
$rowx = mysql_fetch_array($rs);
$bar = $bar . " ><a href=\"gallery.php?cat={$cat_nav}\"><font color=black> " . $cat_name . "</a>";
}
echo $bar;
}


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net