Foros del Web » Programando para Internet » PHP »

función crear arbol, ayuda

Estas en el tema de función crear arbol, ayuda en el foro de PHP en Foros del Web. El problema es que en vez de ser una tabla única como en la versión original en este caso hay que tirar de 4 tablas ...
  #1 (permalink)  
Antiguo 04/12/2007, 07:27
 
Fecha de Ingreso: agosto-2006
Mensajes: 219
Antigüedad: 17 años, 8 meses
Puntos: 0
función crear arbol, ayuda

El problema es que en vez de ser una tabla única como en la versión original en este caso hay que tirar de 4 tablas diferentes.

Las tablas son:

Tengo 3 tablas que entran en la consulta
term_data:
tid
vid
name

term_node:
nid
tid

node:
nid
type

term_hierarchy
tid
parent


el name de term_data es el $showdata
el tid de term_data (y de term_node, y de term_hierarchy) es el $id_field.
el parent de term_hierarchy es el $link_field

el código.

Código PHP:

<?php
/*
funcion generica
Parametros:
    $tabla     = Nombre de la tabla en la DB
    $id_field  = Nombre del campo llave de la tabla
    $show_data = Campo a mostrar en el arbol
    $link_field= Campo que establece la relacion padre hijo
    $parent       = padre actual
    $prefix    = string con un campo a mostrar en cada entrada del arbol
*/

function crearArbol($id_field,$show_data,$link_field,$parent,$prefix){
    
/*Armar query*/
    
$sql="SELECT d.name, d.tid FROM term_data d, term_node dn, node nt, term_hierarchy th WHERE dn.tid = d.tid AND d.vid =3 AND nt.type = 'manualbp' AND nt.nid = dn.nid and '.$link_field.'='.$parent";

     
/*Asumiendo que se usa MySQL (se puede cambiar facilmente a otra db)*/
    
if ($parent != && $prefix == ''$prefix '--';
    
$rs=@mysql_query($sql);
    if(
$rs){
           
/*Recorrer todos las entradas */
           
while($arr=mysql_fetch_array($rs)){
        
/* Imprimir campo a mostrar*/
                
echo('<option value="' $arr[$id_field] . '">' $prefix $arr[$show_data] . '</option>' chr(13));
                
//echo($prefix.$arr[$show_data].'<br>');
        
        /* imprimir arbol the "hijos" de este elemento*/
               
crearArbol($id_field,$show_data,$link_field,$arr[$id_field],$prefix.$prefix);
           }
    }    
}
?>
<?php
            
echo chr(13);
            
crearArbol('d.tid','d.name','th.parent',0,'');

?>

gracias

Oskar
  #2 (permalink)  
Antiguo 04/12/2007, 08:38
 
Fecha de Ingreso: septiembre-2007
Mensajes: 220
Antigüedad: 16 años, 7 meses
Puntos: 1
Re: función crear arbol, ayuda

http://www.sitepoint.com/article/hie...-data-database
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 17:04.