Foros del Web » Programando para Internet » PHP »

crear un arbol de categorías con checkbox o con un select.

Estas en el tema de crear un arbol de categorías con checkbox o con un select. en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 29/03/2007, 06:54
 
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 

*/  

?>
  #2 (permalink)  
Antiguo 29/03/2007, 07:51
Avatar de Saruman  
Fecha de Ingreso: mayo-2003
Ubicación: Panama city, Panama, Panama
Mensajes: 1.154
Antigüedad: 20 años, 11 meses
Puntos: 5
Re: crear un arbol de categorías con checkbox o con un select.

que tal.
lo que deseas hacer es crear el objeto "select" y "checkbox" en vez de el nombre????
__________________
Saruman

One Ring to rule them all, One Ring to find them, One Ring to bring them all and in the darkness bind them.
  #3 (permalink)  
Antiguo 29/03/2007, 08:13
 
Fecha de Ingreso: agosto-2006
Mensajes: 219
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: crear un arbol de categorías con checkbox o con un select.

hola, pues ando algo desesperado con esto de la recursividad.


según dice las faqs, con esta función te crearía un menú en arbol select.

pero no me imprime nada, y no se porque es.

lo que quiero es el típico menú de

padre
-hijo1
--hijo11
-hijo2
--hijo21
--hijo22
......

me estoy pegando con varios códigos, pero no consigo nada de nada.

he consultado los diferentes scripts que hay en el foro pero no consigo modificarlos para lo que necesito.

un saludo

oskar
  #4 (permalink)  
Antiguo 29/03/2007, 08:16
Avatar de Saruman  
Fecha de Ingreso: mayo-2003
Ubicación: Panama city, Panama, Panama
Mensajes: 1.154
Antigüedad: 20 años, 11 meses
Puntos: 5
Re: crear un arbol de categorías con checkbox o con un select.

jaja casualmente el que hizo ese script de arboles es amigo mio
yo lo he usado y creeme que me funciona super bien....

cual es el problema y mejor dicho, que deseas hacer... explica bien

saludos
__________________
Saruman

One Ring to rule them all, One Ring to find them, One Ring to bring them all and in the darkness bind them.
  #5 (permalink)  
Antiguo 29/03/2007, 08:32
 
Fecha de Ingreso: agosto-2006
Mensajes: 219
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: crear un arbol de categorías con checkbox o con un select.

pues el problema es que no me imprime nada.

te explico, mi tabla es:

$tabla = Nombre de la tabla en la DB -->la mia es localización
$id_field = Nombre del campo llave de la tabla --> mi campo es id_localizacion
$show_data = Campo a mostrar en el arbol --> mi campo es localizacion
$link_field= Campo que establece la relacion padre hijo --> mi campo es id_padre

$parent = padre actual creo que en este caso sería el mismo que id_padre pero no esto seguro

$prefix = string con un campo a mostrar en cada entrada del, esto se rellena con un "-"


lo que busco es un select que tenga más de 3 profundidades, aunqeu no sea necesario es por si acaso, que nunca se sabe.


el código que pongo es:

Código PHP:
<?php
require ("conectarbbdd3.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($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);
           }
    }    
}


?>
y

Código PHP:
<?php
/*
ahora, asumiendo que se tiene una tabla con una estructura
como la mencionada anteriormente se utilizaria asi:
*/

crearArbol('localizacion','id_localizacion','localizacion','id_padre',0,'-'); 

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

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

*/  
?>

me esta dando este error


Notice: Undefined index: localizacion in c:\easyphp1-8\www\daniel\menuarbol6.php on line 29

la línea 29 es:
echo($prefix.$arr[$show_data].'<br>');

graciass

oskar
  #6 (permalink)  
Antiguo 29/03/2007, 08:43
Avatar de Saruman  
Fecha de Ingreso: mayo-2003
Ubicación: Panama city, Panama, Panama
Mensajes: 1.154
Antigüedad: 20 años, 11 meses
Puntos: 5
Re: crear un arbol de categorías con checkbox o con un select.

el error es porque al parecer el campo "localizacion" no se encuentra en la tabla "localizacion"... revisa para ver
__________________
Saruman

One Ring to rule them all, One Ring to find them, One Ring to bring them all and in the darkness bind them.
  #7 (permalink)  
Antiguo 29/03/2007, 08:47
 
Fecha de Ingreso: agosto-2006
Mensajes: 219
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: crear un arbol de categorías con checkbox o con un select.

ahora me sale parte de lo que quiero.

-Madrid cam
--alpedrete
--getafe
-asturias
--castro
-Cantabria
--santander
----pueblito1


pero lo que necesito es o meterlo en un select, o ponerlo con un checkbox.

mi pregunta es, ¿como hago para darle el valor al value?

un saludo

oskar
  #8 (permalink)  
Antiguo 29/03/2007, 08:49
Avatar de Saruman  
Fecha de Ingreso: mayo-2003
Ubicación: Panama city, Panama, Panama
Mensajes: 1.154
Antigüedad: 20 años, 11 meses
Puntos: 5
Re: crear un arbol de categorías con checkbox o con un select.

a ok... dejame ayudarte, solo dame unos minutos para hacerlo...

saludos
__________________
Saruman

One Ring to rule them all, One Ring to find them, One Ring to bring them all and in the darkness bind them.
  #9 (permalink)  
Antiguo 29/03/2007, 08:51
 
Fecha de Ingreso: agosto-2006
Mensajes: 219
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: crear un arbol de categorías con checkbox o con un select.

gracias Saruman; al final tu fama de mago gris va ha ser totalmente infundada y será en verdad que nunca dejaste la luz.


un saludo

oskar
  #10 (permalink)  
Antiguo 29/03/2007, 09:00
Avatar de Saruman  
Fecha de Ingreso: mayo-2003
Ubicación: Panama city, Panama, Panama
Mensajes: 1.154
Antigüedad: 20 años, 11 meses
Puntos: 5
Re: crear un arbol de categorías con checkbox o con un select.

listo, aquí esta el ejemplo.

modifique un poco la función, asi que fijate bien....

saludos

Código PHP:
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)*/
    
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($tabla,$id_field,$show_data,$link_field,$arr[$id_field],$prefix.$prefix);
           }
    }    
}

echo(
'<select name="nombre">' chr(13));
crearArbol('localizacion','id_localizacion','localizacion','id_padre',0,'');
echo(
'</select>'); 
__________________
Saruman

One Ring to rule them all, One Ring to find them, One Ring to bring them all and in the darkness bind them.
  #11 (permalink)  
Antiguo 29/03/2007, 09:05
 
Fecha de Ingreso: agosto-2006
Mensajes: 219
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: crear un arbol de categorías con checkbox o con un select.

¿no le falta el <option> a ese código?


me devuelve este codigo de html



<select name="nombre">
<br />
<b>Notice</b>: Undefined index: localizacion in <b>c:\easyphp1-8\www\daniel\menuarbol6.php</b> on line <b>30</b><br />
<option value="1"></option>
<br />
<b>Notice</b>: Undefined index: localizacion in <b>c:\easyphp1-8\www\daniel\menuarbol6.php</b> on line <b>30</b><br />

<option value="7">--</option>
<br />
<b>Notice</b>: Undefined index: localizacion in <b>c:\easyphp1-8\www\daniel\menuarbol6.php</b> on line <b>30</b><br />
<option value="8">--</option>
<br />
<b>Notice</b>: Undefined index: localizacion in <b>c:\easyphp1-8\www\daniel\menuarbol6.php</b> on line <b>30</b><br />

<option value="2"></option>
<br />
<b>Notice</b>: Undefined index: localizacion in <b>c:\easyphp1-8\www\daniel\menuarbol6.php</b> on line <b>30</b><br />
<option value="5">--</option>
<br />
<b>Notice</b>: Undefined index: localizacion in <b>c:\easyphp1-8\www\daniel\menuarbol6.php</b> on line <b>30</b><br />

<option value="3"></option>
<br />
<b>Notice</b>: Undefined index: localizacion in <b>c:\easyphp1-8\www\daniel\menuarbol6.php</b> on line <b>30</b><br />
<option value="4">--</option>
<br />
<b>Notice</b>: Undefined index: localizacion in <b>c:\easyphp1-8\www\daniel\menuarbol6.php</b> on line <b>30</b><br />

<option value="6">----</option>
</select>






la linea 30 es esta:

echo('<option value="' . $arr[$id_field] . '">' . $prefix . $arr[$show_data] . '</option>' . chr(13));

un saludo

oskar

Última edición por oskar_calvo; 29/03/2007 a las 09:10 Razón: actualizar mensaje
  #12 (permalink)  
Antiguo 29/03/2007, 09:08
Avatar de Saruman  
Fecha de Ingreso: mayo-2003
Ubicación: Panama city, Panama, Panama
Mensajes: 1.154
Antigüedad: 20 años, 11 meses
Puntos: 5
Re: crear un arbol de categorías con checkbox o con un select.

se ve que no los has revisado....
mira bien
__________________
Saruman

One Ring to rule them all, One Ring to find them, One Ring to bring them all and in the darkness bind them.
  #13 (permalink)  
Antiguo 29/03/2007, 09:16
 
Fecha de Ingreso: agosto-2006
Mensajes: 219
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: crear un arbol de categorías con checkbox o con un select.

mil gracias saruman, ya he visto donde tenía el error, ya funciona correctamente.


te debo unas cervezas, si algún día montamos una quedada del foro recuerda me me que las pague.


un saludo

oskar.


pd: que significa, o que es: "chr(13)"
  #14 (permalink)  
Antiguo 29/03/2007, 09:24
Avatar de Saruman  
Fecha de Ingreso: mayo-2003
Ubicación: Panama city, Panama, Panama
Mensajes: 1.154
Antigüedad: 20 años, 11 meses
Puntos: 5
Re: crear un arbol de categorías con checkbox o con un select.

gracias. de nada, un placer, para eso estamos....
lo del chr(13) es para que cuando veas el "view source" de la pagina todo te quede uno debajo de otro, no todo corrido y pegado, es como si le hubieses dado ENTER mientras haces el objeto.. me explico??

saludos
__________________
Saruman

One Ring to rule them all, One Ring to find them, One Ring to bring them all and in the darkness bind them.
  #15 (permalink)  
Antiguo 29/03/2007, 09:25
 
Fecha de Ingreso: agosto-2006
Mensajes: 219
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: crear un arbol de categorías con checkbox o con un select.

si, gracias por la explicación.

por cierto ya me he dado cuenta que el <option> estaba dentro de la función, esto de la programación tiene su punto de interés, y de complicación.


un saludo

oskar
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 00:36.