2010-02-14 9 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; 
} 

Il s'agit d'une fonction récursive qui doit générer des fils d'Ariane. Je n'arrive pas à le faire fonctionner correctement, il ne renvoie que le dernier TITRE.Fonction récursive pour générer des fil d'Ariane

la table sql est quelque chose comme ID, TITLE, PARENT_ID un PARENT_ID = 0 signifie que la catégorie n'a pas de parent, pour toute autre PARENT_ID, allez à cet ID, obtenir son titre et l'ajouter à la variable $path

J'ai besoin d'aide pour faire ce travail. Les alternatives sont également les bienvenues.

+1

Pourquoi pas une approche itérative? – Gumbo

+0

possible de le faire avec une seule requête ?? – TarranJones

Répondre

4

Essayez quelque chose comme ceci:

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

merci, fonctionne comme un charme – user253530

0

Il semblerait que vous deviez utiliser la valeur renvoyée par createPath ou que $ path soit transmis par référence, & $ path. L'un ou l'autre, mais pas une partie de chacun.