Categorías y Sub-Categorías

17/12/2003 - 00:56 por Carlos Bladinieres | Informe spam
Hola a Todos:

Estoy haciendo un directorio de categorías y sub-categorías. Cada categoría
puede tener "n" niveles de profundidad.
Para darla hacer las páginas para agregar categorías y subcategorías no he
tenido problema, pero no encuentro la manera de hacer lo siguiente:

La estructura de mi tabla
CATEGORIAS
id_categorias
id_pertenece_a
descripcion

Quiero poder hacer un despliegue de las categorías del primer nivel y poder
CONTAR todas las subcategorías que tienen en los diferentes niveles y en
todas las ramas para desplegarlos de esta manera.

Libros (75 subcategorías)
Revistas (60 subcategorías)
Manuales (48 subcategorías)

El problema es que no encuentro como hacer el ciclo que me permita contar
todas las ramas (subcategorias) de una rama principal cuando se pueden tener
"n" niveles en cada rama.

Alguna idea?

Gracias,

Carlos

Preguntas similare

Leer las respuestas

#1 Marcelo Vicente
17/12/2003 - 12:40 | Informe spam
Carlos:
Sería bueno saber que Motor de BD estas usando; yo se que
Oracle tiene una forma particular de manejar este tipo de
estructuras (arbol). Es decir, podes realizar en una sola
consulta esto que vos necesitas.
Por otro lado tenes la opción de utilizar un Store
Procedure que itere sobre los nodos padre contando sus
hijos, luego itere sobre estos hijos contando los hijos de
los hijos y así hasta no encontrar mas nodos.

Saludos.

Hola a Todos:

Estoy haciendo un directorio de categorías y sub-


categorías. Cada categoría
puede tener "n" niveles de profundidad.
Para darla hacer las páginas para agregar categorías y


subcategorías no he
tenido problema, pero no encuentro la manera de hacer lo


siguiente:

La estructura de mi tabla
CATEGORIAS
id_categorias
id_pertenece_a
descripcion

Quiero poder hacer un despliegue de las categorías del


primer nivel y poder
CONTAR todas las subcategorías que tienen en los


diferentes niveles y en
todas las ramas para desplegarlos de esta manera.

Libros (75 subcategorías)
Revistas (60 subcategorías)
Manuales (48 subcategorías)

El problema es que no encuentro como hacer el ciclo que


me permita contar
todas las ramas (subcategorias) de una rama principal


cuando se pueden tener
"n" niveles en cada rama.

Alguna idea?

Gracias,

Carlos


.

Respuesta Responder a este mensaje
#2 Carlos Bladinieres
17/12/2003 - 17:53 | Informe spam
Estoy utilizando Access para despues migrarlo a SQL, pero por el momento
necesito que funcione con Access.
Algona vez vi un codigo para hacer algo semejante pero no lo encuentro.

Si tienes alguna idea de como hacer esto con Store Procedures por favor
pasame el codigo.

Gracias,

Carlos

"Marcelo Vicente" escribió en el mensaje
news:094d01c3c492$a2bb7790$
Carlos:
Sería bueno saber que Motor de BD estas usando; yo se que
Oracle tiene una forma particular de manejar este tipo de
estructuras (arbol). Es decir, podes realizar en una sola
consulta esto que vos necesitas.
Por otro lado tenes la opción de utilizar un Store
Procedure que itere sobre los nodos padre contando sus
hijos, luego itere sobre estos hijos contando los hijos de
los hijos y así hasta no encontrar mas nodos.

Saludos.

Hola a Todos:

Estoy haciendo un directorio de categorías y sub-


categorías. Cada categoría
puede tener "n" niveles de profundidad.
Para darla hacer las páginas para agregar categorías y


subcategorías no he
tenido problema, pero no encuentro la manera de hacer lo


siguiente:

La estructura de mi tabla
CATEGORIAS
id_categorias
id_pertenece_a
descripcion

Quiero poder hacer un despliegue de las categorías del


primer nivel y poder
CONTAR todas las subcategorías que tienen en los


diferentes niveles y en
todas las ramas para desplegarlos de esta manera.

Libros (75 subcategorías)
Revistas (60 subcategorías)
Manuales (48 subcategorías)

El problema es que no encuentro como hacer el ciclo que


me permita contar
todas las ramas (subcategorias) de una rama principal


cuando se pueden tener
"n" niveles en cada rama.

Alguna idea?

Gracias,

Carlos


.

Respuesta Responder a este mensaje
#3 danicastillo
17/12/2003 - 19:16 | Informe spam
no los cuentes en tiempo de ejecucion, es una locura y cargas el server de
forma indiscriminada =)

deberas hacerlo en el momento en el que añades una categoria, mas o menos es
esto:

añade un campo de "hijos" a la tabla de categorias

cuando añades una subcategoria haces un bucle actualizando en cascada los
padres, algo como

padre=elquetoca (seleccionado en el formulario de añadir subcategoria)

do while padre<>0 ' o nulo, o la marca q tengas para categorias raiz
'abre un recodset con el padre
rs.open "select * from categorias where id_categorias=" & padre
rs("hijos")=rs("hijos")+1
padre=rs("id_pertenece_a")
rs.close
loop

' ok todo eso lo pudes hacer con consultas de actualizacion y tal pero bueno
es por hacerte una idea

con eso vas aumentando por cada subcategoria a los padres , con lo q tienes
en la tabla ya las subcategorias de cada categoria, no necesitas recalcular
cada vez q las muestras (y por lo general, añadir una subcategoria q es
donde hace el trabajo, se hace una vez cada bastante tiempo)

si ya tienes las categorias creadas, puedes meter ese codigo en una funcion,
y hacerte un bucle que recorra todas las categorias y vaya llamando a la
funcion con el ("id_pertenece_a") de cada elemento, para asignar ya los
hijos calculados de la estructura q tienes

el proceso para eliminar una subcat. es identico solo q restando claro =)



-o|o|--
-o|o| dani castillo
-o|o| http://www15.brinkster.com/danic/
-o|o| tutorial y trucos asp, vb, diseño
-o|o|--
"Carlos Bladinieres" escribió en el
mensaje news:
Estoy utilizando Access para despues migrarlo a SQL, pero por el momento
necesito que funcione con Access.
Algona vez vi un codigo para hacer algo semejante pero no lo encuentro.

Si tienes alguna idea de como hacer esto con Store Procedures por favor
pasame el codigo.

Gracias,

Carlos

"Marcelo Vicente" escribió en el mensaje
news:094d01c3c492$a2bb7790$
Carlos:
Sería bueno saber que Motor de BD estas usando; yo se que
Oracle tiene una forma particular de manejar este tipo de
estructuras (arbol). Es decir, podes realizar en una sola
consulta esto que vos necesitas.
Por otro lado tenes la opción de utilizar un Store
Procedure que itere sobre los nodos padre contando sus
hijos, luego itere sobre estos hijos contando los hijos de
los hijos y así hasta no encontrar mas nodos.

Saludos.

>Hola a Todos:
>
>Estoy haciendo un directorio de categorías y sub-
categorías. Cada categoría
>puede tener "n" niveles de profundidad.
>Para darla hacer las páginas para agregar categorías y
subcategorías no he
>tenido problema, pero no encuentro la manera de hacer lo
siguiente:
>
>La estructura de mi tabla
>CATEGORIAS
>id_categorias
>id_pertenece_a
>descripcion
>
>Quiero poder hacer un despliegue de las categorías del
primer nivel y poder
>CONTAR todas las subcategorías que tienen en los
diferentes niveles y en
>todas las ramas para desplegarlos de esta manera.
>
>Libros (75 subcategorías)
>Revistas (60 subcategorías)
>Manuales (48 subcategorías)
>
>El problema es que no encuentro como hacer el ciclo que
me permita contar
>todas las ramas (subcategorias) de una rama principal
cuando se pueden tener
>"n" niveles en cada rama.
>
>Alguna idea?
>
>Gracias,
>
>Carlos
>
>
>.
>


Respuesta Responder a este mensaje
#4 Francisco Rodriguez
29/12/2003 - 15:03 | Informe spam
a mi tb me haria falta un ejemplo de eso, tengo una base de datos en access.
y una tabla tiene varias subcategorias, me gustaria tambien poder hacer eso.

Alguien tiene un ejemplo practico para poder echarle un vistazo?

muchas gracias y felices fiestas!

"danicastillo" escribió en el
mensaje news:
no los cuentes en tiempo de ejecucion, es una locura y cargas el server de
forma indiscriminada =)

deberas hacerlo en el momento en el que añades una categoria, mas o menos


es
esto:

añade un campo de "hijos" a la tabla de categorias

cuando añades una subcategoria haces un bucle actualizando en cascada los
padres, algo como

padre=elquetoca (seleccionado en el formulario de añadir subcategoria)

do while padre<>0 ' o nulo, o la marca q tengas para categorias raiz
'abre un recodset con el padre
rs.open "select * from categorias where id_categorias=" & padre
rs("hijos")=rs("hijos")+1
padre=rs("id_pertenece_a")
rs.close
loop

' ok todo eso lo pudes hacer con consultas de actualizacion y tal pero


bueno
es por hacerte una idea

con eso vas aumentando por cada subcategoria a los padres , con lo q


tienes
en la tabla ya las subcategorias de cada categoria, no necesitas


recalcular
cada vez q las muestras (y por lo general, añadir una subcategoria q es
donde hace el trabajo, se hace una vez cada bastante tiempo)

si ya tienes las categorias creadas, puedes meter ese codigo en una


funcion,
y hacerte un bucle que recorra todas las categorias y vaya llamando a la
funcion con el ("id_pertenece_a") de cada elemento, para asignar ya los
hijos calculados de la estructura q tienes

el proceso para eliminar una subcat. es identico solo q restando claro =)



-o|o|--
-o|o| dani castillo
-o|o| http://www15.brinkster.com/danic/
-o|o| tutorial y trucos asp, vb, diseño
-o|o|--
"Carlos Bladinieres" escribió en el
mensaje news:
> Estoy utilizando Access para despues migrarlo a SQL, pero por el momento
> necesito que funcione con Access.
> Algona vez vi un codigo para hacer algo semejante pero no lo encuentro.
>
> Si tienes alguna idea de como hacer esto con Store Procedures por favor
> pasame el codigo.
>
> Gracias,
>
> Carlos
>
> "Marcelo Vicente" escribió en el mensaje
> news:094d01c3c492$a2bb7790$
> Carlos:
> Sería bueno saber que Motor de BD estas usando; yo se que
> Oracle tiene una forma particular de manejar este tipo de
> estructuras (arbol). Es decir, podes realizar en una sola
> consulta esto que vos necesitas.
> Por otro lado tenes la opción de utilizar un Store
> Procedure que itere sobre los nodos padre contando sus
> hijos, luego itere sobre estos hijos contando los hijos de
> los hijos y así hasta no encontrar mas nodos.
>
> Saludos.
>
> >Hola a Todos:
> >
> >Estoy haciendo un directorio de categorías y sub-
> categorías. Cada categoría
> >puede tener "n" niveles de profundidad.
> >Para darla hacer las páginas para agregar categorías y
> subcategorías no he
> >tenido problema, pero no encuentro la manera de hacer lo
> siguiente:
> >
> >La estructura de mi tabla
> >CATEGORIAS
> >id_categorias
> >id_pertenece_a
> >descripcion
> >
> >Quiero poder hacer un despliegue de las categorías del
> primer nivel y poder
> >CONTAR todas las subcategorías que tienen en los
> diferentes niveles y en
> >todas las ramas para desplegarlos de esta manera.
> >
> >Libros (75 subcategorías)
> >Revistas (60 subcategorías)
> >Manuales (48 subcategorías)
> >
> >El problema es que no encuentro como hacer el ciclo que
> me permita contar
> >todas las ramas (subcategorias) de una rama principal
> cuando se pueden tener
> >"n" niveles en cada rama.
> >
> >Alguna idea?
> >
> >Gracias,
> >
> >Carlos
> >
> >
> >.
> >
>
>


Respuesta Responder a este mensaje
#5 Juan Carlos Martínez Fernández
30/12/2003 - 08:51 | Informe spam
Os sugiero algo mucho mas sencillo:

1º) Create una funcion JScript o VBScript que desde un marco pueda acceder a
su padre y eliminar y reasignar posteriormente codigo html a un span
(propiedad innerHTML), cuyo nombre le pasas a la funcion como argumento y el
nombre del combo que contiene las subcategorias.

2º) Incrusta esa funcion como un script y create otra del lado del servidor
en una página ASP que recoja de una BD, un fichero, etc... las subcategorias
para un Id. de categoria recibido por la pagina (mediante post), generando
como salida una cadena con los options deseados. Para terminar este paso,
calcula una cadena con un control combo con el nombre recibido como
parametro y cuyos options son la cadena procesada anteriormente.

3º) Haz que el codigo html (mediante la funcion del apdo 1º) del span
situado en el marco padre contenga la cadena (texto consistente en un
control combo + sus options).

4º) En el evento onClick del combo con las categorias padre haz que la
propiedad src de un ifrane pase a ser la pagina del apdo. 2º a la que le
añades como parametro el nombre del combo hijo (subcategorias), el del span
que lo contiene y el valor del combo padre para poder seleccionar las
subcategorias en dicha pagina.

Resultado: No "navegas" con la página que tienes en pantalla (no pierdes
datos en pantalla), tienes un acabado profesional y te permite desarrollar
cualquier esquema master-detail, como por ejemplo PAIS->ESTADO->CIUDAD
etc...

Ademas usar este esquema para n niveles, no solamente 2. Yo personalmente lo
uso para localizar una ciudad en todo el mundo!!!!: Pais ->
Estado/Provincia -> Municipio -> Ciudad

Espero haberte sido util. Recibe un cordial saludo y felices fiestas

Juan Carlos Martínez Fernández
mailto:


"Francisco Rodriguez" escribió en el mensaje
news:%
a mi tb me haria falta un ejemplo de eso, tengo una base de datos en


access.
y una tabla tiene varias subcategorias, me gustaria tambien poder hacer


eso.

Alguien tiene un ejemplo practico para poder echarle un vistazo?

muchas gracias y felices fiestas!

"danicastillo" escribió en el
mensaje news:
> no los cuentes en tiempo de ejecucion, es una locura y cargas el server


de
> forma indiscriminada =)
>
> deberas hacerlo en el momento en el que añades una categoria, mas o


menos
es
> esto:
>
> añade un campo de "hijos" a la tabla de categorias
>
> cuando añades una subcategoria haces un bucle actualizando en cascada


los
> padres, algo como
>
> padre=elquetoca (seleccionado en el formulario de añadir subcategoria)
>
> do while padre<>0 ' o nulo, o la marca q tengas para categorias raiz
> 'abre un recodset con el padre
> rs.open "select * from categorias where id_categorias=" & padre
> rs("hijos")=rs("hijos")+1
> padre=rs("id_pertenece_a")
> rs.close
> loop
>
> ' ok todo eso lo pudes hacer con consultas de actualizacion y tal pero
bueno
> es por hacerte una idea
>
> con eso vas aumentando por cada subcategoria a los padres , con lo q
tienes
> en la tabla ya las subcategorias de cada categoria, no necesitas
recalcular
> cada vez q las muestras (y por lo general, añadir una subcategoria q es
> donde hace el trabajo, se hace una vez cada bastante tiempo)
>
> si ya tienes las categorias creadas, puedes meter ese codigo en una
funcion,
> y hacerte un bucle que recorra todas las categorias y vaya llamando a la
> funcion con el ("id_pertenece_a") de cada elemento, para asignar ya los
> hijos calculados de la estructura q tienes
>
> el proceso para eliminar una subcat. es identico solo q restando claro


=)
>
>
>
> -o|o|--
> -o|o| dani castillo
> -o|o| http://www15.brinkster.com/danic/
> -o|o| tutorial y trucos asp, vb, diseño
> -o|o|--
> "Carlos Bladinieres" escribió en


el
> mensaje news:
> > Estoy utilizando Access para despues migrarlo a SQL, pero por el


momento
> > necesito que funcione con Access.
> > Algona vez vi un codigo para hacer algo semejante pero no lo


encuentro.
> >
> > Si tienes alguna idea de como hacer esto con Store Procedures por


favor
> > pasame el codigo.
> >
> > Gracias,
> >
> > Carlos
> >
> > "Marcelo Vicente" escribió en el mensaje
> > news:094d01c3c492$a2bb7790$
> > Carlos:
> > Sería bueno saber que Motor de BD estas usando; yo se que
> > Oracle tiene una forma particular de manejar este tipo de
> > estructuras (arbol). Es decir, podes realizar en una sola
> > consulta esto que vos necesitas.
> > Por otro lado tenes la opción de utilizar un Store
> > Procedure que itere sobre los nodos padre contando sus
> > hijos, luego itere sobre estos hijos contando los hijos de
> > los hijos y así hasta no encontrar mas nodos.
> >
> > Saludos.
> >
> > >Hola a Todos:
> > >
> > >Estoy haciendo un directorio de categorías y sub-
> > categorías. Cada categoría
> > >puede tener "n" niveles de profundidad.
> > >Para darla hacer las páginas para agregar categorías y
> > subcategorías no he
> > >tenido problema, pero no encuentro la manera de hacer lo
> > siguiente:
> > >
> > >La estructura de mi tabla
> > >CATEGORIAS
> > >id_categorias
> > >id_pertenece_a
> > >descripcion
> > >
> > >Quiero poder hacer un despliegue de las categorías del
> > primer nivel y poder
> > >CONTAR todas las subcategorías que tienen en los
> > diferentes niveles y en
> > >todas las ramas para desplegarlos de esta manera.
> > >
> > >Libros (75 subcategorías)
> > >Revistas (60 subcategorías)
> > >Manuales (48 subcategorías)
> > >
> > >El problema es que no encuentro como hacer el ciclo que
> > me permita contar
> > >todas las ramas (subcategorias) de una rama principal
> > cuando se pueden tener
> > >"n" niveles en cada rama.
> > >
> > >Alguna idea?
> > >
> > >Gracias,
> > >
> > >Carlos
> > >
> > >
> > >.
> > >
> >
> >
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida