Ver Mensaje Individual
  #3 (permalink)  
Antiguo 18/12/2011, 15:34
Avatar de edilbertojara
edilbertojara
 
Fecha de Ingreso: marzo-2009
Mensajes: 22
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Como se hace Menu con tres subniveles, cargando datos desde BD??

Muchas gracias Jorge... estoy haciendo pruebas.. luego te confirmo que paso... gracias...

Cita:
Iniciado por jorgelpadronb Ver Mensaje
Saludos. Creo que eso lo puedes hacer con menos complicaciones. Puedes tener todos los elementos en una misma tabla en la BD. Solamente tendrías que incluirle un campo donde pones el Id un elemento contenedor. Por ejemplo:

Tabla Menu:

Id Nombre Contenedor
1 Elem_1 0
2 Elem_2 0
3 Elem_3 1
4 Elem_4 1
5 Elem_5 2
6 Elem_6 2
7 Elem_7 3

El campo contenedor almacena el Id del elemento de la misma tabla dentro del cual se encuentra el elemento. Por ejemplo, Elem_3 está dentro de Elem_1 (Id = 1) y Elem_7 está dentro de Elem_3 (Id = 3).

Luego con una función recursiva se puede recorrer la tabla y construir el arbol. Este método puede ser lento con listas muy largas de elementos, pero en el caso de un menú no creo que tengas demasiados elementos como para que genere una lentitud notable. Para la tabla hipotética que te pongo de ejemplo puedes probar este código:

Código PHP:
Ver original
  1. function Menu($Raiz=0,$Level=0){
  2.   $SQL = "SELECT * FROM Menu WHERE Contenedor=$Raiz";
  3.   $menu = mysql_query($SQL);
  4.   if($menu){
  5.     echo '<ul>';
  6.     while($row = mysql_fetch_array($menu)){
  7.       echo '<li>'.$row['Nombre'].'</li>';
  8.       Menu($row['Id'],$Level+1);
  9.     }
  10.     echo '</ul>';
  11.   }
  12.  }
  13.  mysql_connect('localhost','user','password');
  14.  mysql_select_db('arbol');
  15.  Menu();

De esta forma puedes editar el menú con más facilidad e incluso ponerle todos los niveles que quieras.

Yo lo probé y funciona OK. Si te sirve, tendrías que adaptarlo a tus necesidades.

Saludos.