Indice jerárquico

Hola leonetcom
Voy a intentar explicarte cual es mi problema:
Yo tengo una tabla con una serie de campos. Entre ellos están 'GENERO', 'ESPECIE', 'INFRA'
Es decir el nombre de una planta por ejemplo:
Rosa canina subsp. Vulgare
Rosa = Género
canina = especie
vulgare = infraespecifico
En la tabla tengo todas las especies de rosas y en el campo "GENERO" pone Rosa.
Todos los infraespecificos en el campo "INFRA", y en el campo "GENERO" pone Rosa y en el campo "ESPECIE" la especie de Rosa a la que pertenezca
De tal manera que en la tabla figura:
Genero especie infra
Rosa lútea
Rosa canina
Rosa canina subsp. Vulgare
Rosa canina subsp. Alba
Rosa mollis
Con todo esto (cerca de 30.000 registros) pretendo hacer un índice que salga de la siguiente manera:
Rosa
   Canina
      subsp. Alba
      subsp. Vulgare
   Lútea
   mollis
Otro género
   Especie de ese genero
Etc...
Es decir el Género que salga una vez y no se vuelva a repetir. Bajo el género y con una sangría la especie una vez, y bajo la especie el infraespecifico (Creo que se llama indice jerárquico o de árbol)
Cuando no haya más Rosas seguiríamos con otro Género.
Creo que está claro lo que quiero, un indice en forma jerárquica, otra cosa es que sepa decírselo a PHP. Y es por todo esto por lo que recurro a ti.
Muchas gracias.

1 Respuesta

Respuesta
1
Lo puedes hacer de varias formas, quizás la mejor sea con una sola consulta a la base de datos, pero eso ya es un poco complicado. Este es un ejemplo de como hacerlo con varias consultas:
<?php
$genero_r = mysql_query("SELECT distinct GENERO FROM tabla");
while ($genero = mysql_fetch_assoc($genero_r))
{
    echo $genero['GENERO'];
    $especie_r = db_query("SELECT distinct ESPECIE FROM tabla WHERE GENERO = '".$genero['GENERO']."'");
    while ($especie = mysql_fetch_assoc($especie_r))
    {
        echo '   '.$especie['ESPECIE'];
        $infra_r = db_query("SELECT distinct INFRA FROM tabla WHERE ESPECIE = '".$especie['ESPECIE']."'");
        while ($infra = mysql_fetch_assoc($infra_r))
        {
            echo '      '.$infra['INFRA'];
        }
    }
}
?>
Como puedes ver, en las consultas a la base de datos tiene distinct, esto es para evitar contenidos duplicados, sin eso, los resultados serían duplicados, ejemplo:
Rosa
   Canina
      Subsp. Alba
      Subsp. Vulgare
   Canina
      Subsp. Alba
      Subsp. Vulgare
   Lútea
   Mollis
Rosa
   Canina
      Subsp. Alba
      Subsp. Vulgare
   Canina
      Subsp. Alba
      Subsp. Vulgare
   Lútea
   Mollis
Otro género
   Especie de ese genero
En fin, un lio, pero nada de eso pasará.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas