Foros del Web » Programando para Internet » PHP »

crear árbol de categorías

Estas en el tema de crear árbol de categorías en el foro de PHP en Foros del Web. Hola a todos, espero se encuentren bien. Tengo una duda al crear un árbol, se perfectamente q tiene 4 subniveles y por eso hago cuatro ...
  #1 (permalink)  
Antiguo 17/10/2005, 20:09
Avatar de mft
mft
 
Fecha de Ingreso: abril-2003
Ubicación: *
Mensajes: 239
Antigüedad: 21 años
Puntos: 4
Información crear árbol de categorías

Hola a todos, espero se encuentren bien.

Tengo una duda al crear un árbol, se perfectamente q tiene 4 subniveles y por eso hago cuatro de que manera puedo hacer que los haga automáticamente si yo deseo agregar despues otro. Mi código es el siguiente.


$sql="select idcat, categoria, idp from categorias where idp='0'";
$rs=@mysql_query($sql, $conn);

while (list($idcat,$categoria, $idp)=mysql_fetch_array($rs))
{
echo "<h1>$categoria</h1>";
echo "<br>";
$sql="select idcat, categoria, idp from categorias where idp=$idcat";
$rt=@mysql_query($sql, $conn);
while (list($idcat,$categoria, $idp)=mysql_fetch_array($rt))
{
echo "$categoria";
echo "<br>";
}
echo "<br>";
}


que debo utilizar para que haga un ciclo y busque si aun existen más categorías, alguien sabe como??

Gracias!!!
__________________
Lo que haces, determina lo que eres.
Saludos!
  #2 (permalink)  
Antiguo 17/10/2005, 22:52
Avatar de Vaalegk  
Fecha de Ingreso: abril-2005
Mensajes: 154
Antigüedad: 19 años
Puntos: 2
intenta algo asi:
Código PHP:

function crearArbol($tabla,$id_field,$show_data,$link_field,$parent,$prefix){
    
$sql='select * from '.$tabla.' where '.$link_field.'='.$parant;
    
$rs=@mysql_query($sql);
    if(
$rs){
           while(
$arr=mysql_fetch_array($rs)){
                echo(
$prefix.$res[$show_data].'<br>');
                
crearArbol($tabla,$id_field,$show_data,
                               
$link_field,$arr[$id_field],$prefix.$prefix);
           }
    }    
}

/*y la usas*/
crearArbol('categorias','idcat','categoria','idp',0,'-'); 
no la he probado, pero en el job hice algo asi, a lo mejor la tienes que modificar para que funcione pero te dara la idea.
  #3 (permalink)  
Antiguo 18/10/2005, 12:30
Avatar de mft
mft
 
Fecha de Ingreso: abril-2003
Ubicación: *
Mensajes: 239
Antigüedad: 21 años
Puntos: 4
Exclamación Ya casi

muchas gracias, pues ya casi está funcionando, ahora solo imprime las "-" como en verdad son, pero aún no funciona la impresión de la categoría

Le seguiré intentando hasta que salga. muchas gracias!!
__________________
Lo que haces, determina lo que eres.
Saludos!
  #4 (permalink)  
Antiguo 18/10/2005, 13:22
Avatar de Vaalegk  
Fecha de Ingreso: abril-2005
Mensajes: 154
Antigüedad: 19 años
Puntos: 2
acabo de notar que escribi mal esta linea

echo($prefix.$res[$show_data].'<br>');

debe ser

echo($prefix.$arr[$show_data].'<br>');
  #5 (permalink)  
Antiguo 18/10/2005, 13:38
Avatar de mft
mft
 
Fecha de Ingreso: abril-2003
Ubicación: *
Mensajes: 239
Antigüedad: 21 años
Puntos: 4
perfecto!!

eso era, yo le había puesto en donde decía res, le puse rs y por eso imprimia solo las rayitas y ahora ya funcionó.

Muchas gracias!!!

__________________
Lo que haces, determina lo que eres.
Saludos!
  #6 (permalink)  
Antiguo 19/10/2005, 05:43
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por Vaalegk
intenta algo asi:
Código PHP:

function crearArbol($tabla,$id_field,$show_data,$link_field,$parent,$prefix){
    
$sql='select * from '.$tabla.' where '.$link_field.'='.$parant;
    
$rs=@mysql_query($sql);
    if(
$rs){
           while(
$arr=mysql_fetch_array($rs)){
                echo(
$prefix.$res[$show_data].'<br>');
                
crearArbol($tabla,$id_field,$show_data,
                               
$link_field,$arr[$id_field],$prefix.$prefix);
           }
    }    
}

/*y la usas*/
crearArbol('categorias','idcat','categoria','idp',0,'-'); 
no la he probado, pero en el job hice algo asi, a lo mejor la tienes que modificar para que funcione pero te dara la idea.
Te invito a crear una pequeña FAQ para el foro PHP sobre el tema (puedes publicarla tu mismo ..) explicando un poco como funciona (en principio que usa "recursividad" y que modelo de datos ha de tener la tabla de la BD a usar (con el ID del "padre" etc ..)

Un saludo,
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 16:22.