Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Objetivos generales
Requisitos
Contenidos
Unidad 3: Formularios
Introducción
Como funcionan
Campos
Mezclamos formularios con JavaScript
Consejos para el armado de Formularios
Propuesta Metodológica
Usted deberá leer los temas antes del encuentro presencial, anotando sus dudas para
solicitar del profesor las explicaciones pertinentes.
Realizaremos ejercicios que no forman parte de este módulo, o algún ejercicio de éste
que presente dificultades en su resolución.
Evaluación
Deberá aprobarse el 60% del examen o práctico realizado
Deberá tener 80% de asistencias.
Se tomarán 2 parciales y 1 trabajo práctico.
Objetivos Generales
Introducción
Muy probablemente, estés familiarizado con el lenguaje HTML y con toda seguridad
hayas desarrollado algún sitio basado en esta herramienta. En realidad el HTML no es
lenguaje de programación sino, más bien, se trata de un lenguaje descriptivo que tiene
como objeto dar formato al texto y las imágenes que pretendemos visualizar en el
navegador.
Es esta deficiencia del HTML la que ha hecho necesario el empleo de otros lenguajes
accesorios mucho más versátiles y de un aprendizaje relativamente más complicado,
capaces de responder de manera inteligente a las demandas del navegador y que
permiten la automatización de determinadas.
Estas páginas son muy sencillas de crear, aunque ofrecen pocas ventajas tanto a los
desarrolladores como a los visitantes, ya que sólo se pueden presentar textos planos
acompañados de imágenes y a lo sumo contenidos multimedia como pueden ser videos
o sonidos
Este código HTML puede ser modificado -por ejemplo- en función de una petición
realizada por el usuario en una Base de Datos. Dependiendo de los resultados de la
consulta en la Base de Datos, se generará un código HTML u otro, mostrando diferentes
contenidos.
* Las Hojas de Estilo, para controlar los atributos de presentación de cada elemento de
una página.
* El DOM (Document Object Model) es una especificación que permite describir la
estructura y composición de una página, sin hacer referencia a su contenido. Permite
alterar determinados aspectos de la presentación de una página, accediendo a una
jerarquía de objetos que se crea a partir de los diferentes elementos HTML de la página.
Puede ser utilizado desde otro lenguaje de macros, Java, plug-ins o ActiveX, por poner
ejemplos ya conocidos.
* Las Capas (Layers) permiten crear documentos HTML solapados; para ello, se define
una sección rectangular, caracterizada en un sistema de coordenadas tridimensionales, y
se añade código HTML a la misma. De esta forma, se dispone de la capacidad de
colocar y mover elementos por la pantalla del browser.
* Lenguajes de macros, como JavaScript o VisualBasic Script, que tienen capacidad de
modificar el DOM, y con ello el contenido y presentación de la página.
Solo nos vamos a enfocar en los aspectos que hacen a la programación y sus puntos
mas importantes. La practica con Estilos la realizamos en el pasado cuatrimestre ya
que hace mas al diseño y armado de los documentos HTML, ante cualquier duda
refiéranse al anterior material.
Las hojas de estilo en cascada (Cascading Style Sheets, CSS) son un lenguaje formal
usado para definir la presentación de un documento estructurado escrito en HTML o
XML (y por extensión en XHTML). El W3C (World Wide Web Consortium) es el
encargado de formular la especificación de las hojas de estilo que servirá de estándar
para los agentes de usuario o navegadores.
Hay varias versiones : CSS1 y CSS2, con CSS3 en desarrollo por el World Wide Web
Consortium (W3C). Los navegadores modernos implementan CSS1 bastante bien,
aunque existen pequeñas diferencias de implementación según marcas y versiones de
los navegadores¹. CSS2, sin embargo, está solo parcialmente implentado en los más
recientes.
Ejemplo.html
Estilo_Ejemplo.css
El DOM de DHTML
Actualmente, el DOM implementado en MSIE 4
es más completo que el propuesto por Netscape. El
nuevo DOM de MS es accesible con JavaScript y
VBScript e incluye el objeto "all", que representa
el conjunto de todos los elementos de una página.
En la versión puesta a punto por Netscape, los
eventos quedan limitados a objetos específicos,
mientras que Microsoft abre los elementos de una
página a todos los eventos, lo que permite el
acceso a todos los atributos de un elemento,
incluidos color, fondo y fuente.
El objeto de primer nivel es "window", el cual, a su vez, contiene el objeto "document". El objeto
"window" expone la información relativa al documento y al actual URL, así como a los URL
visitados. Como los documentos HTML tradicionales, los FRAMESET se exponen mediante el
elemento "document", pero a diferencia de los primeros subdividen la pantalla en varios
marcos. Esta peculiaridad hace que cada FRAMESET sea expuesto como otro objeto
"window".
<HTML><HEAD>
<TITLE>Texto elástico</TITLE>
<STYLE TYPE="text/css">
</STYLE>
<SCRIPT LANGUAGE="JavaScript">
function rubberBand() {
var el = document.all.elastic;
if (null == el.direction)
el.direction = 1;
(0 == sizes.pos))
el.direction *= -1;
</SCRIPT>
</HEAD>
ONUNLOAD="clearInterval(window.tm);">
</BODY>
</HTML>
A continuación veremos un sencillo script de cliente escrito en JS. Este script permite al
usuario hacer clic en un boton para mostrar un mensaje en un cuadro de dialogo.
El código define un elemento HTML <FORM> con el nombre myform. En este ejemplo
usamos el elemento <FORM> porque queremos que la página sea soportada por todos
los navegadores.
El código dentro de las marcas <SCRIPT></SCRIPT> se activará una vez que el cliente
haga clic en el botón que mediante la directiva OnClick=MostrarMensaje() provoca que
se ejecute el script.
JavaScript
Historia
El lenguaje fue inventado por Brendan Eich en la empresa Netscape Communications,
que es la que fabricó los primeros navegadores de Internet comerciales.
Apareció por primera vez en el producto de Netscape llamado Netscape Navigator 2.0.
¿Que es?
Javascript es el siguiente paso, después del HTML, que puede dar un programador de la
web que decida mejorar sus páginas y la potencia de sus proyectos. Es un lenguaje de
programación bastante sencillo y pensado para hacer las cosas con rapidez, a veces con
ligereza. Incluso las personas que no tengan una experiencia previa en la programación
podrán aprender este lenguaje con facilidad y utilizarlo en toda su potencia con sólo un
poco de práctica.
Versiones
* Javascript 1.2: La versión de los navegadores 4.0. Esta tiene como desventaja que
es un poco distinta en plataformas Microsoft y Netscape, ya que ambos navegadores
crecieron de distinto modo y estaban en plena lucha por el mercado.
* Javascript 1.3: Versión que implementan los navegadores 5.0. En esta versión se
han limado algunas diferencias y asperezas entre los dos navegadores.
Las acciones que queremos realizar como respuesta a un evento se han de indicar dentro
del mismo código HTML, pero en este caso se indican en atributos HTML que se
colocan dentro de la etiqueta que queremos que responda a las acciones del usuario. Ver
EVENTOS.
Sintaxis
El lenguaje Javascript tiene una sintaxis muy parecida a la de Java por estar basado en
él. También es muy parecida a la del lenguaje C.
Comentarios
Existen dos tipos de comentarios en el lenguaje. Uno de ellos, la doble barra, sirve para
comentar una línea de código. El otro comentario lo podemos utilizar para comentar
varias líneas y se indica con los signos /* para empezar el comentario y */ para
terminarlo. Veamos unos ejemplos.
<SCRIPT>
//Este es un comentario de una línea
/*Este comentario se puede extender
por varias líneas.
Las que quieras*/
</SCRIPT>
Mayúsculas y minúsculas
Separación de instrucciones
Por esta razón Las sentencias Javascript no necesitan acabar en punto y coma a no ser
que coloquemos dos instrucciones en la misma línea.
Eventos
Se llaman eventos a acciones que ocurren cuando un usuario ejecuta algún tipo de
acción. Los manipuladores de eventos se incorporan en los documentos como atributos
de etiquetas HTML. Por ejemplo:
Manipulador
Evento Se da cuando
de evento
El usuario retira el foco de entrada del elemento
blur onBlur
form
El usuario pulsa el ratón sobre el elemento form o
click onClick
sobre un enlace
El usuario modifica el valor del texto, de un área
change onChange
del texto, o selecciona un elemento
El usuario sitúa el foco de entrada en el elemento
focus onFocus
form
load El usuario carga la página en el Navigator onLoad
El usuario mueve el puntero del ratón sobre un
mouseover onMouseOver
enlace
El usuario selecciona elementos form como campo
select onSelect
de entrada (input)
submit El usuario envia un formulario onSubmit
unload El usuario abandona la página onUnload
Mas Información
El World Wide Web Consortium, abreviado W3C, es una organización que produce
estándares para la World Wide Web, en su sitio encontraremos todas las definiciones
originales de cada lenguaje.
Introducción
Ahora vamos a repasar algunos lenguajes y tecnologías web dinámicas que han surgido:
ASP
PERL
PHP
Cold Fusion
JSP / JavaServlets
Extenciones de FrontPage
Con estos últimos tuvimos alguna practicas ya y en esta ocasión nos vamos a centrar en
los lenguajes del lado del servidor.
Hace unos años surgió una interfaz llamada CGI (Common Gateway Interface), cuya
misión era servir de pasarela entre la WEB y otros lenguajes no preparados para ella,
como C, C++, Pascal y Perl. El mas flexible y utilizado fue Perl, ya que tiene
funcionalidades especiales para realizar un mejor manejo de nuestras aplicaciones en la
web. Pero CGI, con el tiempo, comenzó a perder fuerza ante otros lenguajes de script
como ASP o PHP. La principal diferencia entre un script y un programa ejecutable es
que el primero se interpreta en el momento de ejecutarse, es decir, siempre esta el
codigo fuente visible por el servidor y nunca existen los ejecutables compilados (los
clasicos archivos .exe de DOS y Windows).
A nosotros nos interesa el lenguaje de script ASP que es el que vamos a abordar, pero
primero le daremos un repaso muy pequeño a otros lenguajes y tecnologías disponibles,
recuerden que podemos hacer uso de todas las que pudiéramos necesitar en un proyecto.
Perl
PHP
El lenguaje PHP es un lenguaje de programación de estilo clásico, con esto quiero decir
que es un lenguaje de programación con variables, sentencias condicionales, bucles,
funciones.... No es un lenguaje de marcas como podría ser HTML, XML o WML.
PHP se ejecuta en el servidor, por eso nos permite acceder a los recursos que tenga el
servidor como por ejemplo podría ser una base de datos. El programa PHP es ejecutado
en el servidor y el resultado enviado al navegador. El resultado es normalmente una
página HTML pero igualmente podría ser una pagina WML.
El modelo PHP puede ser visto como una alternativa al sistema de Microsoft que utiliza
ASP.NET/C#/VB.NET, a ColdFusion de la compañía Macromedia, a JSP/Java de Sun
Microsystems, y al famoso CGI/Perl. Aunque su creación y desarrollo se da en el
ámbito de los sistemas libres, bajo la licencia GNU, existe además un compilador
comercial llamado Zend Optimizer.
Cold Fusion
ColdFusion fue desarrollado por Allaire Corporation para ser una alternativa poderosa y
simple de usar a Perl y otras tecnologías CGI.
ColdFusion es una herramienta que corre en forma concurrente con la mayoría de los
servidores web de Windows, Linux y Solaris (también en servidores web personales en
Windows 98 y puede ser usado para intranets). El servidor de aplicaciones web de
ColdFusion trabaja con el servidor HTTP para procesar peticiones de páginas web.
Cada vez que se solicita una página de ColdFusion, el servidor de aplicaciones
ColdFusion ejecuta el script o programa contenido en la página.
JSP / JavaServlets
JavaServer Pages (JSP) es la tecnología para generar páginas web de forma dinámica en
el servidor, desarrollado por Sun Microsystems, basado en scripts que utilizan una
variante del lenguaje java.
La tecnología JSP, o de JavaServer Pages, es una tecnología Java que permite a los
programadores generar dinámicamente HTML, XML o algún otro tipo de página web.
Esta tecnología permite al código Java y a algunas acciones predefinidas ser embebidas
en el contenido estático. En las jsp, se escribe el texto que va a ser devuelto en la salida
(normalmente código HTML) incluyendo código java dentro de él para poder modificar
o generar contenido dinámicamente. El código java se incluye dentro de las marcas de
etiqueta <% y %>.
La principal ventaja de JSP frente a otros lenguajes es que permite integrarse con clases
Java (.class) lo que permite separar en niveles las aplicaciones web, almacenando en
clases java las partes que consumen más recursos así como las que requieren más
seguridad, y dejando la parte encargada de formatear el documento html en el archivo
jsp.
Además Java se caracteriza por ser un lenguaje que puede ejecutarse en cualquier
sistema, lo que sumado a jsp le da mucha versatilidad.
Sin embargo JSP no se puede considerar un script al 100% ya que antes de ejecutarse el
servidor web compila el script y genera un servlet, por lo tanto se puede decir que
aunque este proceso sea transparente para el programador no deja de ser una aplicación
compilada. La ventaja de esto es algo más de rapidez y disponer del API de Java en su
totalidad.
Debido a esto la tecnología JSP, así como Java está teniendo mucho peso en el
desarrollo web profesional (sobre todo en intranets).
Extenciones de FrontPage
Las extensiones de Frontpage son, por ejemplo, contadores, formularios que realizan
pequeñas tareas automáticamente o ayudas para la publicación de la web. En definitiva,
son pequeños scripts de servidor para hacernos la vida más sencilla o ampliar las
funcionalidades de nuestras páginas.
Las tareas de publicación de la web se refiere a una manera muy cómoda de trabajar
directamente con el servidor de alojamiento por la que a medida que vamos
construyendo la página esta se va actualizando directamente en el servidor web, de
modo que no tendremos que realizar acción alguna para publicar nuestro trabajo una vez
realizado sino que ya estará publicado en Internet y accesible a todos los usuarios.
Java Applets
Una Java applet es una applet escrita en el lenguaje de programación Java. Los applets
de Java pueden correr en un navegador web utilizando la Java virtual machine (JVM), o
en el AppletViewer de Sun.
Entre sus características podemos mencionar un esquema de seguridad que permite que
los applets que se ejecutan en el equipo no tengan acceso a partes sensibles (por ej. no
pueden escribir archivos), a excepción de que uno mismo le dé los permisos necesarios
en el sistema; la desventaja de este enfoque es que la entrega de permisos es engorrosa
para el usuario común, lo cual juega en contra de uno de los objetivos del mismo:
entregar una forma fácil de ejecutar aplicaciones ricas desde el navegador web.
ActiveX
Los ActiveX se añaden a las paginas Web utilizando la etiqueta <OBJECT> que
permite que el navegador identifique el componente. Dentro de esta etiqueta se pueden
ingresar todas las propiedades y caracteristicas necesarias para el funcionamiento del
control.
XML
Es una versión simple de SGML. Su objetivo principal es conseguir una página web
más semántica. Aunque una de las principales funciones con las que nace sería suceder
al HTML, separando la estructura del contenido y permitiendo el desarrollo de
vocabularios modulares, compatibles con cierta unidad y simplicidad del lenguaje
(objetivo que se viene desarrollando a través de la especificación XHTML), tiene otras
aplicaciones entre las que destaca su uso como estándar para el intercambio de datos
entre diversas aplicaciones o software con lenguajes privados como en el caso del
SOAP.
Al igual que el HTML, se basa en documentos de texto plano en los que se utilizan
etiquetas para delimitar los elementos de un documento. Sin embargo, XML define
estas etiquetas en función del tipo de datos que está describiendo y no de la apariencia
final que tendrán en pantalla o en la copia impresa, además de permitir definir nuevas
etiquetas y ampliar las existentes.
ASP
Active Server Pages (ASP) es una tecnología del lado servidor de Microsoft para
páginas web generadas dinámicamente, que ha sido comercializada como un anexo a
Internet Information Server (IIS).
ASP ha pasado por cuatro iteraciones mayores, ASP 1.0 (distribuido con IIS 3.0), ASP
2.0 (distribuido con IIS 4.0), ASP 3.0 (distribuido con IIS 5.0) y ASP.NET (parte de la
plataforma .NET de Microsoft). Las versiones pre-.NET se denominan actualmente
(desde 2002) como ASP clásico.
En el último ASP clásico, ASP 3.0, hay seis objetos integrados disponibles para el
programador, Application, ASPError, Request, Response, Server y Session. Cada objeto
corresponde a un grupo de funcionalidades frecuentemente usadas y útiles para crear
páginas web dinámicas.
Las páginas pueden ser generadas mezclando código de scripts del lado del servidor
(incluyendo acceso a base de datos) con HTML y código del lado del servidor.
UNIDAD 3
Formularios
Hemos visto anteriormente que podíamos, mediante los enlaces, contactar directamente
con un correo electrónico. Sin embargo, esta opción puede resultar en algunos casos
poco versátil si lo que deseamos es que el navegante nos envíe una información bien
precisa. Es por ello que el HTML propone otra solución mucho más amplia: Los
formularios.
Los formularios son esas famosas cajas de texto y botones que podemos encontrar en
muchas páginas web. Son muy utilizados para realizar búsquedas o bien para introducir
datos personales por ejemplo en sitios de comercio electrónico. Los datos que el usuario
introduce en estos campos son enviados al correo electrónico del administrador del
formulario o bien a un programa que se encarga de procesarlo automáticamente.
Ventajas
Las ventajas de un formulario con respecto a una dirección de correo pueden ser:
Como funcionan
Los formularios son definidos por medio de las etiquetas <form> y </form>. Entre estas
dos etiquetas colocaremos todos los campos y botones que componen el formulario.
Dentro de esta etiqueta <form> debemos especificar algunos atributos:
action
Define el tipo de acción a llevar a cabo con el formulario. Como ya hemos dicho,
existen dos posibilidades:
method
GET y POST son dos métodos empleados para enviar los datos de los formularios desde
el navegador al servidor Web, especificados mediante la directiva METHOD. La
principal diferencia entre POST y GET es que el CGI recibirá los datos enviados con
POST leyendo la entrada estándar, mientras que los enviados con GET se recibirán por
líneas de comandos y la variable de entorno QUERY_STRING. Desde un punto de
vista puramente práctico, debido a que muchos sistemas operativos ponen límite a la
longitud de la línea de comandos, suele ser mejor usar POST, reservando GET para
formularios con pocos datos.
enctype
Se utiliza para indicar la forma en la que viajará la información que se mande por el
formulario. En el caso más corriente, enviar el formulario por correo electrónico, el
valor de este atributo debe de ser "text/plain". Así conseguimos que se envíe el
contenido del formulario como texto plano dentro del email.
Así, para el caso más habitual -el envío del formulario por correo- la etiqueta de
creación del formulario tendrá el siguiente aspecto:
<form action="mailto:direccion@correo.com (o nombre del archivo de proceso)"
method="post" enctype="text/plain">
Entre esta etiqueta y su cierre colocaremos el resto de etiquetas que darán forma a
nuestro formulario, las cuales serán vistas en capítulos siguientes.
Campos
Campos de texto
Se utiliza la etiqueta <INPUT> de esta manera:
<INPUT TYPE="text" NAME="nombre_del_campo" SIZE=10>
El atributo TYPE indica que es un campo de texto. NAME es el nombre del campo,
tiene que describir lo que hay dentro. SIZE te permite ajustar el tamaño del campo.
La etiqueta NO tiene cierre con </INPUT>
Areas de texto
Botón de envío
Listas de selección
EN TYPE le pusimos RADIO para definer las opciones, en VALUE el valor para cada
opcion. Recuerde que siempre debemos poner un mismo nombre de NAME para que
funcionen como botones de opcion de una misma selección, de lo contrario serán
botones sueltos.
Botones Ocultos
La unica diferencia con un campo de texto es que definimos TYPE como HIDDEN, este
tipo de campos tiene multiples utilidades.
Lo que hicimos en este ejemplo fue definir el tipo de boton como BUTTON ya que si
eligieramos la propiedad SUBMIT enviaria el forumario sin pasar por la comprobación
de JavaScript.
Aquí volvemos a invocar la función Submit1() pero el boton de envio quedaria asi:
Agregamos otro evento en la etiqueta FORM y le decimos que una vez que se envie el
formulario pase por la función de JavaScript para ser comprobado.
Con ambas formas logramos lo mismo, pero son dos buenos ejemplos de cómo existen
varias formas de trabajar.
Por ejemplo:
Correo electronico = nombre de usuario.
DNI = password.
B. Evita formalidades
Ejemplos de campos que no son realmente necesarios:
Tratamiento (Don, Sr., Sra.,)
Tipo de Via (Calle, Camino, ...)
Fecha de nacimiento (es esto realmente necesario?, si lo es, indica para que lo
estas pidiendo)
En la mayoria de los casos es mas rapido escribir el texto que buscarlo en un combo.
Escribir la palabra "España" puede llevar entre 1 y 2 segundos mas o menos, elegirla en
un combo donde podemos encontar todos los paises del mundo puede llevar un
promedio de 4 y 6 segundos. Si usamos el truco de preseleccionar el pais en el combo,
tambien podemos pre-escribir la palabra en el campo de texto.
El unico caso en el que el uso de combos esta justificado es en aquellos en los que la
respuesta esta predefinida tipo rangos, valoraciones subjetivas, marcas, etc... pero no lo
uses para paises, provincias, números, etc...
Luego quizás quede destacar el caso de algunos bancos donde el campo "profesión"
obliga al usuario a elegir una opción de la lista que el banco dispone, haciendo uso de
un buscador, códigos de profesión, etc, etc... Realmente no es recomendable. El
beneficio que pueda dar esta información frente al fastidio que produce al usuario no
tiene equivalencia.
UNIDAD 4
ASP
ASP son las siglas de Active Server Pages y es un entorno creado por Microsoft
pensado para ejecutar aplicaciones dinámicas en servidores web.
</BODY>
</HTML>
Intercalando Scripts
Dentro de una pagina ASP se puede intercalar porciones de codigo sin problemas,
recuerden que se ejecutara en forma lineal. Veamos el ejemplo anterior pero de forma
intercalada.
</BODY>
</HTML>
Fundamentos de VBScript
En unos de los ejemplos anteriores dijimos que estabamos utilizando una funcion de
VBScript, este es uno de los lenguajes mas difundidos en el ambiente WEB junto con
JavaScript y al igual que este se puede utilizar tanto para crear scripts del lado del
servidor como del lado del cliente, en unidades anteriores habiamos aprendido que para
los scripts del lado del cliente usaríamos JavaScript ya que tiene mayor soporte en la
mayoria de los navegadores.
Ahora vamos a trabajar con scripts del lado del servidor y nuestras prácticas en ASP las
vamos a realizar utilizando VBScript.
¿Qué es?
VBScript es un subconjunto de Visual Basic, esto quiere decir que comparte una gran
cantidad de funciones con este lenguaje y su lógica es casi idéntica, pero hay algunas
diferencias:
Variables
Como ya vimos, VBSCript solo soporta un tipo de variable, el Variant, que es un tipo de
dato especial y representa a todos y cada uno de los tipos de datos conocidos. De esta
forma, podemos usar Variant para representar una cadena, enteros, objetos, etc.
Aunque solo existe un tipo de datos, podemos hacer distinciones mas precisas acerca de
la naturaleza de la información a travez de los subtipos incluidos en el tipo Variant,
ademas vbscript nos provee de funciones para convertir los tipos de datos de un tipo a
otro.
Subtipo Descripción
Empty Variable sin inicializar
Null Variable intencionadamente vacia
Boolean Dos valores posibles: True o False
Byte Entero entre 0 y 255
Integer Entero entre -32.768 y 32.768
Currency Numero entre -922.337.203.685.477,5808
y 922.337.203.685.477,5807
Long Numero entre -2.147.483.648 y
2.147.483.647
Single Numero de precision simple
Double Numero de precision doble
Date Fecha
String Cadena de longitud variable
Object Contiene un objeto
Error Contiene un numero de error
<% <%
v=1 Dim v
%> %>
Aquí creamos una variable y le dimos un Aquí definimos una variable, luego le
valor. deberíamos asignar algun valor.
Para asignarle valor a una variable se utiliza el signo igual (=), por ejemplo:
Dim v
v = 1 (aqui declaramos un numero)
V = ”hola, soy una cadena” (aquí declaramos una cadena de texto)
Conversión de Tipos
Var = 1
Cint(Var)
Concatenacion de cadenas
Comentarios
<%
‘ Esto es un comentario.
i=i+1
%>
Sentencias Condicionales
IF condición THEN
Instrucción 1
Instrucción 2
...
ELSE
Instrucción A
Instrucción B
...
END IF
Esta estructura de base puede complicarse un poco más si tenemos cuenta que no
necesariamente todo es blanco o negro y que muchas posibilidades pueden darse. Es por
ello que otras condiciones pueden plantearse dentro de la condición principal. Hablamos
por lo tanto de condiciones anidadas que tendrían una estructura del siguiente tipo:
IF condición THEN
Instrucción 1
Instrucción 2
...
ELSE
IF condición2 THEN
Instrucción A
Instrucción B
...
ELSE
Instrucción X
...
END IF
END IF
De este modo podríamos introducir tantas condiciones como queramos dentro de una
condición principal. En este tipo de estructuras es importante cerrar correctamente cada
uno de los IF con sus END IF correspondientes. De gran ayuda es la instrucción ELSE
IF que permite en una sola línea y sin necesidad de añadir un END IF introducir una
condición anidada.
Un ejemplo:
<html>
<head>
<title>Ejemplo de ASP</title>
</head>
<body>
<%
Dim a,b
a=8
b=3
if a < b then
Response.Write("a es menor que b")
else
Response.Write("a no es menor que b")
end if
%>
</body>
</html>
Con la sentencia select case podemos ejecutar unas u otras instrucciones dependiendo
del valor de una variable, en el ejemplo anterior, dependiendo del valor de la variable
posicion se ejecuta el bloque 1 cuando el valor es "arriba", el bloque 2 cuando el valor
es "abajo" y el bloque 3 si no es ninguno de los valores anteriores.
<html>
<head>
<title>Ejemplo de ASP</title>
</head>
<body>
<%
Dim posicion
posicion = "arriba"
Bucles
For…Next
La estructura clásica:
A partir de este tipo de estructuras ejecutamos las instrucciones contenidas entre el FOR
y el NEXT un cierto número de veces definido por el número inicial, final y el
incremento. El incremento resulta de 1 por defecto.
<html>
<head>
<title>Ejemplo de ASP</title>
</head>
<body>
Inicio<BR>
<%
Dim i
for i=0 to 9
Response.Write("El valor de i es " & i & "<br>")
next
%>
Final<BR>
</body>
</html>
While…Wend
Estos bucles son un vestigio de los primeros tiempos de BASIC. Hoy día han sido
sustituidos por los bucles DO WHILE ... LOOP, cuyo funcionamiento es idéntico. Sin
embargo, los intérpretes actuales todavía los soportan como complemento, por aquellos
programadores acostumbrados al modelo antiguo. Su estructura general es la siguiente:
WHILE (condición)
BLOQUE DE SENTENCIAS
WEND
<html>
<head>
<title>Ejemplo de ASP</title>
</head>
<body>
Inicio<BR>
<%
Dim i
i=0
while i<10
Response.Write("El valor de i es " & i & "<br>")
i=i+1
wend
%>
Final<BR>
</body>
</html>
Do While…Loop
DO WHILE condición
Instrucción 1
Instrucción 2
...
LOOP
Como se verá en ejemplos posteriores, este tipo de bucles resulta muy práctico para la
lectura de bases de datos.
Todo este tipo de controladores de flujo (condiciones y bucles) pueden ser matizados y
optimizados a partir del uso de operadores lógicos. Así, podemos exigir que sean dos las
condiciones que se den para llevar a cabo un conjunto de instrucciones:
Del mismo modo, es posible exigir que la condición de un bucle DO sea la inversa a la
enunciada:
<HTML>
<HEAD>
<TITLE>Prueba de DO WHILE ... LOOP</TITLE>
</HEAD>
<BODY>
<%
i = 0
DO WHILE i = 5
' Ejecuta mientras i no sea igual a 5
Response.Write i
i = i + 1
LOOP
%>
</BODY>
</HTML>
Do Until…Loop
Este bucle funciona de manera muy similar al anterior, con la salvedad de que el
BLOQUE DE INSTRUCCIONES se ejecuta hasta que (UNTIL) se cumple la
condición. Cuando se cumple la condición deja de ejecutarse el bucle. La estructura
general es la siguiente:
DO UNTIL (condición)
BLOQUE DE INSTRUCCIONES
LOOP
Como siempre, la mejor manera de entender el funcionamiento es con un ejemplo.
<HTML>
<HEAD>
<TITLE>Prueba de DO UNTIL ... LOOP</TITLE>
</HEAD>
<BODY>
<%
i = 0
DO UNTIL i = 5
' Ejecuta hasta que i sea igual a 5
Response.Write i
i = i + 1
LOOP
%>
</BODY>
</HTML>
Rompiendo Bucles
Objetos
El lenguaje VB propiamente dicho no da una solución fácil y directa a estas tareas sino
que invoca a los denominados objetos que no son más que unos módulos incorporados
al lenguaje que permiten el desarrollo de tareas específicas. Estos objetos realizan de
una manera sencilla toda una serie de acciones de una complejidad relevante. A partir
de una llamada al objeto este realizará la tarea requerida. En cierta forma, estos objetos
nos ahorran el tener que hacer largos programas para operaciones sencillas y habituales.
Algunos de estos objetos están incorporados en el propio ASP, otros deben de ser
incorporados como si se tratase de componentes accesorios. Por supuesto, no podríamos
ejecutar correctamente un script en el cual tuviésemos que llamar a un objeto que no
estuviese integrado en el servidor. Este tipo de "plug-in" son generalmente comprados
por el servidor a empresas que los desarrollan.
Como todo objeto del mundo real, los objetos del mundo informático tienen sus
propiedades que los definen, realizan un cierto numero de funciones o métodos y son
capaces de responder de una forma definible ante ciertos eventos.
Dado el nivel de esta obra, la descripción de la totalidad de objetos con sus métodos y
propiedades resulta ciertamente fuera de lugar. Nos contentaremos pues con ir
describiendo los más frecuentemente utilizados y ejemplificarlos de la manera más
práctica dejando la enumeración exhaustiva en forma de apéndice.
Objeto REQUEST
Este objeto encapsula la información que el cliente envia a un servidor dentro del
ambito de un intercambio a travez de Internet. Si bien el objeto REQUEST es propio de
IIS y ASP, la información que el navegador envia al servidor no lo es. El formato de
esta información existe desde hace tiempo y responde a lo determinado por el W3C bajo
la especificación CGI (lo vimos anteriormente).
El objeto Request nos devuelve informaciones del usuario que han sido enviadas por
medio de formularios, por URL o a partir de cookies. También nos informa sobre el
estado de ciertas variables del sistema como pueden ser la lengua utilizada por el
navegador, el número IP del cliente...
</BODY>
</HTML>
<HTML>
<HEAD>
<TITLE>formulario.asp</TITLE>
</HEAD>
<BODY>
<FORM METHOD="POST" ACTION="destino2.asp">
Nombre<br>
<INPUT TYPE="TEXT" NAME="nombre"><br>
Apellidos<br>
<INPUT TYPE="TEXT" NAME="apellidos"><br>
<INPUT TYPE="SUBMIT">
</FORM>
</BODY>
</HTML>
<HTML>
<HEAD>
<TITLE>destino2.asp</TITLE>
</HEAD>
<BODY>
Variable nombre: <%=Request.Form("nombre")%><br>
Variable apellidos: <%=Request.Form("apellidos")%>
</BODY>
</HTML>
Notemos que cambiando la propiedad del objeto obtenenos datos de diferentes formas.
Vimos que con REQUEST.QueryString obtenemos datos de una URL y con
REQUEST.Form de un formulario, pero podriamos utilizar el objeto sin propiedad y de
ese modo tomaria los datos de la forma que vengan.
Uso de ServerVariables
Esta colección contiene una gran cantidad de datos, algunos de ellos tan
interesantes como la dirección IP del visitante, del servidor, el nombre del servidor,
etc
ServerVariables forma parte del objeto Request, por lo cual para consultar estas
variables recurriremos a el.
Un ejemplo:
<%
Response.Write (Request.ServerVariables(“REMOTE_ADDR”))
%>
Con estas lineas imprimimos el IP del cliente que esta visitando la pagina.
servervar.asp
<html><body>
<table border=1>
<%for each name in request.servervariables%>
<tr><td>
<%=name%>
</td><td>
<%=request.servervariables(name)%>
</td></tr>
<%next%>
</table></body></html>
Objeto RESPONSE
Este es el metodo mas utilizado del objeto RESPONSE, mediante este metodo enviamos
cadenas al cliente que se imprimiran en la pantalla. Por ejemplo:
<%
Response.Write (“Hola, estoy imprimiendo en pantalla”)
%>
Tambien podemos enviar dentro de la cadena codigo HTML y sera representando por el
navegador, por ejemplo:
<%
Response.Write (“<b>Hola, estoy imprimiendo en pantalla</b>”)
%>
Si vamos a imprimir solo una linea tenemos la posibilidad de usar un truquito para no
tener que escribir el objeto y su propiedad completa, de este modo:
El signo “=” reemplaza a RESPONSE.Write, solo cuando se trata de una sola linea de
codigo.
Podemos usar valores devueltos por una funcion como parámetro de salida del metodo
Write del objeto RESPONSE. Por ejemplo, para devolver la hora actual, podemos
utilizar la funcion Time() de VBScript de este modo:
<%
Response.Write Time()
%>
El método Redirect permite al explorador que se conecte con una dirección URL
diferente. (Nota: debemos usar este método antes de enviar cualquier resultado al
navegador cliente, en caso contrario produce un error).
Ejemplo:
<%response.redirect "http://www.cervantes.edu.ar"%>
Objeto Session
Este objeto permite almacenar la información necesaria para una sesion de usuario en
nuestro sistema. Las variables almacenadas con este objeto no se pierden mientras el
usuario se mantenga en el sitio y el servidor no vacie la varible pasado el tiempo
definido para las varibles de session.
Sintaxis:
Session(“nombre_variable”) = valor
Ejemplo:
<%
Session(“usuario”) = “Nombre”
Response.Write Session(“usuario”)
%>
<%
Session.Abandon
%>
Acceso a Datos
Uno de los aspectos mas poderosos de ASP es la capacidad de trabajar con información
almacenada en bases de datos, para ello los servidores que ejecutan ASP utilizan una
tecnología llamada ADO (ActiveX Data Objects). Esta nos hace muy sencillo el acceso
a datos y nos permite trabajar con muchas diferentes bases de datos.
ADO
ADO es una colección de objetos que permite a las aplicaciones comunicarse con las
bases de datos de una forma consistente. Cada objeto en el modelo ADO representa un
elemento en particular que se usa cuando un programa trabaja con datos.
Objeto Connection: representa el vinculo con la base de datos que estamos utilizando.
Objeto Command: representa instrucciones que podemos utilizar para interactuar con la
base de datos.
OLE DB es una tecnología que mejora ODBC (Open Database Connectivity) la cual
permite que las bases de datos de diferentes fabricantes trabajen juntas. Es un interprete
que hace que todas las bases de datos parezcan iguales entre si y nos permite trabajar en
cada programa del mismo modo sin reparar en el funcionamiento interno de cada una.
Para crear este vínculo, nos servimos de los conectores ODBC (Open DataBase
Connectivity) los cuales establecen el enlace con la base de datos.
El primer paso para crear esta conexión es ir al panel de configuración y abrir el icono
ODBC 32bits. Dentro de él, deberemos crear un DSN (Data Source Name) de tipo
sistema o usuario. Para ello nos colocamos en la solapa correspondiente (DSN sistema o
DSN usuario) y seleccionamos "Añadir". A continuación se nos pedirá seleccionar los
controladores de la aplicación que hemos utilizado para crear la base de datos, el
nombre que le queremos asignar (aquel que empleemos en nuestros scripts) y el camino
para encontrarla en el disco duro.
Esta DSN permite en realidad definir la base de datos que será interrogada sin necesidad
de pasar por la aplicación que hayamos utilizado para construirla, es decir, con simples
llamadas y órdenes desde nuestros archivos ASP podremos obtener los datos que
buscamos sin necesidad de ejecutar el Access o el MySQL los cuales, evidentemente,
no tendrán por qué encontrarse en el servidor donde trabajemos.
OLE DB interactua con los datos a travez de una capa de software llamada proveedor
OLE DB. Este se parece a un controlador ODBC, ya que provee un mecanismo para
traducir estructuras de datos a algun estandar comun, ampliamente soportado. Los
fabricantes de bases de datos publican proveedores OLE DB, asi como controladores
ODBC. Veamos una lista de los mas comunes.
Cadenas de conexion
Para obtener un objeto debemos usar el metodo Open y asignarle un valor de cadena de
conexión valido.
Las cadenas de conexión proveen a un objeto Connection la información que
necesitamos para vincularnos con una base de datos. Esta compuesta por una seria de
pares Nombre=Valor, cada uno de estos pares esta separado por un punto y coma. Por
ejemplo:
Existe un tipo de conexión a bases de datos llamado DSN-Less, este tipo de conexión
es más óptimo que las conexiones a través de DSN ya que conectan la capa OLE DB
directamente con el Provider propio de la base de datos, y generalmente mejoran la
concurrencia a las bases de datos (conexión simultánea de varios usuarios).
Puede utilizar todas las conexiones DSN-Less que desee desde sus scripts ASP.
Además, de esta manera podrá probar y poner on-line sus aplicaciones más
rápidamente, ya que no tendrá que pedirnos que configuremos los DSNs en los
servidores.
En el siguiente ejemplo vemos una cadena de conexión DSN-Less para la base de datos
Access.
Con esta cadena podemos conectarnos directamente a la base de datos sin necesidad de
crear un DSN en el servidor. Por lo tanto es muy práctico para quienes dispongan de sun
servicio de Hosting compartido.
Server.CreateObject (IdProg)
Donde IdProg es el identificativo del tipo de componente que queremos crear, nos
viene suministrado por el fabricante del componente. Por ejemplo:
Nos proporciona una conexión a una base de datos ODBC desde una página ASP. Esta
conexión nos permitirá efectuar las operaciones que deseemos sobre la base de datos.
Es el objeto primario de ADO, ninguno de los otros objetos puede existir si este no es
declarado de forma explicita o implícita (en algunos de los ejemplos veremos que no
existe una declaración del objeto Connection, pero debemos de tener en cuenta que
siempre existe, si es necesario ADO lo declarará por si mismo).
Ejemplo:
Dim oConn
Dim StrCon
oConn = CreateObject(“ADODB.Connection”)
Ya sabemos como crear una conexión y abrirla, ahora vamos a utilizar el objeto
RecordSet para comenzar a trabajar con la base de datos propiamente dicha.
Ejemplo:
Set RS = CreateObject("ADODB.RecordSet")
Aqui abrimos un recordset que recupera informacion de la tabla prueba que pertenece a
la base de datos Prueba.mdb que habiamos abierto anteriormente con la conección
oConn, por eso le indicamos al recordset RS mediante la sentencia Open que ejecute la
consulta SQL que tipeamos en la variable ConSQL.
Str = RS(“ID”)
<%
Dim oConn
Dim StrCon
Dim RS
Dim ConSQL
oConn = CreateObject(“ADODB.Connection”)
Set RS = CreateObject("ADODB.RecordSet")
ConSQL = "SELECT * FROM prueba"
RS.Open SQL, oConn
Response.Write RS ("nombre")
RS.MoveNext
Loop
%>
Para agragar datos a una base de datos se puede utilizar el objeto Command de ADO.
Este objeto representan las instrucciones que queremos ejecutar sobre la base de datos,
podemos agregar, editar o borrar información utilizando consultas SQL.
El igual que con los objetos anteriores creamos el objeto Command utilizando
Server.CreateObject, de la siguiente manera:
Server.CreateObject(“ADODB.Command”)
<%
Set cmd = CreateObject(“ADODB.Command”)
SQL = “INSERT INTO prueba (nombre, apellido) VALUES (‘pedro’, ‘gomez’)”
cmd.ActiveConnection = oConn
cmd.Execute
%>
Lo que hicimos fue crear nuestro objeto Command, luego llenamos una variable
llamada SQL con la instruccion SQL para agregar datos en la tabla prueba. Utilizamos
dos metodos del objeto Command.
Con cmd.ActiveConnection definimos la conexión a base de datos existente,
previemante deberiamos abrir la base de datos con el objeto Connection, y con
cmd.Execute ejecutamos la consulta SQL y cargamos los datos.
Editando y Borrando
En el ejemplo anterior utilizamos el objeto Command para agregar datos en nuestra base
de datos, ahora veremos dos ejemplos para editar y borrar datos.
<%
Set cmd = CreateObject(“ADODB.Command”)
SQL = “UPDATE prueba SET nombre = ‘pedro’, apellido = ‘gomez’”
cmd.ActiveConnection = oConn
cmd.Execute
%>
<%
Set cmd = CreateObject(“ADODB.Command”)
SQL = “DELETE * FROM prueba WHERE nombre = ‘pedro’”
cmd.ActiveConnection = oConn
cmd.Execute
%>
Como notaran solo cambiamos la consulta SQL para realizar diferentes tareas, por eso
es muy importante conocer bien este lenguaje de consultas.
<% <%
Set cmd = SQL = “INSERT INTO prueba (nombre,
CreateObject(“ADODB.Command”) apellido) VALUES (‘pedro’, ‘gomez’)”
SQL = “INSERT INTO prueba oConn.Execute (SQL)
(nombre, apellido) VALUES (‘pedro’, %>
‘gomez’)”
cmd.ActiveConnection = oConn
cmd.Execute
%>