| Programaci�n: ASP: Programaci�n |
Declaraci�n del lenguaje
Como ocurre en otros lenguajes de programaci�n, en ASP existe una sentencia de
declaraci�n opcional del lenguaje a utilizar.
<%@ LANGUAGE="VBScript" %>
Esta declaraci�n se pone al principio del
archivo, antes de cualquier otra expresi�n.
Bloques de c�digo y Comentarios
En p�ginas ASP, para introducir bloques de sentencias hay que escribir los s�mbolos
reservados:
<% {sentencias} %>
Donde sentencias pueden ser una o varias
expresiones del lenguaje, como se muestra en el siguiente ejemplo:
<%
Request("param")
Response.Write(Now)
while not cond do
rem do nothing
loop
%>
En este punto queremos llamar la atenci�n del lector sobre el hecho de que las sentencias
en VBScript no se separan por punto y coma (;).
Los comentarios de c�digo VBScript se especifican mediante la palabra reservada rem o con
el car�cter comilla simple (') y tienen un �mbito de una l�nea. Por ejemplo:
<%
rem Esto es un comentario
' que ocupa varias
rem l�neas
%>
Y este es un comentario mal constru�do:
<%
rem Esto es un comentario
pero esto ya no lo es, as� que el procesador de ASP
lo interpretar� como c�digo, y dar� error
%>
Forma de una p�gina ASP
Para ir abriendo boca, vamos a ver a continuaci�n, que aspecto tiene un archivo de texto
que contiene c�digo ASP y que genera como salida, un documento HTML, es decir, una
p�gina Web.
<%@ LANGUAGE="VBScript" %>
<%
rem Declaraci�n de variables y funciones a realizar antes de visualizar el documento
rem como por ejemplo, inicializar drivers de bases de datos, o redireccionar a
rem otros documentos
%>
<HTML>
<HEAD>
<TITLE>Título...</TITLE>
</HEAD>
<BODY>
<%
rem Este texto se ve en el documento cuando lo abrimos
Response.Write("Esto es texto simple<BR>")
Response.Write("<B>En el que también puedo introducir etiquetas
HTML</B><BR>")
%>
<I>Adem´s es posible mezclar bloques ASP con etiquetas de
HTML</I><BR>
<%
Response.Write("Aunque este es todavía un ejemplo muy
sencillo<BR>")
Response.Write("y con ninguna interactividad...")
%>
</BODY>
</HTML>
Entrada y Salida
Response
Como su nombre indica, la sentencia Response sirve para enviar respuestas (informaci�n de
salida) al documento HTML que se visualizar� en el navegador, para redireccionar a otros
recursos, etc.
Response.Write
Como sabemos para escribir texto en el documento que se pretende visualizar hay que
escribir:
<%
Response.Write({cadena})
%>
Una cadena es cualquier combinaci�n de caracteres ASCII, quitando la comilla doble. Si
queremos que aparezca este s�mbolo debemos introducirla dos veces (""). Veamos
algunos ejemplos:
<%@ LANGUAGE="VBScript" %>
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<%
Response.Write("Esta página genera todas las etiquetas de un
documento<BR>")
Response.Write("HTML normal y corriente...")
%>
</BODY>
<HTML>
Si adem�s queremos escribir el valor de alguna variable:
<%@ LANGUAGE="VBScript" %>
<%
hoy = Date
%>
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<%
Response.Write("Hoy es:" & hoy)
%>
</BODY>
<HTML>
Response.Redirect
En ocasiones puede ser �til tener una p�gina que tras un determinado tratamiento de
alg�n dato obtenido del cliente, llame a otra p�gina, o simplemente como m�todo de
actualizaci�n de enlaces antiguos. En cualquiera de estos casos se utiliza la sentencia
Response.Redirect:
<%@ LANGUAGE="VBScript" %>
<%
rem Este enlace ha quedado obsoleto, redireccionar a...
Response.Redirect("http://www.w3.org/Style/")
rem Todo lo que hay por debajo de este punto: etiquetas HTML, c�digo ASP
rem no llega a ser interpretado por el procesador de ASP jam�s
%>
La utilidad del c�digo queda patente si tenemos en cuenta que con la dinamicidad de la
red, frecuentemente se dan modificaciones en las localizaciones de los recursos. Veamos
ahora ejemplo de redireccionamiento para tratamiento de datos, y de paso anticipamos algo
de lo que veremos en el siguiente punto:
<%@ LANGUAGE="VBScript" %>
<%
opcion = Request("param_opcion")
Select Case opcion
Case 1: Response.Redirect("pag1.html")
Case 2: Response.Redirect("pag2.html")
Case 3: Response.Redirect("pag3.html")
End Select
%>
Request
La sentencia Request tiene como misi�n obtener los valores de los par�metros que pueden
pas�rseles a las p�ginas ASP. La forma de pasar pares atributo-valor (par�metro-valor)
es la siguiente:
<%@ LANGUAGE="VBScript" %>
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<!-- A continuaci�n hay un enlace a una p�gina ASP con par�metros -->
<A
HREF="guardar.asp?nombre=Jose&apellidos=Garcia%20Perez&dni=12345678">Guardar
Datos</A>
</BODY>
</HTML>
Donde podemos apreciar que con los datos introducidos por el cliente (en un formulario, o
por otros medios), llamamos a una p�gina de tratamiento de esos datos. Los par�metros
que se pasan son:
Nombre: Par�metro Valor
nombre: Jose
apellidos: Garcia Perez
dni: 12345678
Los car�cteres %20 que muestra el ejemplo entre los apellidos hacen referencia al
caracter espacio en codificaci�n UTP.
Tambi�n es posible pasar par�metros a otra p�gina a partir de campos de un formulario.
En este caso, los nombres de los par�metros vienen dados por los nombres que hay que
asignar a dichos campos, y la p�gina que los trata o recoge se especifica con el atributo
ACTION de la etiqueta FORM.
<%@ LANGUAGE="VBScript" %>
<HTML>
<HEAD>
<TITLE><TITLE>
</HEAD>
<BODY>
<FORM METHOD="POST" ACTION="guardar.asp">
<INPUT TYPE="TEXT" NAME="nombre">
<INPUT TYPE="TEXT" NAME="apellidos">
<INPUT TYPE="TEXT" NAME="dni">
<INPUT TYPE="SUBMIT">
</FORM>
</BODY>
</HTML>
Con este c�digo el procesador de ASP se encarga de construir internamente una llamada
igual a la vista en el ejemplo anterior. La manera general de especificar la llamada a una
p�gina con par�metros, por lo tanto, es:
{nombre_pagina}.asp?{nom_var1}={valor1}[&{nom_var2}={valor2}...]
Lo que est� encerrado entre llaves puede ser pr�cticamente, cualquier cadena v�lida de
caracteres y lo que est� escrito en negrita debe aparecer tal como est�.
Bases de datos
Declarar el driver de base de datos
Sin duda alguna, lo m�s importante que hay que saber respecto al manejo de bases de datos
en ASP (presupuestos unos ligeros conocimientos en SQL y Access), es la inicializaci�n
del driver de base de datos. Existen dos maneras de hacerlo, a saber:
La primera consiste en declarar un DSN de Sistema a trav�s de ODBC. Para ello iremos al
bot�n Inicio de nuestro sistema Windows, y desde all� a la opci�n Configuraci�n y
despu�s a Panel de Control. En la ventana que aparece debemos dirigirnos a ODBC (o a ODBC
de 32 bits, seg�n el sistema), y se nos abrir� una nueva ventana con una serie de
solapas. Nos vamos a DSN de sistema.
En este punto vamos a a�adir nuestro nuevo DSN para la base de datos que queremos tratar.
Para ello seleccionamos en bot�n Agregar. Se abre una ventana que lleva por t�tulo Crear
un nuevo origen de datos en el que se nos muestran los drivers de base de datos
disponibles en nuestro sistema. Seleccionamos el deseado, en nuestro caso Microsoft Access
Driver y pulsamos Finalizar.
Hecho esto se abre una nueva ventana, de nombre ODBC Microsoft Access 97 Setup. En el
campo Data Source Name debemos escribir el identificador que emplearemos para la base de
datos (si por ejemplo se trata de una base de datos de libros cuyo archivo se llama
biblio.mdb, podr�amos llamarla libros). Luego presionamos el bot�n Select para
seleccionar el archivo de base de datos dentro de la jerarqu�a de directorios del
sistema, y tras esto pulsamos Ok. Y ya podremos hacer referencia a ese origen de datos
desde nuestras p�ginas.
Esta primera opci�n es muy r�pida de configurara, sin embargo, es muy frecuente
desarrollar las p�ginas en una m�quina y ponerlas en otra (un servidor propiamente
dicho), por lo que resulta lioso tener un DSN para cada base de datos del sistema.
La segunda es un poco m�s pesada, por el hecho de que hay que incluir una serie de
l�neas de c�digo en cada p�gina que haga uso de la base de datos, pero es mucho m�s
flexible, puesto que si cambiamos de sistema, no debemos crear un nuevo DSN.
La declaraci�n del driver debe hacerse antes de que se escriba algo en el documento HTML
de salida, y es tan simple como esto:
<%@ LANGUAGE="VBScript" %>
<%
' Declaramos el objeto de conexi�n a la base de datos
Set ConexionBD = Server.CreateObject("ADOdb.Connection")
' Abrimos el objeto con el driver espec�fico
ConexionBD.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " &
"DBQ=" & Server.Mappath("/ruta/bd.mdb")
%>
<HTML>
Vemos que en la sentencia ConexionBD.Open, en
la parte DBQ=" tenemos lo siguiente Server.Mappath(), que es una variable que
devuelve la ruta local del directorio ra�z del servidor Web, y el par�metro que le
pasamos hace referencia a la situaci�n de la base de datos dentro de la jerarqu�a del
servidor. Veamos el siguiente ejemplo.
Si tenemos nuestro servidor Web (http://127.0.0.1 � localhost) en un directorio del
sistema denominado C:\Inetpub, y nuestra base de datos estar� en
C:\Inetpub\biblioteca\libros.mdb, en Server.Mappath deberemos indicar lo siguiente:
ConexionBD.Open "DRIVER={Microsoft Access
Driver (*.mdb)}; " & "DBQ=" &
Server.Mappath("/biblioteca/libros.mdb")
Atenci�n, cuando nos referimos al sistema de directorios local utilizamos la barra (\)
para separar los directorios, pero cuando hacemos referencia al servidor, se separan con
el otro tipo de barra (/).
Con esto hemos cumplido con el primer paso, definir el driver para utilizar la base de
datos, pero todav�a no podemos realizar ninguna consulta ni modificaci�n. Para ello
tenemos que definir lo que en Basic se conoce como RecordSet, que no es m�s que una
agrupaci�n l�gica de registros (algo parecido a una variable de tabla l�gica).
Realizar operaciones con la base de datos
Para ver qu� es un RecordSet y para que sirve volvamos otra vez al ejemplo:
<%@ LANGUAGE="VBScript" %>
<%
' Declaramos el objeto de conexi�n a la base de datos
Set ConexionBD = Server.CreateObject("ADOdb.Connection")
' Abrimos el objeto con el driver espec�fico
ConexionBD.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " &
"DBQ=" & Server.Mappath("/biblioteca/libros.mdb")
Set RS = ConexionBD.Execute("select * from libros")
%>
<HTML>
Con esto conseguimos que el objeto RS
(RecordSet) est� enlazado con el resultado de una consulta de la tabla libros de la base
de datos libros.mdb, es decir, que contenga los valores, de alguna manera.
Pero todav�a no tenemos resultados visibles de que la operaci�n se haya completado con
�xito. Si hemos fallado en algo, en cambio, es muy probable que tengamos una poco
prometedora p�gina en nuestro visualizador con alg�n tipo de error. Mas seamos
optimistas, si ponemos el c�digo de arriba con algunos aditamentos podremos observar los
datos de esa base de datos, en el navegador y en tiempo real.
<%@ LANGUAGE="VBScript" %>
<%
' Declaramos el objeto de conexi�n a la base de datos
Set ConexionBD = Server.CreateObject("ADOdb.Connection")
' Abrimos el objeto con el driver espec�fico
ConexionBD.Open "DRIVER={Microsoft Access Driver (*.mdb)}; " &
"DBQ=" & Server.Mappath("/biblioteca/libros.mdb")
Set RS = ConexionBD.Execute("select * from libros")
%>
<HTML>
<HEAD>
<TITLE>Consulta de Libros</TITLE>
</HEAD>
<BODY>
<%
' Como la bd no est� vac�a hacemos un tratamiento hasta que no queden registros...
Do while not RS.EOF
' Escribimos en la salida los datos que nos interesa
Response.Write("<P>Título: " & RS("titulo") &
"<BR>")
Response.Write("Autor: " & RS("autor") &
"</P>")
' nos movemos al siguiente registro
RS.MoveNext
Loop
%>
</BODY>
</HTML>
Tutorial escrito por Jaime Sagarduy Barrena
http://webtech.metropoli2000.com/