Foros del Web » Programando para Internet » PHP »

Ayuda con este Algoritmo (listar categorias en Arbol) por favor

Estas en el tema de Ayuda con este Algoritmo (listar categorias en Arbol) por favor en el foro de PHP en Foros del Web. Muy buenas, me estoy volviendo loco.... primero, os pongo en situacion... Tabla categorias (id, iduser, idpadre, nombre) Bien, lo que quiero hacer, es un menu, ...
  #1 (permalink)  
Antiguo 18/02/2010, 20:43
 
Fecha de Ingreso: febrero-2009
Mensajes: 580
Antigüedad: 15 años, 2 meses
Puntos: 13
Ayuda con este Algoritmo (listar categorias en Arbol) por favor

Muy buenas, me estoy volviendo loco....

primero, os pongo en situacion...

Tabla categorias (id, iduser, idpadre, nombre)

Bien, lo que quiero hacer, es un menu, en el que hay un item que es categorias; que cuando el usuario se ponga encima se desplieguen las categorias,

Que cuando El usuario se ponga encima de una de las desplegadas, se desplieguen sus subcategorias...

El algoritmo que tengo hasta ahora es

Código PHP:
<ul>
            

                     <?


                    
// CATEGORIAS

                    

                    
$sqlQueryCat1 mysql_query("SELECT * FROM categorias WHERE iduser='$iduser' AND idpadre='0'");
                    while(
$rowCat1 mysql_fetch_array($sqlQueryCat1)){
                        
$nombreCat $rowCat1['nombre'];
                        
$idCat $rowCat1['id'];
                        
$idPadre $rowCat1['idpadre'];
                        
$listarCat '<li><a href="listarenlaces.php?id='.$idCat.'">'.$nombreCat.'</a></li>';
                        
$nuevoCat '<li><a href="newCat.php?id='.$idCat.'">New</a></li>';
                        echo 
$listarCat;
                            
                            
$sqlQueryCat2 mysql_query("SELECT * FROM categorias WHERE iduser='$iduser' AND idpadre='$idCat'");
                            while(
$rowCat2 mysql_fetch_array($sqlQueryCat2)){
                                
$nombreCat1 $rowCat2['nombre'];
                                
$idCat1 $rowCat2['id'];
                                
//$idPadre1 = $rowCat2['idpadre'];
                                
$listarCat1 '<li><a href="listarenlaces.php?id='.$idCat1.'">'.$nombreCat1.'</a>';
                                
$nuevoCat1 '<li><a href="newCat.php?id='.$idCat1.'">New</a></li>';
                                echo 
$listarCat1;
                                
$sqlQueryCat3 mysql_query("SELECT * FROM categorias WHERE iduser='$iduser' AND idpadre='$idCat1'");
                                
$alguno false;
                                echo 
'<ul>';
                                while(
$rowCat3 mysql_fetch_array($sqlQueryCat2)){
                                    
                                    
$nombreCat $rowCat3['nombre'];
                                    
$idCat $rowCat3['id'];
                                    
//$idPadre = $rowCat3['idpadre'];
                                    
$listarCat '<li><a href="listarenlaces.php?id='.$idCat.'">'.$nombreCat.'</a></li>';
            
                                    echo 
$listarCat;

                                
        
                                }
                                
                                echo 
$nuevoCat1;
                                
                                
                                
                                echo 
'</ul>';
                                echo 
'</li>';
                                
                            }
    


                    }
                    echo 
$nuevoCat;
                        
                    
                        
    
?>
            
            

        </ul>
Lo podeis ver en

http://keepyourlinks.com/menup.php

El problema esque este menu, tiene dos estados; cuando estas logueado en keepyourlinks.com y cuando no... pues tiene el estado predefinido, pero bueno, es para que os hagais una idea

Pero bueno, ya me imagino que nadie se querra registrar para esto.. pero el problema es que los items About y Contac no me aparecen.... yo intuyo que sobra algun </ul>

fijaos en el codigo


if($alguno). creeis que estoy estudiando bien si hay que cerrar la sublista inizializada en el while? y bueno.. digamos que el orden de las subcategorias no es el correcto....

Anyadir que el <ul> de apertura y clausura del algoritmo no aparecen en el codigo, pero estan.


Se que es un quebradero... pero yo ya estoy bloqueado y hasta manyana no me queda otra opcion que preguntar.... o empezar de nuevo, que me gustaria descartarlo xD

un saludo, y gracias
__________________
¿ya conoces la red social de cocina? descubre y comparte recetas de cocina
TONIWEB, un programador web freelance
  #2 (permalink)  
Antiguo 18/02/2010, 20:48
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 14 años, 5 meses
Puntos: 65
Respuesta: Ayuda con este Algoritmo (listar categorias en Arbol) por favor

Pero el problema cual es? No se te despliega el menu o no podes rellenarlo de informacion?
No quedo muy claro me parece...
__________________
HV Studio
Diseño y desarrollo web
  #3 (permalink)  
Antiguo 18/02/2010, 21:05
 
Fecha de Ingreso: febrero-2009
Mensajes: 580
Antigüedad: 15 años, 2 meses
Puntos: 13
Respuesta: Ayuda con este Algoritmo (listar categorias en Arbol) por favor

Si, si, la funcion desplegar despliega. Es el recorrido, que no es el correcto.. y no veo por que.. en teoria, tiene logica...

De cada categoria, miramos sus hijos, si hay; crear sublista y listar hijos..

Nose

Ahora lo tengo asi

Código PHP:
 <?


                    
// CATEGORIAS

                    

                    
$sqlQueryCat1 mysql_query("SELECT * FROM categorias WHERE iduser='$iduser' AND idpadre='0'");
                    while(
$rowCat1 mysql_fetch_array($sqlQueryCat1)){
                        
$nombreCat $rowCat1['nombre'];
                        
$idCat $rowCat1['id'];
                        
$idPadre $rowCat1['idpadre'];
                        
$listarEnlace '<li><a href="listarenlaces.php?id='.$idCat.'">'.$nombreCat.'</a></li>';
                        
$nuevoEnlace '<li><a href="newCat.php?id='.$idCat.'">New</a></li>';
                        echo 
$listarEnlace;
                            
                            
$sqlQueryCat2 mysql_query("SELECT * FROM categorias WHERE iduser='$iduser' AND idpadre='$idCat'");
                            while(
$rowCat2 mysql_fetch_array($sqlQueryCat2)){
                                
$nombreCat1 $rowCat2['nombre'];
                                
$idCat1 $rowCat2['id'];
                                
//$idPadre1 = $rowCat2['idpadre'];
                                
$listarEnlace1 '<li><a href="listarenlaces.php?id='.$idCat1.'">'.$nombreCat1.'</a></li>';
        
                                echo 
$listarEnlace1;
                                
$sqlQueryCat3 mysql_query("SELECT * FROM categorias WHERE iduser='$iduser' AND idpadre='$idCat1'");
                                
                                while(
$rowCat3 mysql_fetch_array($sqlQueryCat2)){
                        
                                    
$nombreCat $rowCat3['nombre'];
                                    
$idCat $rowCat3['id'];
                                    
//$idPadre = $rowCat3['idpadre'];
                                    
$listarEnlace '<li><a href="listarenlaces.php?id='.$idCat.'">'.$nombreCat.'</a></li>';
            
                                    echo 
$listarEnlace;
                                                            

                                
        
                                }
                                
$nuevoEnlace1 '<li><a href="newCat.php?id='.$idCat1.'">New</a></li>';
                                echo 
$nuevoEnlace1;
                                
        
                            }
    


                    }
                    echo 
$nuevoEnlace;
                        
                    
                        
    
?>
Y despliega todas las categorias del segundo nivel... pero del tercer nivel; no....

(notese que en el primer nivel, no hago sublista, porque idpadre=0 solo me sirve para encontrar la categoria raiz del usuario)

por tanto en lugar de hacer

all / cat1
all / cat1 / Sbcat1.1
all / Cat2
..

pues quiero

All
Cat1 / Sbcat 1.1
Cat2
...

La verdad me cuesta un poco explicarme....

AH, ya lo se!!! se me olvidaba; se puede loguear con el usuario demo aqui http://keepyourlinks.com/login.php?demo=true

si luego volveis al link del menu que he puesto en el primer post, vereis el cambio (y podeis contrastar con las categorias que os muestra mi pagina original...)

Bueno, si alguien me ilumina; podre cambiar el menu pronto, que tengo ganas.. xD sino.. tarde, jeje

un saludo y gracias
__________________
¿ya conoces la red social de cocina? descubre y comparte recetas de cocina
TONIWEB, un programador web freelance

Última edición por Bam_Margera; 18/02/2010 a las 21:23

Etiquetas: categorias, algoritmos, arboles
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:52.