הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   רקורסיה ב PHP. (https://hosts.co.il/forums/showthread.php?t=43994)

Hanan 20-04-07 18:23

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

    function BuildTree($type) {
        global 
$config,$AppIteam;
        
$chkTree=mysql_query("SELECT * FROM ".$config->tblcode."_".$AppIteam." WHERE type='0' AND cat='".$type."'");
        while (
$Tree=mysql_fetch_array($chkTree)) {
            
$content .= $Tree[TitleHEB]."<br>";
            
BuildTree($Tree[id]);
            }
            return 
$content;
        } 

ומשומה זה מציג לי רק את הראשיים אבל אם במקום $cotnent .= אני שם echo זה מציג את זה מעולה. יש למישהו מושג?

DorWD 20-04-07 18:27

PHP קוד:

function BuildTree($type) { 
        global 
$config,$AppIteam
        
$chkTree=mysql_query("SELECT * FROM ".$config->tblcode."_".$AppIteam." WHERE type='0' AND cat='".$type."'"); 
        while (
$Tree=mysql_fetch_array($chkTree)) { 
            
$content .= $Tree[TitleHEB]."<br>"
            } 
            
BuildTree($Tree[id]); 
            return 
$content
        } 

תנסה ככה...

Hanan 20-04-07 18:29

לא, נשאר אותו דבר. יותר נכון זה נתקע. time out

Hanan 20-04-07 18:39

אוקיי עובד,
הוספתי עוד פונקציה שלוקחת את הבנים, תודה :]

חיים 20-04-07 18:42

תראה כנראה בגלל הנקודה תנסה להעיף אותה

DorWD 20-04-07 18:45

ציטוט:

נכתב במקור על ידי masterpl (פרסם 463231)
תראה כנראה בגלל הנקודה תנסה להעיף אותה

הנקודה אומרת שזה יוסיף למשתנה הזה
זתומרת אם אני אעשה
PHP קוד:

$content "1";
$content "2"

זה לא יהיה אותו דבר כמו:
PHP קוד:

$content "1";
$content .= "2"

בראשון: זה מציב 1 ואז זה מציב שתיים (תוצאה סופית: 2)
בשני: זה מציב 1 ואז זה מוסיף 2 (בעזרת הנקודה) (התוצאה הסופית: 12)

חיים 20-04-07 19:11

ציטוט:

נכתב במקור על ידי DorWD (פרסם 463234)
הנקודה אומרת שזה יוסיף למשתנה הזה
זתומרת אם אני אעשה
PHP קוד:

$content "1";
$content "2"

זה לא יהיה אותו דבר כמו:
PHP קוד:

$content "1";
$content .= "2"

בראשון: זה מציב 1 ואז זה מציב שתיים (תוצאה סופית: 2)
בשני: זה מציב 1 ואז זה מוסיף 2 (בעזרת הנקודה) (התוצאה הסופית: 12)

אני יודע את זה בגלל זה גם אמרתי את זה

DorWD 20-04-07 19:12

ציטוט:

נכתב במקור על ידי masterpl (פרסם 463254)
אני יודע את זה בגלל זה גם אמרתי את זה

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

Hanan 20-04-07 19:15

זה עובד סבבה, אבלה רווחים על הפנים:
PHP קוד:

    function SubBuildTree($type$i) {
        global 
$config,$AppIteam
        
$chkTree=mysql_query("SELECT * FROM ".$config->tblcode."_".$AppIteam." WHERE type='0' AND cat='".$type."'"); 
        while (
$Tree=mysql_fetch_array($chkTree)) { 
            
$b=$i 5;
            
$content .= "<span style=\"margin-left: ".$b."pt;\">".$Tree[TitleHEB]."</span><br>\n";
            
$content .= SubBuildTree($Tree[id], $i++);
        }
        return 
$content;
        }

    function 
BuildTree($type$i) {
        global 
$config,$AppIteam
        
$chkTree=mysql_query("SELECT * FROM ".$config->tblcode."_".$AppIteam." WHERE type='0' AND cat='".$type."'"); 
        while (
$Tree=mysql_fetch_array($chkTree)) { 
            
$content .= "<span style=\"margin-right: ".$i."px;\">".$Tree[TitleHEB]."</span><br>\n"
            
$content .= SubBuildTree($Tree[id], 1);
        }
        if (
$Tree[id]) BuildTree($Tree[id], $i);
        return 
$content;
        } 

רעיון?

Eran-s 20-04-07 19:18

תנסה עם padding


כל הזמנים הם GMT +2. הזמן כעת הוא 02:14.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ