Ver Mensaje Individual
  #5 (permalink)  
Antiguo 03/07/2014, 19:51
Avatar de ONahuelO
ONahuelO
 
Fecha de Ingreso: junio-2009
Ubicación: Gualeguaychú, Argentina
Mensajes: 144
Antigüedad: 14 años, 10 meses
Puntos: 4
Respuesta: Menus de ilimitados subniveles

Cita:
Iniciado por arcanisgk122 Ver Mensaje
si estas trabajando con my sql la base de datos puede ser de esta clase:

Código PHP:
Ver original
  1. nombre      nivel   relacion
  2. menu1       0       0       //esto general la cabeza del menu
  3. submenu1    1       1       //indica que pertenece al menu 1
  4. art-lista   1       2       //indica que pertenece al menu 1 pero debe ir debajo de submenu1 como hijo
  5. art-lista   1       2       //indica que pertenece al menu 1 pero debe ir debajo de submenu1 como hijo
  6. submenu2    2       1       //indica que pertenece al menu 1
  7. art-lista   2       2       //indica que pertenece al menu 1 pero debe ir debajo de submenu2 como hijo
  8. art-lista   2       2       //indica que pertenece al menu 1 pero debe ir debajo de submenu2 como hijo

la mejor forma es recorrerlo con ciclos for o while y guardarlos en un array y ir construyendo el menu.

al hacerlo con ciclos seria ilimitado al tamaño de la base de datos.


Si el tema que no me sale es el de como hacer los ciclos, osea mi logica es recorrer los resultados con un foreach y ver si es un subitem añadirlo al item principal dentro del array que creo, el tema es que tengo que hacer esa funcion indefinidas veces.

Osea

Código PHP:

    $conn 
= new PDO('mysql:host='.$db['host'].';dbname='.$db['name'], $db['user'],$db['pass']);
    
    
$query "SELECT * FROM menus";
    
    
$menu $conn->prepare($query);
    
    
$menu->execute();
    
    
$retorno $menu->fetchall(PDO::FETCH_OBJ);
    
    
$rmenu    =    array();
    
    foreach (
$retorno as $obj)
    {
        
        
        if(
$obj->menu_owner != '0')
        {
                       
//Hago una subconsulta  y lo añado al array 
        
}
        
        
    }
    
    
    
    echo 
json_encode($rmenu); 

El problema es cuando halla muchos subitems, no entiendo como hacer el ciclo indefinidamente siempre que halla subitems dentro de los anteriores subitems