2010-02-14 2 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, название, PARENT_ID PARENT_ID = 0 означает, что категория не имеет родителя, для любого другого PARENT_ID, перейдите в этот ID, получить его название и добавить его в $path переменной

Мне нужна помощь, чтобы сделать эту работу. Также приветствуются альтернативы.

+1

Почему не итеративный подход? – Gumbo

+0

можно сделать это одним запросом ??? – TarranJones

ответ

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

0

Похоже, вам нужно либо использовать значение, возвращаемое createPath, либо пройти путь $ path by reference, & $ path. Один или другой, но не каждый из них.

Смежные вопросы