Rieccomi,
credo di aver risolto il mio problema o quasi
ho solo un problema di stampa errato ma non capisco dove ho sbagliato ho incollato di seguito la classe la struttura del database il risultato finale del print.. è il risultato come dovrebbe essere...
mi aiutateeeeeeeeeee
Classe php
Codice PHP:
<?php

class MenuBuilder {

    var 
$conn;
    var 
$db;
    var 
$items = array();
    var 
$html = array();

    function 
MenuBuilder() {
        global 
$db$core;
        
// var_dump($db);
        
$this->conn mysql_connect($this->db['server'], $this->db['user'], $this->db['pass']);
        
mysql_select_db($this->db['database'], $this->conn);
    }

    function 
get_menu_items() {
        global 
$db$core;
        
$sql "SELECT id, parent_id, page_id, page_slug, mod_id, name$core->dblang, slug, content_type, link, target, icon, position, home_page, active FROM menus WHERE menus.active = 1 ORDER BY parent_id, position";
        return 
$db->fetch_assoc_all($sql);
    }

    function 
get_menu_html($root_id 0) {
        global 
$db$core$content;
        
$this->html = array();
        
$this->items $this->get_menu_items();

        foreach (
$this->items as $item)
            
$children[$item['parent_id']][] = $item;

        
$loop = !empty($children[$root_id]);

       
        
$parent $root_id;
        
$parent_stack = array();
        
//
        
$this->html[] = '<ul class="menu">';

        while (
$loop && ( ( $option each($children[$parent]) ) || ( $parent $root_id ) )) {  
            if (
$option === false) {
                
$parent array_pop($parent_stack);
     
                
$this->html[] = str_repeat("\t", ( count($parent_stack) + ) * 2) . '[/list]';
                
$this->html[] = str_repeat("\t", ( count($parent_stack) + ) * 1) . '';
            } elseif (!empty(
$children[$option['value']['id']])) {

                
$tab str_repeat("\t", ( count($parent_stack) + ) * 1);

 
                
$this->html[] = sprintf(
                        
'%1$s[*][url="%2$s"]%3$s[/url]'$tab
                        
$option['value']['slug'], //
                        
$option['value']['name_en']
                );
                
$this->html[] = $tab "\t" '<ul class="submenu">';

                
array_push($parent_stack$option['value']['parent_id']);
                
$parent $option['value']['id'];
            }
            else
                
$url = ($core->seo == 1) ? $core->site_url '/' sanitize($option['value']['page_slug'], 50) . '.html' $url $core->site_url '/content.php?pagename=' sanitize($option['value']['page_slug'], 50);
            
$this->html[] = sprintf(
                    
'%1$s[*][url="%2$s"]%3$s[/url]'str_repeat("\t", ( count($parent_stack) + ) * 1), // %1$s = tabulation
                    
$url
                    
$option['value']['name_en']  
            );
        }

        
$this->html[] = '[/list]';

        return 
implode("\r\n"$this->html);
    }

}

$menu = new MenuBuilder();
echo 
'<pre>' htmlentities($menu->get_menu_html()) . '</pŕe>';
?>
struttura sql
Codice PHP:
CREATE TABLE IF NOT EXISTS `menus` (
  `
idint(11NOT NULL AUTO_INCREMENT,
  `
parent_idint(11unsigned NOT NULL DEFAULT '0',
  `
page_idint(11NOT NULL DEFAULT '0',
  `
page_slugvarchar(50NOT NULL,
  `
mod_idint(6NOT NULL DEFAULT '0',
  `
name_envarchar(100NOT NULL,
  `
slugvarchar(100NOT NULL,
  `
content_typevarchar(20NOT NULL,
  `
linkvarchar(255) DEFAULT NULL,
  `
targetenum('_self','_blank'NOT NULL DEFAULT '_blank',
  `
iconvarchar(50) DEFAULT NULL,
  `
positionint(11NOT NULL DEFAULT '0',
  `
home_pagetinyint(1NOT NULL DEFAULT '0',
  `
activetinyint(1NOT NULL DEFAULT '0',
  
PRIMARY KEY (`id`),
  
KEY `content_id` (`active`),
  
KEY `parent_id` (`parent_id`)
ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=25 ;

INSERT INTO `menus` (`id`, `parent_id`, `page_id`, `page_slug`, `mod_id`, `name_en`, `slug`, `content_type`, `link`, `target`, `icon`, `position`, `home_page`, `active`) VALUES
(201'Home'0'Home''Home''page'NULL''''111),
(
3015'Product'0'Product''Product''page'NULL''''601),
(
708'Company'0'Company''Company''page'NULL''''201),
(
23316'Team'0'Team''Team''page'NULL''''701),
(
20717'Careers'0'Careers''Careers''page'NULL''''401),
(
21715'About-us'0'About us''About-us''page'NULL''''301),
(
242018'Testimonial'0'Testimonial''Testimonial''page'NULL''''501); 
risultato della classe
Codice PHP:
<ul class="menu">
    [*][
url="#"]Home[/url]
    [*][
url="Company"]Company[/url]
        <
ul class="submenu">
            [*][
url="#"]Company[/url]
            [*][
url="#"]About us[/url]
            [*][
url="Careers"]Careers[/url]
                <
ul class="submenu">
                    [*][
url="#"]Careers[/url]
                    [*][
url="#"]Testimonial[/url]
                [/list]
            
        [/list]
    
    [*][
url="Product"]Product[/url]
        <
ul class="submenu">
            [*][
url="#"]Product[/url]
            [*][
url="#"]Team[/url]
        [/list]
    [/list] 
Risultato che dovrebbe uscire...
Codice PHP:
<ul class="menu">
    [*][
url="#"]Home[/url]
    [*][
url="Company"]Company[/url]
        <
ul class="submenu">
        [*][
url="#"]About us[/url]
            [*][
url="Careers"]Careers[/url]
                <
ul class="submenu">
                    [*][
url="#"]Testimonial[/url]
                [/list]
            
        [/list]
    
    [*][
url="Product"]Product[/url]
        <
ul class="submenu">
            [*][
url="#"]Team[/url]
        [/list]
    [/list] 
Dove sbaglio ((