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

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

Eli-Hai 15-03-07 22:32

[PHP]קטגוריות רקורסיביות
 
יש לי את השיאלתה הבאה, שפורסמה על ידי RS234 ושידרגתי אותה לצרכים שלי -
קוד:

SELECT cat. * , pcat.id AS category
FROM categories AS cat
LEFT JOIN categories AS pcat ON ( cat.id = pcat.category_id )

איך אני מדפיס את הקטגוריות שלי ככה?
קוד:

קטגוריה 1
  - סאב קטגוריה
  - סאב קטגוריה
    - סאב קטגוריה
      - סאב קטגוריה
  - סאב קטגוריה
קטגוריה 2
  - סאב קטגוריה

עם WHILE או כל דרך אחרת?

תודה.

DorWD 15-03-07 22:44

שלום שלום.
בזמן האחרון גם אני עבדתי עם רקורסיה קצת
מה שאתה צריך שיהיה לך (במסד) זה:
id, title, parentid

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

עכשיו נחזור למה ששאלת
הנה קוד, אני מקווה שיעזור לך:
PHP קוד:

function listSubCats ($parent=0$level 0) {

        
$sql "SELECT id, name 
                FROM category
                WHERE parent = '$parent' "
;
        
$res mysql_query($sql) or die(mysql_error());
        while (list(
$id$name) = mysql_fetch_row($res)) {
        
            
$indent str_repeat('-- --'$level);
            
            echo 
"$indent <a href='index.php?id=$id'>$name</a><br />";  
            
listSubCats ($id$level+1);
        
        }


אני מאמין שתבין את הקוד...
אם תשים לב יש שמה קריאה לפוקציה מתוך עצמה!

עכשיו מה שאני עשיתי כדי לקרוא לה

PHP קוד:

$id intval(@$_GET['id']);
listSubCats($id); 

התוצאה:
http://dorwd.com/index.php?id=0

עכשיו מה שנשאר זה להתאים את זה לצרכיך

בהצלחה!!

Eli-Hai 15-03-07 22:44

תודה, אני אעיין בקוד מחר! המון תודה.

DorWD 15-03-07 22:46

אין בעד מה :)

O-B 15-03-07 23:49

ציטוט:

נכתב במקור על ידי DorWD (פרסם 439880)
אין בעד מה :)

אין איזה קרדיט?.
חח. סתם..

בהצלחה בלמידה..


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

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