Foros del Web » Programando para Internet » PHP »

Rubros y subrubros ilimitados

Estas en el tema de Rubros y subrubros ilimitados en el foro de PHP en Foros del Web. Hola foreros, como les va tanto tiempo? No se si esta pregunta va aca o en MySQL pero bueno, cualquier cosa pasenla :P Mi duda ...
  #1 (permalink)  
Antiguo 25/06/2007, 12:09
Avatar de fermar21  
Fecha de Ingreso: marzo-2004
Ubicación: San Nicolas - Bs. As.
Mensajes: 294
Antigüedad: 20 años
Puntos: 0
Pregunta Rubros y subrubros ilimitados

Hola foreros, como les va tanto tiempo? No se si esta pregunta va aca o en MySQL pero bueno, cualquier cosa pasenla :P

Mi duda es la siguiente:
Estoy haciendo un sistema de clasificados online y deseo hacer que desde el panel de administrador el cliente puede agregar N subrubros
Ej: Rubro1 >> Rubro2 >> ... >> RubroN
No logro hacer una Base de Datos eficiente para eso. Yo antes creaba una tabla por Nivel del Rubro y despues las relacionaba (rubros.id = subrubros.id_rubro) pero al ser N rubros se me complica. Alguien tiene alguna forma de hacerlo ilimtado. Solo que me diga la logica que yo armo las tablas y todo eso.
No se, algo como una tabla para los nombres y otra tabla para las relaciones pero bueno, no se, eso no me funciono.

Espero sus ayudas! :)

Saludos,
Fernando
__________________
Fernando Marinzulich
Programador Web (PHP/MySQL/Jquery)
  #2 (permalink)  
Antiguo 25/06/2007, 12:53
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Rubros y subrubros ilimitados

Tu logica de las tablas esta bien, el problema es a la hora de armar el arbol, hay varios algoritmos la mayoria recursivos, asi que vas a tener que darle una buscada en google e implementar el mejor algoritmo.

Lo que yo te recomiendo para eficiencia es ya que hayas creado por decir tu arbol (ya sea por algoritmos) lo guardes en un cache para que no tengas que generar todo el tiempo el arbol.

Saludos.
  #3 (permalink)  
Antiguo 25/06/2007, 23:12
Avatar de 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
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 19:29.