Tema: tabular
Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/09/2009, 08:25
Avatar de PacoRuiz
PacoRuiz
 
Fecha de Ingreso: abril-2009
Mensajes: 254
Antigüedad: 15 años
Puntos: 3
tabular

Estoy haciendo un código que muestre una clasificación de imágenes a partir de una base de datos. Los códigos de clasificación siguen una estructura de manera que unos tipos son hijos de otros, y como hay tipos que tienen varios padres, se muestran tantas veces como padres tengan, se muestran debajo de cada padre.

El orden sería de la siguiente manera: muestra el primer tipo que no tenga padre, y debajo de él sus hijos, mostrando a su vez debajo de cada hijo a los hijos de éste.

Todo se hace con una función que se llama a sí misma, más adelante incluyo el código, de manera que la función que muestra a los padres de primer nivel es la misma función que muestra al resto. Todos son mostrados por la misma función.

El problema está en que quisiera que los hijos se mostraran debajo del padre pero un poco más a la derecha, y a su vez los hijos de éstos otro poco más a la derecha.

No me vale con algo que diga simplemente "échate a la derecha" ya que es la misma función la que lo muestra todo. Debería ser algo que diga "escribe a partir de ahora 1cm más a la derecha" y luego "escribe a partir de ahora un cm más a la izquierda".

No sé cómo hacerlo.

Código:
<?php
function buscahijos($padre){
    global $clases;
    foreach ($clases as $actual){
        $hijo=$actual["ID"];
        if (eshijo($hijo, $padre)){
        echo "$hijo<br>";
        buscahijos($hijo);
        }
    }
}

function eshijo($hijo, $padre){
        
    if ($padre==0){
            $result=mysql_query("select count(*) from jerarquia where tipo=$hijo")or die (mysql_error());
            $existe=mysql_result($result,0);
            
            if (!$existe){
                
                return 1;
                
            }
            else{
                
                return 0;
                
            }
    }
    else{
        $result=mysql_query("select count(*) from jerarquia where tipo=$hijo AND padre = $padre")or die (mysql_error());
        $existe=mysql_result($result,0);
        
        
        
        return $existe;
    
    }
}

$link = mysql_connect("localhost","root","");
mysql_select_db(dbimagenes,$link);
$result=mysql_query("select * from tipos");
$i=0;
while($array = mysql_fetch_array($result,MYSQL_ASSOC)){
$clases[$i]["ID"] = $array["IDtipo"];
$clases[$i]["descrip"] = $array["descripcion"];
$i++;
}
$padre=0;
buscahijos($padre);
?>