2010-02-14 118 views
2
function createPath($id, $category_tbl, $path) { 

    $s = "SELECT * FROM ".$category_tbl." WHERE ID = $id"; 
    $r = mysql_query($s); 
    $row = mysql_fetch_array($r); 

    if($row['PARENT_ID'] == 0) { 
     $path .=$row['TITLE'].'-'; 
    } 
    else { 
     $path .='-'.$row['TITLE']; 
     createPath($row['PARENT_ID'],$category_tbl, $path); 

    } 
    return $path; 
} 

它是一個必須生成麪包屑的遞歸函數。我無法讓它正常工作,它只返回最後一個TITLE。生成麪包屑的遞歸函數

SQL表是一樣的東西ID,TITLE,PARENT_ID 一個PARENT_ID = 0表示該類沒有父母, 任何其他PARENT_ID,去那個ID,得到它的標題,並把它添加到$path變量

我需要幫助才能完成這項工作。替代品也受到歡迎。

+1

爲什麼不迭代的方法? – Gumbo 2010-02-14 08:39:50

+0

可能用單個查詢做到這一點? – TarranJones 2015-12-15 07:55:41

回答

4

嘗試這樣:

function createPath($id, $category_tbl) { 

    $s = "SELECT * FROM ".$category_tbl." WHERE ID = $id"; 
    $r = mysql_query($s); 
    $row = mysql_fetch_array($r); 

    if($row['PARENT_ID'] == 0) { 
     return $row['TITLE']; 
    } else { 
     return createPath($row['PARENT_ID'],$category_tbl).'-'.$row['TITLE']; 
    } 
} 
+0

謝謝你,作品像一個魅力 – user253530 2010-02-14 06:24:33

0

看起來你要麼需要使用createPath返回的值,要麼有$ path被引用傳遞,& $ path。一個或另一個,但不是每個的一部分。