Hola a tod@s, os explico mi problema: quería componer una página, a partir de varias páginas separadas haciendo varios includes, hasta ahí ningún problema. El tema está en que para saber que archivos tengo que incluir, lo tengo que consultar en una base de datos y después componer los includes, había pensado hacer algo así:
Código ASP:
Ver original<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<%
codmuestra = request.querystring("codmuestra")
Dim conex_STRING99
conex_STRING99 = "DSN=Informes;uid=xxxx;pwd=xxx;"
Set informe = Server.CreateObject("ADODB.Recordset")
informe.ActiveConnection = conex_STRING99
informe.Source = "Select * from muestras where codigo=" & codmuestra
informe.CursorType = 1
informe.CursorLocation = 2
informe.LockType = 3
informe.Open()
idiomas=informe("idiomas")
if instr(idiomas,",")>0 then 'hay varios idiomas, cogemos el último
idi=split(idiomas,",")
idioma=idi(ubound(idi))
else 'solo hay un idioma
idioma=idiomas
end if
Set archivos = Server.CreateObject("ADODB.Recordset")
archivos.ActiveConnection = conex_STRING99
archivos.Source = "Select * from archivos_informes where id_perfil=" & informe("perfil") & " order by orden asc"
archivos.CursorType = 1
archivos.CursorLocation = 2
archivos.LockType = 3
archivos.Open()
%>
<html>
<head></head>
<body>
<%while not archivos.eof
if idioma="DE" then
inclusion="./" & archivos("archivo") & "_aleman.asp"
else
inclusion="./" & archivos("archivo") & ".asp"
end if
response.write inclusion%>
<!--#include file=inclusion -->
<%archivos.movenext
wend%>
Pero siempre daba error diciendo que no encontraba el archivo "inclusion". Después de buscar un poco he encontrado esto:
Cita: Podría haber un problema si queremos incluir un archivo cuyo nombre debemos extraer de una variable ASP. Imaginaros que tenemos que incluir un archivo que tenemos su nombre en una variable. Así:
<%
archivoInclude = "miarchivo.html"
%>
<!--#include virtual=archivoInclude-->
Como el código ASP no se ejecuta hasta después de haber incluido el archivo, a la hora de incluirlo no se ha resuelto el nombre que se desea incluir. Dicho de otro modo, ASP no sabe qué es lo que vale la variable archivoInclude cuando va a incluirlo, por lo que no realiza el include tal como desearíamos.
Para parametrizar bien una página web y que su actualización sea fácil más tarde o más temprano lo anterior será un inconveniente. Así que podemos arreglar el problema del siguiente modo, creando una función que realice el include del archivo. Veamos cómo sería esa función:
<%
function incluye(archivo)
archivo= request.serverVariables("APPL_PHYSICAL_PATH") & archivo
set confile = createObject("scripting.filesystemobject")
set fich = confile.openTextFile(archivo)
while not fich.atEndOfStream
lineactual = fich.readLine
response.write(lineactual)
wend
end function
%>
Varias cosillas habría que comentar sobre esta función. Recibe el nombre del archivo que deseamos abrir. Para construir la ruta completa de este archivo tendremos que utilizar el objeto request para extraer la variable del servidor que contiene la ruta de disco duro donde se encuentra el domino. Una vez que hemos construido el nombre de archivo con su ruta creamos el archivo en las 2 siguientes líneas. Finalmente hacemos un bucle que va extrayendo del archivo el texto correspondiente e imprimiendolo en la página.
Solo destacamos un punto en contra de esta forma de incluir los archivos. Se trata de que no podremos incluir más que código HTML, nunca código ASP pues no se ejecutaría y quedaría impreso en la página junto con el código HTML. Es una limitación significativa pero en los casos en los que solo necesitemos incluir texto puede servir muy bien.
Es decir, según esto no se puede incluir un asp desde una variable, porque intenta hacer la inclusión antes de ejecutar el código. Y tampoco se puede usar la función que proponen, porque incluiría el código a pelo y ya está.
¿A alguien se le ocurre como hacer esto?
Muchas gracias por adelantado, salu2