Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    Prelevare un sottoalbero da gerarchia

    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-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
    )

  2. #2

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.