Ver Mensaje Individual
  #12 (permalink)  
Antiguo 09/03/2010, 11:08
Avatar de darkasecas
darkasecas
 
Fecha de Ingreso: marzo-2005
Ubicación: SantaCata, NL, Mexico
Mensajes: 1.553
Antigüedad: 19 años, 1 mes
Puntos: 77
Respuesta: jugando con bucles

Cita:
Iniciado por Narachamus Ver Mensaje
Gracias a ambos. Problemillas que he visto:

Chulosoy, probé el código y funciona, pero sólo llega a 2 niveles del árbol, yo quiero algo que lo haga sin limitaciones.

JessicaTJ, no entiendo , puedes poner un caso práctico, por básico que sea, donde aplicar esa sentencia y mostrar resultados?

Se me ocurrió una forma para sacar todos los registros como quiero, pero tiene el problema de que no sé como formatearlo para que parezca un árbol, y me da que es un poco chapucero en general:

Código PHP:
$idpadre=//el id del que quiero que salgan todos sus subempresas
                    
function buscar($idpadre){
    
$sql=mysql_query("SELECT id,empresa,id_padre FROM x_arbol WHERE id_padre=".$idpadre);
    while(
$filas=mysql_fetch_array($sql)){
        echo 
$filas["id_padre"]."-".$filas["empresa"]."<br>";
        
$idpadre=$filas["id"];
        
buscar($idpadre);
                            
    }
}
buscar($idpadre); 
Si tengo (ahora en vez de empresas, que es un poco confuso, uso de ejemplo un árbol geneálogico).

Id:1 - (Padre) Juan
Id:2 - (Madre) Pepa
Id:3 - (Hijo) Luis - Id_padre:1
Id:4 - (Nieta) Jeny - Id_padre:3
Id:5 - (Nieta) Jesy - Id_padre:3
Id:6 - (Hija) Luisa - Id_padre:1
Id:7 - (Bisnieta) Loli - Id_padre:4

Lo que sale con ese código es:

1- Luis
3- Jeny
4- Loli
3- Jeny
1- Luisa

Básicamente hace lo correcto, pero no sé como tabular los resultados por id_padre, pa que no queden tan en lista.
Y si se os ocurre una forma de hacerlo menos chapucera, os lo agradecería muchísimo, saludos.

EDITO: Si, está todo en la misma tabla, la estrctura es:

id INT(11) Autonumerico PK
empresa VARCHAR (255)
id_padre INT (11)

¿me recomendais hacerlo de otra forma?
No es para nada "chapucero", para hacer lo que requieres una funcion recursiva me parece lo mas adecuado, ahora, para formatear la salida tipo "arbol", puedes usar listas

EDIT: @Narachamus, tu estructura de una sola tabla es correcta, como mencionas, asi puedes manejar un numero arbitrariamente grande de "niveles"