לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

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



  #1  
ישן 08-02-2007, 15:38
צלמית המשתמש של The AcE
  The AcE The AcE אינו מחובר  
 
חבר מתאריך: 09.12.01
הודעות: 2,337
שלח הודעה דרך ICQ אל The AcE
הכנסת נתונים למערך רקורסיבי

היי,
יש לי מצב כזה:
יש לי טבלה שנקראת tasks ומכילה id, pid, basket (וכמובן שדות אחרים שלא קשורים לשאלה).
יש לי אפשרות לשים לכל task שכזה ילדים, ואז להפוך אותו בעצם להורה, ובמצב כזה אני מסמן אותה כ-"סל משימות".

הבעיה שלי היא להכניס בצורה נכונה את ההורים והילידים למערך.

יש לי פונקציה שהתפקיד שלה הוא לבדוק האם לרשומה שלי יש הורים, ואם כן, להכניס את הרשומה עצמה תחת ההורה שלה בצורה כזו:
קוד PHP:
 $array[ParentID]['tasks'][TaskID]=$task 
(כאשר TaskID ו- ParentID מוחלפים במספרי ID הרלוונטים כמובן)

משום מה אני מקבל את המערך עם רשומות כפולות, כאשר לפעמים הרשומות שהן גם ילידים וגם הורים מופיעות רק כהורים.
כלומר:
קוד PHP:
 Array
(
    [
4] => Array
        (
            [
id] => 4
            
[pid] => 3
            
[uid] => 1
            
[basket] => 1
            
[tasks] => Array
                (
                    [
8] => Array
                        (
                            [
id] => 8
                            
[pid] => 4
                            
[uid] => 1
                            
[basket] => 0
                        
)

                )

        )

    [
3] => Array
        (
            [
id] => 3
            
[pid] => 0
            
[uid] => 1
            
[basket] => 1
            
[tasks] => Array
                (
                    [
4] => Array
                        (
                            [
id] => 4
                            
[pid] => 3
                            
[uid] => 1
                            
[basket] => 1
                            
[tasks] => Array
                                (
                                    [
8] => Array
                                        (
                                            [
id] => 8
                                            
[pid] => 4
                                            
[uid] => 1
                                            
[basket] => 0
                                        
)

                                )

                        )

                    [
3] => Array
                        (
                            [
id] => 3
                            
[pid] => 0
                            
[uid] => 1
                            
[basket] => 1
                                
(
                                    [
4] => Array
                                        (
                                            [
id] => 4
                                            
[pid] => 3
                                            
[uid] => 1
                                            
[basket] => 1
                                                
(
                                                    [
8] => Array
                                                        (
                                                            [
id] => 8
                                                            
[pid] => 4
                                                            
[basket] => 0
                                                        
)

                                                )

                                        )

                                )

                        )

                )

        )



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

תודה
_____________________________________
“The man of wisdom is never in two minds about right and wrong;
the man of benevolence never worries about the future;
the man of courage is never afraid.”

~ Confucius

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #3  
ישן 15-02-2007, 19:26
צלמית המשתמש של The AcE
  The AcE The AcE אינו מחובר  
 
חבר מתאריך: 09.12.01
הודעות: 2,337
שלח הודעה דרך ICQ אל The AcE
בתגובה להודעה מספר 2 שנכתבה על ידי User1 שמתחילה ב "[font=Verdana]אני לא יודע..."

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

עכשיו במידה ויש לי שבעה ילדים שונים, ולכל אחד מהם הורה אחר (שאולי נפגשים במעלה העץ).
קוד:
מתחיל עם ילד שנקרא לו C1 מערך -> C1 (גם מערך עם כל הפרטים על C1, כותרת, שם ID וכו') אני מוצא את ההורה שלו שקוראים לו P1, מכניס את הבן שלו (C1) לתוך ההורה כתת-מערך: מערך -> P1 (גם מערך עם כל הפרטים שלו) '-------> C1 (מערך כמו הקודם שנמצא בתוך המערך P1) מוצא עכשיו את ההורה של P1 שקוראים לו P2 ומכניס את P1 לתת מערך ב-P2: מערך: -> P2 (כנ"ל כמו הקודמים) '-------> P1 '-------> C1


מבין?
_____________________________________
“The man of wisdom is never in two minds about right and wrong;
the man of benevolence never worries about the future;
the man of courage is never afraid.”

~ Confucius

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #4  
ישן 15-02-2007, 23:08
  User1 User1 אינו מחובר  
 
חבר מתאריך: 15.01.07
הודעות: 93
בתגובה להודעה מספר 3 שנכתבה על ידי The AcE שמתחילה ב "תודה על התגובה, אבל זאת לא..."

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




קוד:
array[p1][tasks] [p2][tasks] [p3]...




ובצורה הזאת זה ממשיך ומקנן את עצמו.
אז זה עובר על כל הילדים ומחפש את ההורים שלהם. יכול להיות שכאן נעוצה הבעיה
נגיד שיש איזשהו ילד p3 ואבא שלו זה p2 וסבא של p3 זה p1 כמו שרואים בקוד הקודם
אז כשאתה מוסיף את p3 לאבא שלו זה נראה בצורה הבאה




קוד:
array[p2][tasks] [p3][tasks]




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

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

מקווה שזה עזר במשהו
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

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

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

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 06:09

הדף נוצר ב 0.07 שניות עם 12 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר