Programación en castellano
Inicio > Taller ASP > ASP > Uso y elección de archivos include
-Artículos

Uso y elección de archivos include

1 . Introducción
2 . Includes dinámicos
3 . Solución "select case"
4 . Solución "FileSystemObject"

Introducción

En este artículo, nos ocuparemos de ofrecer una solución al problema de uso de archivos include dinámicos.

Mediante la sentencia o podemos incluir otros archivos en una página ASP o sea que lo que se muestre en el navegador proceda de varios archivos. Esta solución es intersante para reaprovechar código que es utilizado en múltiples páginas y que cambia con poca frecuencia, facilitando así el mantenimiento de nuestro sitio web.

Un ejemplo práctico de esta situación es la cabecera o el pie de las páginas.

Include virtual vs. Include file

Según el tipo de path con el que se identifique el archivo a incluir deberá utilizar la palabra "virtual" o "file". En el primer caso se referencia un directorio virtual por lo que acostumbra a utilizar "/directorio_virtual/archivo_include.inc" (observa la orientación de la barra hacia la derecha). En el caso de utilizar la palabra "file", se está referenciando un path relativo al fichero que se está ejecutando, por ejemplo: "directorio_fisico\archivo_include.inc" (observa en este caso la orientación de la barra hacia la izquierda).

No hay ningúna restricción respecto al nombre y extensión del archivo include, aunque es frecuente utilizar la extensión "inc" para distinguir e identificar estos tipos de archivo.

Includes dinámicos

Visto lo anterior te preguntarás como hacer casos particulares de esta situación, es decir mostrar un archivo include u otro según sea el caso.

A primera vista parece fácil solucionar este problema utilizando una variable para definir el nombre del archivo include que se quiere procesar. No te creas que todo finaliza aquí, ya que esta solución no es válida...

<%
Dim nombreArchivo

' Se recibe el nombre del fichero en una variable por método POST
nombreArchivo = Request.form("nombreArchivo")

' A continuación se ejecuta la instrucción include 
' con el nombre del archivo %>
<!--#include file="<%=nombreArchivo%>"--> 

Debido a que la sentencia include se ejecuta antes de que se procesen los scripts ASP, el código anterior no funcionará y dará un error de archivo no encontrado.

Por la misma razón tampoco es viable realizar un paso de parámetros dinámicos a través de URL en una sentencia include, es decir:

<!--#include file="cabecera.asp?seccion=<%=IdSeccion%>"--> 

A continuación se muestran algunas alternativas para conseguir nuestro propósito.

Solución "select case"

Esta solución presenta el problema de ser poco eficiente. Consiste en aplicar una estructura condicional de tipo "if...else" o "select case" para ejecutar aquel include que nos interese en cada caso.

Para llevar a cabo este ejemplo, deberá crear la siguiente página ASP (p.e: "selectcase.asp")que contendrá el tratamiento condicional anunciado anteriormente:

<%
nombreArchivo = Request("nombreArchivo")
select case nombreArchivo
       Case "seccion1" %>
         <!--#include file="cabeceraSeccion1.htm"--> 
    <% Case "seccion2" %>
         <!--#include file="cabeceraSeccion2.htm"--> 
    <% Case "seccion3" %>
         <!--#include file="cabeceraSeccion3.htm"--> 
<% end select %> 

El siguiente código muestra un ejemplo del contenido de los archivos "cabeceraSeccion1", "cabeceraSeccion2" y "cabeceraSeccion2" respectivamente

Archivo cabeceraSeccion1.htm

<h2>Cabecera de la seccion 1</h2>

Archivo cabeceraSeccion2.htm

<h2>Cabecera de la seccion 2</h2>

Archivo cabeceraSeccion3.htm

<h2>Cabecera de la seccion 3</h2>

Podrá poner en práctica este ejemplo, realizando las siguientes peticiones desde su navegador:

    http://nombreservidor/selectcase.asp?nombreArchivo=seccion1
    http://nombreservidor/selectcase.asp?nombreArchivo=seccion2
    http://nombreservidor/selectcase.asp?nombreArchivo=seccion3    

Al visualizar la página en el navegador, se estará visualizando solo un archivo include, sin embargo, el servidor habrá procesado los tres archivos, lo que es incecesario y hace que esta solución sea poco práctica e ineficiente.

Solución "FileSystemObject"

Esta solución está basada en el uso del objeto FileSystemObject reproduciendo el funcionamiento de la sentencia Include y prescindiendo de ésta.

Para facilitar la lectura y el reaprovechamiento del código, utilizaremos una función que puede leer cualquier fichero.

<%
Function LeerArchivo(nombreArchivo)
    nombreArchivo = server.mapPath(nombreArchivo) 
    Set fso = Server.CreateObject("Scripting.FileSystemObject")      
    set f = fso.openTextFile(nombreArchivo) 
    contenidoArchivo = f.readall 
    set f = nothing 
    set fs = nothing 
    LeerArchivo = contenidoArchivo
end function
%>
<%
nombreArchivo = "cabecera" & Request("nombreArchivo") & ".htm"
response.write(LeerArchivo(nombreArchivo)) 
%> 
 

Últimos comentarios
Últimos 5 comentarios

includes en frames (31/08/2006)

Por
Las includes solo van en asp. Pero en frames si las paginas que la forman son asp, porque no van?

DLL desde ASP (21/12/2005)

Por
hola,
tengo una dll la cual uno de sus metodos devuelve un array de nombres,telefono. Como tengo que leerla desde asp ? (NO ASP.NET), hago:

Referencia a objeto no establecida como instancia de un objeto.
%>
'ese LeeClientes es el que devuelve el array

GRACIAS

include desde otro servidor (15/01/2004)

Por
Hola, se puede incluir un archivo asp (para conectar una base de datos), que está en otro dominio distinto del de la página que lo llama y la base de datos?
Si no es posible, hay alguna forma de hacerlo?
Gracias y un saludo

No me funciona (12/11/2003)

Por
No me funciona el metodo Opentextfile, ni el createtextfile, no se a que es debido, si hubiera alguien que lo supiera por favor me lo comunique, gracias.

Include con funciones (16/09/2003)

Por
Estoy creando una pagina que llama a diferentes include pero no me muestra bien las paginas porque tienen conexiones a base de datos ....(con el FSO no me funciona)... existe alguna forma de hacer esto?
Saludos (PLS es urgente)
 
Tienda
Patrocinados
 

Copyright © 1999-2007 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad

Hospedaje web y servidores dedicados linux por Ferca Network

red internet: musica mp3 | logos y melodias | hospedaje web linux | registro de dominios | servidores dedicados
más internet: comprar | recursos gratis | posicionamiento en buscadores | tienda virtual | gifs animados