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

הוסטס - פורום אחסון האתרים הגדול בישראל (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

DorWD 20-04-07 19:20

למה לא text-indent?

Hanan 20-04-07 19:20

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

במקום:
מחשבים
--אופנה
----בגדי גברים
------גופיות
----בגדי נשים
------תחתונים
ספורט
--כדורגל
--כדורסל

Eran-s 20-04-07 19:32

למה בפונקציה אחת right ובשנייה left...
ודור - לא תמיד עובד text-indent

Hanan 20-04-07 19:41

שיניתי לשניהם right ושניהם ל left ועדיין לא עזר= \

Eran-s 20-04-07 19:53

ציטוט:

נכתב במקור על ידי Hanan (פרסם 463263)
שיניתי לשניהם right ושניהם ל left ועדיין לא עזר= \

ניסית text-indent?
תנסה גם לשים כמה &nbsp; בשביל לבדוק את פעולת הפונקציות...

Hanan 20-04-07 19:54

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

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

Eran-s 20-04-07 20:04

תנסה להגדיל את $i בפונקציה השנייה ולא בראשונה

Hanan 20-04-07 20:09

לא עוזר =\

Hanan 20-04-07 20:12

הסתדרתי תודה :)

Eran-s 20-04-07 20:22

מה הייתה הבעיה?

Hanan 20-04-07 22:54

לא הייתה הבעיה, במקום 2 פונקציות עשיתי 1, והוספת בפנים תנאי וזהו, זה נראה פצצה :)

תודה לכלום, אפשר לנעול :>


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

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