Ver Mensaje Individual
  #14 (permalink)  
Antiguo 15/06/2012, 13:37
Avatar de cuasatar
cuasatar
 
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 13 años, 4 meses
Puntos: 181
Respuesta: crear menu dinamico con php y mysql

Bueno, hola a todos. En verdad agradezco mucho su ayuda. masterpuppet desafortunadamente no alcance a ver tu post antes de crear mi solución pero viendola me parece que es la más apropiada. Alguna vez maneje en mis años mozos eso de los árboles en estructura de datos en c++ pero tantos años fuera de la academía me han hecho perder un poco el ritmo.

Con respecto a la solución que me dio oscartt67, la recursión me presento algunos inconvenientes pero me base en la idea para crear mi propia solución. Con esta logre mi solución para tres niveles de profundidad. Ya se algunos me daran un cocotazo en la cabeza al ver tres anidamientos pero estoy seguro que con un poco más de trabajo y basandome en el enlace de masterpuppet podre crear una solución para n niveles. Prometo que si la encuentro la publicare.

Igual agradezco a ocp001a por su aporte inicial, me ayudo mucho a destrabarme porque no tenía ni idea de como empezar a atacar el problema.

Bueno, sin mas preambulos doy la solución que diseñe para tres niveles de profundidad. Creo que esta muy bien explicada en los comentarios asi que omito dar detalles adicionales. Igual si alguien quiere información adicional con gusto se la doy.

p.s. Para mis amigos españoles cocotazo es una hostia dada en la cabeza con los nudillos de la mano cerrada. Vamos un coscorrón de toda la vida.

Código PHP:
require_once "scripts/connect_to_mysql.php";
function 
Menu ($pid=0,$myConnectionUser){
    
//$myConnectionUser=$myConnectionUser;
    
$sqlCommand="SELECT * FROM pages WHERE parentid=$pid";
    
$query mysql_query($sqlCommand,$myConnectionUser) or die (mysql_error()); //busca los enlaces de primer nivel
    
if (empty($query)){return "";}
    
//echo count($query)."<br/>";
    
while ($row mysql_fetch_array($query)) {
        
$sqlsub="SELECT * FROM pages WHERE parentid={$row['id']}";
        
$querysub mysql_query($sqlsub,$myConnectionUser) or die (mysql_error());
        if (
mysql_num_rows($querysub)==0){//si no tiene hijos imprime la lista
         
$menu.="<li><a href=\"{$row['id']}\">{$row['linklabel']}</a></li>";
        }
//if (mysql_num_rows($querysub)==0){
        
else{//si tiene hijos empieza a buscarlos 
            //$menu.="<li><a href=\"{$row['id']}\">{$row['linklabel']}</a><ul>";
            
$menu.="<li><a href=\"#\">{$row['linklabel']}</a><ul>";
                while (
$rowsub mysql_fetch_array($querysub)) {
                    
$sqlsub2="SELECT * FROM pages WHERE parentid={$rowsub['id']}";//busqueda de los hijos de los hijos
                    
$querysub2 mysql_query($sqlsub2,$myConnectionUser) or die (mysql_error());
                    if (
mysql_num_rows($querysub2)==0){//si no tiene hijos imprime la lista
                         
$menu.="<li><a href=\"{$rowsub['id']}\">{$rowsub['linklabel']}</a></li>";
                    }
//if (mysql_num_rows($querysub2)==0){
                        
else{//si tiene hijos empieza a buscarlos 
                            
$menu.="<li><a href=\"#\">{$rowsub['linklabel']}</a><ul>";
                            while (
$rowsub2 mysql_fetch_array($querysub2)) {
                                
$menu.="<li><a href=\"{$rowsub2['id']}\">{$rowsub2['linklabel']}</a></li>";
                                }
//while ($rowsub2 = mysql_fetch_array($querysub2)) {
                            
$menu.="</ul></li>";
                            }
//else tercer nivel
                    
                    
}//while ($rowsub = mysql_fetch_array($querysub)) {
                
$menu.="</ul></li>";
            }
//else{ para dibujar segundo nivel
}//    while ($row = mysql_fetch_array($query)) {
return $menu;
}
//function Menu ($pid=0,$myConnectionUser){
$menu=Menu(0,$myConnectionUser);
$menu="<div id='header'><ul class='nav'>$menu</ul></div>";//añade el div y el ul externo y con eso se completa la lista del menu 
__________________
Blog de humor http://elcuasatar.net63.net/

Última edición por cuasatar; 15/06/2012 a las 13:45