Sto avendo alcuni problemi con questo codice:
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;
}
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.
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:
codice:
Array
(
[11] => -Ciccio
[1] => -PC
[4] => --Elettronica
[2] => --Modding
[3] => --Tuning
[5] => -Programmazione
[6] => --PHP
[7] => --Python
)
Ed ecco invece cosa esce:
codice:
Array
(
[0] => --PHP
[1] => --Python
[2] => --Elettronica
[3] => --Modding
[4] => --Tuning
[5] => -Ciccio
[6] => -PC
[7] => -Programmazione
)