Ver Mensaje Individual
  #3 (permalink)  
Antiguo 25/06/2007, 23:12
Avatar de DeeR
DeeR
 
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 4 meses
Puntos: 17
Re: Rubros y subrubros ilimitados

q tal fermar21

Busca en el foro con criterios como categorias hay vario post que hablan al respecto.

un de los tantos metodos que hablar es uno clasico de estructura una bd , en el sentido una sola tabla con campos como
categorias
Código:
id|nombre|id_categoria
entonces las categorias padre tiene un id_categoria = a 0 o NULL tu decides, entonces , las categorias hijas tienen como un "puntero" a su padre en id_categoria, entonces segun un hijo podemos ir recorriendo hasta encontrar el padre maximo por decir , o alrevez segun un padre encontrar todos los hijos de este, y asi sucesivamente.

entonces para generar todas las categorias , te pego algunas funciones utilises, no estan muy optimizadas, pero si funcionan ja
Código PHP:
function generar_categorias()
{
    
// Debemos Selecionar Todas las Categorias
    
$temp=consulta_sql("SELECT id,nombre FROM `categorias` WHERE `categoria_id` =0 LIMIT 0 , 30");
    for(
$i=0;$i<count($temp);$i++)
    {
        
// Recorremos las Categorias
        
$temp2=consulta_sql("SELECT nombre FROM `categorias` WHERE `categoria_id` =".$temp[$i]['id']." LIMIT 0 , 30");
        for(
$j=0;$j<count($temp2);$j++)
        {
        
$categorias[$temp[$i]['nombre']][$j]=$temp2[$j]['nombre'];    
        }
        
        
    }
    return 
$categorias;

PD : la consulta la hago atravez de una funcion consulta_sql :P

y buscar a los padres por recursividad
Código PHP:
function categoria_padre(&$id_inicial,&$datos)
{
    
// Buscamos Categorias Padres por Recursividad
    
global $servidor,$usuario,$password,$db;
        
    
$sql="SELECT id,nombre,categoria_id FROM `categorias` WHERE `id` =".$id_inicial."";
    
$mysql = new mysql;
    
$mysql->datos_conect($servidor,$usuario,$password);
    
$mysql->connect();
    
$mysql->select($db);
    
$select $mysql->query($sql);
    if ( 
$row $mysql->f_array$select ) )
    {
        
// Anotamos el Nombre
        
$datos[]=$row['nombre'];
        
// Llamamos Recursivamente
        
if ( $row['id'] != 0)
        {
            
categoria_padre($row['categoria_id'],$datos);
            
        }
        
    }
    
    
    

Pero en general tienen una base de como crear una funcion recursiva, tu puedes crear lo que quieras (ejemplo buscar los hermanos de una categoria (los q tengan el mismo padre pos) etc etc ... formar el arbol entero ,etc ...
En el foro hay muchos post q hablan del tema y varias funciones. tambien en el gran hermano google :P

Saludos