Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/03/2007, 06:54
oskar_calvo
 
Fecha de Ingreso: agosto-2006
Mensajes: 219
Antigüedad: 17 años, 8 meses
Puntos: 0
crear un arbol de categorías con checkbox o con un select.

buenas, he probado la solución de las faq, pero no me imprime.

el script de las faq no me imprime ninguna solución,


mi tabla es de la típica

id_localización. (el id auto numérico)
id_padre (indica la relación entre los elementos de la tabla)
localización (el nombre del término).


también he utilizado la recursividad que ofrecía otro aforado, pero no se como ponerle profundidad a la lista que despliega, o indicarle el value al checkbox.

Un saludo y gracias

oskar

pd: el código de la función arbol es:

Código PHP:
<?php

/*
funcion generica
Parametros:
    $tabla     = Nombre de la tabla en la DB  --> localizacion
    $id_field  = Nombre del campo llave de la tabla --> id_localizacion
    $show_data = Campo a mostrar en el arbol --> hijo
    $link_field= Campo que establece la relacion padre hijo -->id_padre
    $parent       = padre actual --> 
    $prefix    = string con un campo a mostrar en cada entrada del arbol
*/
function crearArbol($tabla,$id_field,$show_data,$link_field,$parent,$prefix){
    
/*Armar query*/
    
$sql="select * from '.$tabla.' where '.$link_field.'='.$parent";

    
/*Asumiendo que se usa MySQL (se puede cambiar facilmente a otra db)*/

    
$rs=@mysql_query($sql);
    if(
$rs){
           
/*Recorrer todos las entradas */
           
while($arr=mysql_fetch_array($rs)){
        
/* Imprimir campo a mostrar*/
                
echo($prefix.$arr[$show_data].'<br>');
        
        
/* imprimir arbol the "hijos" de este elemento*/
                
crearArbol($tabla,$id_field,$show_data,
                               
$link_field,$arr[$id_field],$prefix.$prefix);
           }
    }    

/*
ahora, asumiendo que se tiene una tabla con una estructura
como la mencionada anteriormente se utilizaria asi:
*/
?>

<?
crearArbol
('localizacion','id_localizacion','hijo','id_padre',0,'-'); 

/*
  lo cual tendra un output algo asi (dependiendo de los datos):

 -categoria1
 --categoria2
 -categoria3
 --categoria4
 ----categoria5 

*/  

?>