Foros del Web » Programando para Internet » PHP »

Ayuda Con Categorias Y Subcategorias

Estas en el tema de Ayuda Con Categorias Y Subcategorias en el foro de PHP en Foros del Web. Hola camaradas, necesito que me ayuden en lo siguiente: Necesito desarrollar (soy nuevo en php por necesidad) una aplicacion en donde cuente con categorias y ...
  #1 (permalink)  
Antiguo 17/01/2006, 19:57
 
Fecha de Ingreso: enero-2002
Mensajes: 106
Antigüedad: 22 años, 3 meses
Puntos: 0
Pregunta Ayuda Con Categorias Y Subcategorias

Hola camaradas, necesito que me ayuden en lo siguiente:

Necesito desarrollar (soy nuevo en php por necesidad) una aplicacion en donde cuente con categorias y subcategorias...

es decir,... por ejemplo...

Categorias -> Autos Subcategoria de Autos -> Ford

Necesito hacer el catalogo pero no he podido, asi que si tienen algo desarrollado que me pueda dar ideas y codigo pues lo agradezco desde ya!

salu2
__________________
Jherrera.NET
  #2 (permalink)  
Antiguo 17/01/2006, 22:53
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 20 años, 11 meses
Puntos: 2
simplemente por nombrar "for#" no deberia ayudarte :p

Yo lo que hago es lo siguiente, creo tantas tablas (en mysql) como subcategorias, es decir, no creo una tabla por cada subcategoria, si no por cada "nivel" de categoria, ej:

tabla_cat1, tabla_cat2, tabla_cat3, este es el ejemplo si vos tenes como maximo 3 ramas, ej: Autos -> CHEVROLET -> Corsa

tabla_cat1 tendría todas las categorias principales, ej: Autos, Camiones, Perros, Casas, Ordenadores...

tabla_cat2 tendría las sub-categorias de tablas_cat1, ej:

tabla_cat1 = Autos -> tabla_cat2 = Chevrolet, renault, fiat, porche, ferrari, etc

Me entiendes?, asi tabla_cat3 deberia tener (en caso de haberlos) las subcategorias de tabla_cat2, estas podrían ser (siempre tomando como ejemplo la categoria "autos"): Tunning, Antiguos, deportivos, etc...

Entonces quedaria: Autos -> Chevrolet -> Tunning

Y así podrías agregar cuantas subcategorias quieras.

Bueno, ahora como se hace esto, todas las tablas tienen que tener un campo que identifique a que categoria pertenecen, esto podrías hacerlo con "nombres" o simplemente con numeros, ej

tabla_cat1
id - name
1 - Autos
2 - Perros
3 - Ordenadores

tabla_cat2
id - id_rel - name
1 - 1 - Deportivos
2 - 1 - Tunning
3 - 1 - Antiguos
4 - 2 - Boxers
5 - 2 - Obejero Aleman
6 - 2 - Obejero Belga
7 - 3 - Intel
8 - 3 - AMD Atlhon
9 - 3 - Placas bases
10 - 3 - Memorias...

tabla_cat3
id - id_rel - name
1 - 10 - DDR
2 - 10 - DIM
3 - 9 - Asus
4 - 9 - Abit
5 - 7 - Pentium
6 - 7 - Celeron
7 - 8 - Atlhon
8 - 8 - K6

Bueno, vez como es el asunto?, todas tienen un "id" que es autoincrementable y UNICO, y salvo la categoria principal todas tienen un campo "id_rel" que debe llevar el "id" de la categoria superior... con esto puedes crear miles de categorias y subcategorias...

Bueno, este es un ejemplo de como lo hago yo, tambien podrías crear todas las categorias en una misma tabla (en lugar de usar "id_rel" usas "cat1", "cat2"...)

Espero que te haya ayudado a entender un poco la teoria.
__________________
I Love Programming...
  #3 (permalink)  
Antiguo 18/01/2006, 12:35
 
Fecha de Ingreso: junio-2005
Mensajes: 981
Antigüedad: 18 años, 10 meses
Puntos: 2
Todavía no me a tocado hacer esto pero creo que esta FAQ te ayuda (sin animo de ofender, creo que es mas conveniente que la opción expuesta por el amigo Fulano_).

http://www.forosdelweb.com/showpost....&postcount=146

Saludos y suerte.
  #4 (permalink)  
Antiguo 25/04/2006, 15:27
 
Fecha de Ingreso: marzo-2004
Mensajes: 68
Antigüedad: 20 años
Puntos: 0
Cita:
Iniciado por FuLaNo_
simplemente por nombrar "for#" no deberia ayudarte :p

Yo lo que hago es lo siguiente, creo tantas tablas (en mysql) como subcategorias, es decir, no creo una tabla por cada subcategoria, si no por cada "nivel" de categoria, ej:

tabla_cat1, tabla_cat2, tabla_cat3, este es el ejemplo si vos tenes como maximo 3 ramas, ej: Autos -> CHEVROLET -> Corsa

tabla_cat1 tendría todas las categorias principales, ej: Autos, Camiones, Perros, Casas, Ordenadores...

tabla_cat2 tendría las sub-categorias de tablas_cat1, ej:

tabla_cat1 = Autos -> tabla_cat2 = Chevrolet, renault, fiat, porche, ferrari, etc

Me entiendes?, asi tabla_cat3 deberia tener (en caso de haberlos) las subcategorias de tabla_cat2, estas podrían ser (siempre tomando como ejemplo la categoria "autos"): Tunning, Antiguos, deportivos, etc...

Entonces quedaria: Autos -> Chevrolet -> Tunning

Y así podrías agregar cuantas subcategorias quieras.

Bueno, ahora como se hace esto, todas las tablas tienen que tener un campo que identifique a que categoria pertenecen, esto podrías hacerlo con "nombres" o simplemente con numeros, ej

tabla_cat1
id - name
1 - Autos
2 - Perros
3 - Ordenadores

tabla_cat2
id - id_rel - name
1 - 1 - Deportivos
2 - 1 - Tunning
3 - 1 - Antiguos
4 - 2 - Boxers
5 - 2 - Obejero Aleman
6 - 2 - Obejero Belga
7 - 3 - Intel
8 - 3 - AMD Atlhon
9 - 3 - Placas bases
10 - 3 - Memorias...

tabla_cat3
id - id_rel - name
1 - 10 - DDR
2 - 10 - DIM
3 - 9 - Asus
4 - 9 - Abit
5 - 7 - Pentium
6 - 7 - Celeron
7 - 8 - Atlhon
8 - 8 - K6

Bueno, vez como es el asunto?, todas tienen un "id" que es autoincrementable y UNICO, y salvo la categoria principal todas tienen un campo "id_rel" que debe llevar el "id" de la categoria superior... con esto puedes crear miles de categorias y subcategorias...

Bueno, este es un ejemplo de como lo hago yo, tambien podrías crear todas las categorias en una misma tabla (en lugar de usar "id_rel" usas "cat1", "cat2"...)

Espero que te haya ayudado a entender un poco la teoria.

Ok ahora una pregunta

Si yo tengo un listado de productos de informatica con los siguientes items
Por ejemplo

PRDUCTOS
-----------

TIPO ( MONITOR, TECLADO ETC )
MARCA
MODELO
DETALLES
PRECIO

Tendria que hacer una tabla por cada uno relacionado con el anterior?
osea....una para productos donde se muestre todo lo anterior?
y una para TIPO, MARCA, MODELO...ETC... ?

Si es asi....me surge otra duda...

como hago para que en la tabla PRODUCTO me muestre la info de las otras tablas pero no el numero de id si no el nombre

se entiende mas o menos lo que digo?

Gracias
  #5 (permalink)  
Antiguo 26/04/2006, 06:06
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Si usas la técnica que propone la FAQ que mencionó DarioDario, sólo tienes que incorporar a tu actual tabla un campo más donde vas a guardar el "ID" de la categoría que pertenece.

producto tabla
ID_producto
ID_categoria <-- clave foránea referenciada a tabla categorias
DETALLES
PRECIO

categorias tabla
ID_categoria
nombre
id_padre

Esto es una buena técnica para crear infinidad (ramas) de categorías en forma dinámica .. Pero si tu tienes unas pocas descripciones de tu "producto" que son "propiedades" como esa "marca", "modelo", "tipo" .. y poco más: ojo "fijas" (fijas las propiedades .. esos "campos" no sus "valores").. tal vez te resulte más sencillo simplemente tener una tabla para definir las marcas, otra para los modelos, otra para los "tipos" y listo .. relacinada a esa tabla producto por un Identificador (en relción de normalización 1 -> N)

Te recomiendo continuar el tema en el foro de "Base de datos" y leer este artículo sobre "normalización de base de datos" que es en el fondo lo que necesitas: ver el modelo de datos más apropiado para tu caso.

http://www.mysql-hispano.org/page.php?id=16

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 26/04/2006, 08:00
 
Fecha de Ingreso: marzo-2004
Mensajes: 68
Antigüedad: 20 años
Puntos: 0
Muchas gracias por tu rta.
En principio lo que hice fue, una tabla para categorias y otra para el resto de los datos.
Pero voy a leer lo que me recomendaste y darme una vuelta por el foro de mysql a ver que puedo sacar

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 03:57.