Sto avendo alcuni problemi con questo codice:L'ho scritto a partire dalla pillola su strutture gerarchiche e ricorsività, adattandolo in modo da poter scegliere il livello di profondità del sottoalbero estratto, il simbolo di separazione e per evitare la necessità di dichiarare in anticipo la variabile $categories.Codice PHP:function ShowCats2 ($cat_id, $level, $symbol='-', $count=0) {
if ($level == 0) return NULL;
$categories = Array();
$sql_query = mysql_query('SELECT cat_id, par_id, name FROM categories WHERE par_id = '.$cat_id.' ORDER BY name');
while ($row = mysql_fetch_assoc($sql_query)) {
$categories[$row['cat_id']] = str_repeat($symbol, $count+1) . $row['name'];
if ($level-1 > 0) {$categories = array_merge(ShowCats2($row['cat_id'], $level-1, $symbol, $count+1), $categories);}
}
return $categories;
}
Solo che c'è un problema che non sto riuscendo a risolvere: sarà un problema della ricorsione che non vedo, ma gli id delle categorie sono errati (successivi, per la precisione) e il sottoalbero viene estratto in modo errato. Per esempio, ecco cosa dovrebbe uscire:Ed ecco invece cosa esce:codice:Array ( [11] => -Ciccio [1] => -PC [4] => --Elettronica [2] => --Modding [3] => --Tuning [5] => -Programmazione [6] => --PHP [7] => --Python )codice:Array ( [0] => --PHP [1] => --Python [2] => --Elettronica [3] => --Modding [4] => --Tuning [5] => -Ciccio [6] => -PC [7] => -Programmazione )

Rispondi quotando