Generar menu desde tabla

15/05/2006 - 12:45 por Jose | Informe spam
Buenos dias,

Mi pregunta es la siguiente.

Tengo un código que genera un menú de navegación partiendo de la información
almacenada en una tabla de la siguiente forma:

<%Do while not rs.EOF
<li><a href=<%=rs("UrlMenu")%>
target="Principal"><%=rs("TextoMenu")%></a></li>
<%rs.movenext
loop

Hasta aquí todo bien, el problema me surge con las páginas del tipo:
buscar.asp?usuario001, que llevan una parte variable.
Lo que he hecho es crear un campo en la tabla llamado varUrlMenu donde
almaceno el nombre de la variable que almacena el valor que pasaré en la
url. Los valores en la tabla me quedan de la siguiente forma:

UrlMenu: buscar.asp?usuarioTextoMenu: Buscar
varUrlMenu: CodUsuario

¿Cómo debería conformar la url?

Gracias. Un saludo.

Jose G.

Preguntas similare

Leer las respuestas

#1 Jose A. Fernandez
15/05/2006 - 13:46 | Informe spam
Jose...
En el campo varUrlMenu contiene el nombre de la variable y no el dato
no? bueno esto no puede recuperarlo salvo caso que ya lo tengas en
alguna coleccion (querystring, form, session, ...)
Por ejemplo:
Sabes que la variable CodUsuario esta en la una variable de session
"CodUsuario", que se recupera de esta manera
Session("CodUsuario")
bueno en tu codigo de menu

Ejemplo del contruccion del menu:

<%Do while not rs.EOF
MenuUrl=rs("UrlMenu") & .{parte de parametros}
MenuDesc = rs("TextoMenu")
%>
<li><a href=<%=MenuUrl%> target="Principal"><%=MenuDesc
%></a></li>
<%
rs.movenext
loop



la parte de {parte de parametros}
seria algo asi
MenuUrl=rs("UrlMenu") & Session(rs("varUrlMenu"))

Esto es si esta dentro de la coleccion Session o sino tendria que
colocar o buscar en la coleccion correspondiente
Request.Querystring(rs("varUrlMenu"))...

Bueno mi recomendacion es que realices una funcion de armado de URL o
algo similar
(en este caso tu UrlMenu no tendria que contener ningun nombre de
paraemtro porque se armaria algo asi...)

FUNCTION ArmarURL(MenuUrl, MenuParametros)
'Donde MenuParametros puede ser valores separados por coma
aParam = SPLIT(MenuParametros, ",")

strMenuParam = ""
FOR i = 0 TO Ubound(aParam )
strValor = ObtenerValorParametro(aParam(0))
IF TRIM(LEN(strValor )) > 0 THEN
strMenuParam = strMenuParam & aParam(0) & "=" & strValor &
"&"
END IF
NEXT

ArmarURL = MenuUrl & "?" & ArmarURL


END FUNCTION


'
' Obteniendo valor del Parametro en las colecciones
'
FUNCTION ObtenerValorParametro(Parametro)
strValor = Request.Querystring(Parametro)

IF LEN(TRIM(strValor)) = 0 THEN
strValor = Request.Form(Parametro)
EN IF

IF LEN(TRIM(strValor)) = 0 THEN
strValor = Session(Parametro)
EN IF

ObtenerValorParametro =strValor

END FUNCTION


Bueno con esto se arman los menu o es una idea simplemente espero que
la mejores.. y que te sirva..
Pero una pregunta importante el Valor: usuario001; en este caso
00001 donde estaria? en que lugar? Query, Session? de donde viene?
(te escribi las funciones rapidamente para adelantarme...pero las
escribi aqui asi que pueden tener errores)
Nuevamente espero que te sirva...
Respuesta Responder a este mensaje
#2 ferg
15/05/2006 - 13:54 | Informe spam
Jose; prueba de la siguiente manera...

<%
dim strMenu
Do while not rs.EOF
strMenu = strMenu & "<li><a href=" & rs("UrlMenu") &
rs("varUrlMenu") & _
"> target=Principal>" & rs("TextoMenu") & "</a></li>"
rs.movenext
loop
Response.Write strMenu
%>

Saludos.

Ing. Fernando D. Giletta
San Fco. Cba. Arg.

"Jose" escribió en el mensaje
news:OxDV$
Buenos dias,

Mi pregunta es la siguiente.

Tengo un código que genera un menú de navegación partiendo de la
información almacenada en una tabla de la siguiente forma:

<%Do while not rs.EOF
<li><a href=<%=rs("UrlMenu")%>
target="Principal"><%=rs("TextoMenu")%></a></li>
<%rs.movenext
loop

Hasta aquí todo bien, el problema me surge con las páginas del tipo:
buscar.asp?usuario001, que llevan una parte variable.
Lo que he hecho es crear un campo en la tabla llamado varUrlMenu donde
almaceno el nombre de la variable que almacena el valor que pasaré en la
url. Los valores en la tabla me quedan de la siguiente forma:

UrlMenu: buscar.asp?usuario> TextoMenu: Buscar
varUrlMenu: CodUsuario

¿Cómo debería conformar la url?

Gracias. Un saludo.

Jose G.



Respuesta Responder a este mensaje
#3 Jose A. Fernandez
15/05/2006 - 14:03 | Informe spam
Fernando en el campo varUrlMenu Jose almacena
"...el nombre de la variable que almacena el valor que pasara en la
url.."
por esa razon:
rs("UrlMenu") & rs("varUrlMenu")
se trasnformara en algo asi
http://...buscar.asp?usuario=CodUsuario

y no sirve..lo que el necesita es el Valor de CodUsuario por lo que
entendi
Respuesta Responder a este mensaje
#4 Jose
15/05/2006 - 16:36 | Informe spam
Eso es! Mil gracias! La variable en cuestión pertenece a la colección
Session con lo que & Session(rs("varUrlMenu")) me va de perlas.

Había pensado hacer una función para montar la url pero al estar atascado
aquí no veía por donde seguir.

Nuevamente muchas gracias por la ayuda.


"Jose A. Fernandez" escribió en el mensaje
news:
Jose...
En el campo varUrlMenu contiene el nombre de la variable y no el dato
no? bueno esto no puede recuperarlo salvo caso que ya lo tengas en
alguna coleccion (querystring, form, session, ...)
Por ejemplo:
Sabes que la variable CodUsuario esta en la una variable de session
"CodUsuario", que se recupera de esta manera
Session("CodUsuario")
bueno en tu codigo de menu

Ejemplo del contruccion del menu:

<%Do while not rs.EOF
MenuUrl=rs("UrlMenu") & .{parte de parametros}
MenuDesc = rs("TextoMenu")
%>
<li><a href=<%=MenuUrl%> target="Principal"><%=MenuDesc
%></a></li>
<%
rs.movenext
loop



la parte de {parte de parametros}
seria algo asi
MenuUrl=rs("UrlMenu") & Session(rs("varUrlMenu"))

Esto es si esta dentro de la coleccion Session o sino tendria que
colocar o buscar en la coleccion correspondiente
Request.Querystring(rs("varUrlMenu"))...

Bueno mi recomendacion es que realices una funcion de armado de URL o
algo similar
(en este caso tu UrlMenu no tendria que contener ningun nombre de
paraemtro porque se armaria algo asi...)

FUNCTION ArmarURL(MenuUrl, MenuParametros)
'Donde MenuParametros puede ser valores separados por coma
aParam = SPLIT(MenuParametros, ",")

strMenuParam = ""
FOR i = 0 TO Ubound(aParam )
strValor = ObtenerValorParametro(aParam(0))
IF TRIM(LEN(strValor )) > 0 THEN
strMenuParam = strMenuParam & aParam(0) & "=" & strValor &
"&"
END IF
NEXT

ArmarURL = MenuUrl & "?" & ArmarURL


END FUNCTION


'
' Obteniendo valor del Parametro en las colecciones
'
FUNCTION ObtenerValorParametro(Parametro)
strValor = Request.Querystring(Parametro)

IF LEN(TRIM(strValor)) = 0 THEN
strValor = Request.Form(Parametro)
EN IF

IF LEN(TRIM(strValor)) = 0 THEN
strValor = Session(Parametro)
EN IF

ObtenerValorParametro =strValor

END FUNCTION


Bueno con esto se arman los menu o es una idea simplemente espero que
la mejores.. y que te sirva..
Pero una pregunta importante el Valor: usuario001; en este caso
00001 donde estaria? en que lugar? Query, Session? de donde viene?
(te escribi las funciones rapidamente para adelantarme...pero las
escribi aqui asi que pueden tener errores)
Nuevamente espero que te sirva...

Respuesta Responder a este mensaje
#5 Jose
15/05/2006 - 16:40 | Informe spam
Entendistes muy bien para lo mal que me explique.

Saludos

"Jose A. Fernandez" escribió en el mensaje
news:
Fernando en el campo varUrlMenu Jose almacena
"...el nombre de la variable que almacena el valor que pasara en la
url.."
por esa razon:
rs("UrlMenu") & rs("varUrlMenu")
se trasnformara en algo asi
http://...buscar.asp?usuario=CodUsuario

y no sirve..lo que el necesita es el Valor de CodUsuario por lo que
entendi

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