ASP

Anuncio
Seminario web - ASP
IIIIII.. A
AS
SP
P
11.. P
PR
RIIM
ME
ER
RO
OS
SC
CO
ON
NC
CE
EP
PTTO
OS
S
El lenguaje ASP (Active Server Pages) o Páginas Activas de Servidor es una tecnología desarrollada por
Microsoft Corporation. Quizá una de las funciones principales sea el acceso a Bases de Datos de forma
sencilla e intuitiva.
Tener en cuenta que:
- Se trata de una Estructura Cliente-Servidor. Esto es: el usuario de Internet (CLIENTE) pide un recurso
(SERVIDOR) y este le devuelve una página html con las especificaciones elegidas por el usuario (desde
colores de pantalla, registros de usuarios, consultas....).
- Diseñado para el funcionamiento bajo Windows NT Server e Internet Information Server 3.0, aunque ya
hay clientes para Linux y Unix, el funcionamiento no es tan eficaz como se esperaba.
- Soporta multitud de Fuentes de Datos ODBC (Bases de Datos) como Access, SQL, DBASE, FoxPro...
- Soporta HTML, JavaScript, DHtml, Css, VBScript, JAVA...
- Una página Web ASP puede visualizarse por cualquier navegador, ya que el cliente lo que recibe
es esa página ASP "ejecutada" en formato html.
- Si queremos trabajar en nuestro puesto de trabajo o en casa y diseñar páginas ASP deberemos tener NT
e IIServer, o si disponemos de Windows 95/98 tendremos que instalar el Microsoft Personal Web Server
con el fin de poder simular la ejecución de la página ASP en un Servidor (aunque esté en modo local).
22.. E
EM
MP
PE
EZZA
AR
RA
AE
ES
SC
CR
RIIB
BIIR
RA
AS
SP
P
Estructura:
- La extensión del fichero es: .ASP
- Al igual que en Html hay que abrir y cerrar sentencias: <% Sentencias_ ASP %>
- Escribimos los comentarios poniendo al comienzo de la línea comilla simple: ‘
- En el código ASP las comillas son importantes, por lo que hay que saber muy bien cuándo usarlas. Por lo
mismo, cuando nos referimos a un valor Html o a valores de campos, el resultado puede fallar si ese valor
incluye comillas.
En caso de ser necesario poner comillas, las sustituiremos por comillas simples.
- Al comienzo del documento, escribiremos lo siguiente:
<%@Language=VBScript%>  establecemos el tipo de lenguaje que escribiremos.
<%Option Explicit%>
 obligamos a declarar todas las variables, que aunque en VBS
no es obligatorio, sí es recomendable para evitar errores.
A continuación, podemos crear el documento como si fuera un Html normal.
Y en cualquier momento podemos interrumpirlo escribiendo entre <% %> el código que nos interese.
Lo normal es poner el código principal (conexión con bases de datos, definición de variables, funciones)
en la cabecera, entre el </title> y </head>. Y dentro del <body> también podremos escribir, en cualquier
momento, otras sentencias de ASP.
Comandos:
Response: Le indica al servidor que es un proceso que debe ejecutar y devolver al cliente. Por ejemplo:
response.write "Prueba"
Request: Le indica al servidor que es un proceso que el cliente solicita del servidor. Por ejemplo:
request.form ("usuario")
Dim: Definimos Variables.
Set: Definimos objetos.
1
Seminario web - ASP
33.. IIN
NTTR
RO
OD
DU
UC
CC
CIIÓ
ÓN
NA
ALL C
CÓ
ÓD
DIIG
GO
O.. S
SIIN
NTTA
AX
XIIS
S
VARIABLES
<%
Dim nombre,apellido
nombre = "Maria"
apellido = "Olmedo"
Response.write ("La profe se llama " & nombre & " " & apellido & "<p>")
%>
ESCRIBIR CADENAS
<%
Dim numero, suma, suma2
numero = 20
suma = numero+numero
suma2 = numero&numero
Response.write ("<br>" & suma)
Response.write ("<br>" & suma2)
%>
ESCRIBIR CÓDIGO HTML
Si queremos incluir código Html dentro del código ASP, lo haremos uniéndolo con asp & "html" & asp
<% Dim Variable
Variable = Pepe
Response.write ("Nombre: <b>" & Variable & "<b><br>") %>
BUCLES:
"for"
Desde un valor inicial a uno final.
<%
for variable=inicial to final
instrucciones a ejecutar
next
%>
Ejemplo:
"while"
Mientras se cumpla una condición,
se repetirá el bucle.
<%
while condición
instrucciones a ejecutar
wend
%>
Ejemplo:
<%
Dim num
For num=0 to 5
Response.write ("línea" & num &
"<br>")
next
%>
<%
Dim nume
nume=2
while (nume<20)
nume = nume+3
Response.write (nume & "<br>")
Wend
%>
CONDICIONALES:
"if ... then"
Ejemplo:
Ejecuta ciertas instrucciones según si se cumple una <%
Dim valor, valor1
condición.
Valor = 3
<%
Valor1 = 5
if condición then
If valor < valor1 then
instrucciones a ejecutar
Response.write (Valor1 & " es mayor.")
else
Else
instrucciones si no se cumple nada
Response.write (Valor & " es mayor.")
End if
end if
%>
%>
"select ... case"
Ejecuta distintas instrucciones según el valor de una variable
2
Seminario web - ASP
44.. C
CO
ON
NE
EX
XIIÓ
ÓN
NA
AU
UN
NA
AB
BA
AS
SE
ED
DE
ED
DA
ATTO
OS
S
Podemos hacer establecer una conexión con la base de datos directamente desde la página .asp:
dbConn.open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&
Server.MapPath("../ruta/datos.mdb")
O bien hacerlo a través del ODBC, creando un DSN de Sistema:
dbConn.open NombreODBC,"",""
1º Crear una conexión ODBC:
En el ordenador servidor (donde está la b.d. y se ejecutará el ASP):
Panel de control – Herramientas administrativas – Origenes de datos ODBC 
DSN de sistema  Agregar  Driver de Microsoft Access (mdb)
Configuración:
Nombre de Origen de datos: Intentar seguir un criterio para dar los nombres:
Nombre_dominio_o_web.Nombre_que_identifique_la_b.d.
Comentarios: lo que queramos
Seleccionar  abrimos la base de datos que queremos conectar.
Podemos darle un nombre de usuario y contraseña para poder establecer la conexión.
Ejemplo: en el servidor Win2000, tenemos creada la conexión IntraLink.Clientes, que llama a la base de
datos D:\Data\Clientes.mdb
2º Crear la conexión en ASP:
En la cabecera establecemos la conexión con la b.d. y con alguna de sus tablas o consultas:
<%
‘ declaramos las variables
Dim dbConn, cSQL, dbRS
'establecemos la conexión ODBC
Set dbConn= Server.CreateObject("ADODB.Connection")
dbConn.Open "Intralink.Clientes","",""
‘definimos la consulta (a una tabla o consulta) y la ejecutamos
cSQL = "SELECT * FROM ConsultaTodo"
Set dbRS = dbConn.Execute(cSQL)
%>
Si en el <body> escribimos:
<%
While (not dbRS.EOF)
Response.write dbRS("NombreRestaurante")
dbRS.MoveNext
wend
%>
Escribirá el valor del campo NombreRestaurante, de la tabla ConsultaTodo, de todos los registros de la
base de datos hasta el último registro.
Importante: si no ponemos el While EOF (End Of File) entrará en un bucle interminable.
Escribir código Html dentro del ASP:
Response.write ("McDonald's " & dbRS("NombreRestaurante") & "<br>")
Lo pondremos entre dobles comillas, unido al código ASP por &.
Al final del documento es conveniente cerrar la conexión y dejar los valores de las variables vacíos:
<%
dbConn.close
Set dbRS = nothing
Set cSQL = nothing
%>
3
Seminario web - ASP
44..11.. C
CO
ON
NS
SU
ULLTTA
AA
AU
UN
NA
A TTA
AB
BLLA
A
1º LISTADO DE TODOS LOS REGISTROS DE UNA TABLA
Ejemplo: LISTAMENSAJES.ASP  Muestra la lista de registros de la tabla Mensajes
<head>
' Definimos la conexión con la base de datos
<%
Dim dbConn,dbRS,cSQL
Set dbConn = Server.CreateObject("ADODB.Connection")
dbConn.open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&
Server.MapPath("../data/foro.mdb")
' Seleccionamos algunos campos de la tabla a mostrar, y definimos el orden
cSQL = "SELECT Remitente,Titulo,Id FROM Mensajes ORDER BY Fecha DESC"
Set dbRS = dbConn.Execute(cSQL)
%>
</head>
<body>
<table border="1">
<tr>
<th>Remitente</th>
<th>Titulo</th>
<th>Leer</th>
<th>Editar</th></tr>
<%
' Inserta una línea por cada registro
while not(dbRS.EOF)
Response.Write ("<tr><td>" & dbRS("Remitente") & "</td>")
Response.Write ("<td>" & dbRS("Titulo") & "</td>")
' Vínculo con filtro
Response.Write ("<td><a href=3_bd_leer.asp?Id=" & dbRS("Id") & ">leer</a></td>")
Response.Write ("<td><a href=7_bd_editar.asp?Id=" & dbRS("Id") & ">editar</a></td>")
Response.Write ("</tr>")
dbRS.MoveNext
wend
%>
</table>
</body>
2º FILTRO DE UNA TABLA PARA CONSULTAR UN ÚNICO REGISTRO
Ejemplo: LEER.ASP  Busca el mensaje cuyo Id coincide con el elegido en la página anterior.
<head>
' Definimos la conexión con la base de datos
<%
Dim dbConn,dbRS,cSQL
Set dbConn = Server.CreateObject("ADODB.Connection")
dbConn.open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&
Server.MapPath("../data/foro.mdb")
' Hacemos una consulta, filtrando los datos
cSQL = "SELECT * FROM Mensajes WHERE Id ="& Request.Querystring("Id")
Set dbRS = dbConn.Execute(cSQL)
%>
</head>
<body>
' Muestra los datos, en forma de tabla
<%
Response.write
Response.write
Response.write
Response.write
%>
</body>
("<b>Fecha:</b>" & dbRS("Fecha") & "<br>")
("<b>Remitente:</b>" & dbRS("Remitente") & "<br>")
("<b>Título:</b>" & dbRS("Titulo") & "<br>")
("<b>Mensaje:</b>" & dbRS("Mensaje") & "<br>")
4
Seminario web - ASP
44..22.. C
CR
RE
EA
AR
RN
NU
UE
EV
VO
OR
RE
EG
GIIS
STTR
RO
O
1. FORMULARIO PARA INTRODUCIR LA INFORMACIÓN
Ejemplo: NUEVO.ASP  Un simple formulario, sin absolutamente nada de código.
Aquí no tenemos que meter nada de código ASP, pero es importante dar a los elementos del formulario un
nombre al que luego nos referiremos al actualizar la tabla.
Y en la acción del formulario haremos una llamada al fichero ASP con las instrucciones de actualización.
<body>
<form method="POST" name="NuevoMensaje" action="5_bd_guardar.asp">
Fecha:<br>
<input type="text" name="Fecha" size="20" value="<%Now()%>"><p>
Remitente:<br>
<input type="text" name="Remitente" size="20"><p>
Mensaje:<br>
<input type="text" name="Mensaje" size="20"><p>
<input type="submit" value="Guardar" name="botform">
</form>
</body>
2. INSTRUCCIONES PARA INSERTAR UN NUEVO REGISTRO EN LA TABLA
Ejemplo: GUARDAR.ASP  Añade un nuevo registro a la tabla con los datos del formulario
CSQL = "INSERT INTO tabla (campo1, campo2) VALUES (campoF1,campoF2)"
DbConn.Execute(cSQL)
Conectamos con la base de datos y la tabla
<%
Dim dbConn,dbRS,cSQL
Set dbConn = Server.CreateObject("ADODB.Connection")
dbConn.open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&
Server.MapPath("../data/foro.mdb")
%>
Podemos asignar unas variables para trabajar cómodamente con los campos del formulario.
<%
Dim cFecha,cRemitente,cMensaje
'--cFecha = Now()
cRemitente = Request.Form("Remitente")
cMensaje= Request.Form("Mensaje")
'--if Len(cRemitente)=0 then cRemitente= " "
if Len(cMensaje)=0 then cMensaje = "(sin texto)"
'---
Insertamos los datos en la tabla (nuevo registro)
cSQL = "INSERT INTO Mensajes"
cSQL =cSQL+" (Fecha,Remitente, Mensaje)"
cSQL =cSQL+" VALUES ('" & cFecha & "','" & cRemitente & "','" & cMensaje & "')"
dbConn.Execute(cSQL)
%>
Después podemos darle instrucciones para que nos redirija a otra página (sin que tengamos que pulsar
ningún vínculo):
<% Response.Redirect "lista.asp" %>
¡Recordar siempre cerrar la conexión con la base de datos y con el registro!
5
Seminario web - ASP
44..33.. M
MO
OD
DIIFFIIC
CA
AR
RR
RE
EG
GIIS
STTR
RO
O
1. FORMULARIO PARA INTRODUCIR INFORMACIÓN (CON VALORES POR DEFECTO)
Ejemplo: EDITAR.ASP  Un formulario, en el que los valores por defecto de sus campos son los del
registro consultado.
En este caso sí hacemos una consulta a la base de datos, filtrando el registro según el Id traído de la página
anterior (igual que hacíamos en el Leer.asp):
<%
Dim dbConn,dbRS,cSQL
Set dbConn = Server.CreateObject("ADODB.Connection")
dbConn.open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" &
Server.MapPath("../data/foro.mdb")
cSQL = "SELECT * FROM Mensajes WHERE Id =" & Request.Querystring("Id")
Set dbRS = dbConn.Execute(cSQL)
%>
Después creamos el formulario exactamente igual, pero añadimos en las etiquetas (tags) de los campos un
valor predeterminado que es el valor del campo en ese registro (¡atención al "=" antes del campo!):
<input type="text" name="Remitente" size="20" value="<%=dbRS("Remitente")%>">
2. INSTRUCCIONES PARA ACTUALIZAR UN REGISTRO EN LA TABLA
Ejemplo: ACTUALIZAR.ASP  Busca el registro cuyo Id coincide con el del formulario y lo actualiza.
El formulario llamará a un fichero, encargado de actualizar la tabla. En realidad podríamos usar un único
fichero para Crear/Actualizar, pero para entender bien el código, hemos optado por crear distintos ficheros.
cSQL = "UPDATE tabla SET campoT= '" & Request.Form("campoF") & "',
campoT2= Request.Form("campoF2") WHERE campoTid = Request.Form("campoFid")"
DbConn.Execute(cSQL)
Definimos la connexion con la base de datos.
<%
Dim dbConn,dbRS,cSQL
Set dbConn = Server.CreateObject("ADODB.Connection")
dbConn.open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&
Server.MapPath("../data/foro.mdb")
%>
Después daremos las instrucciones para actualizar la tabla. Podemos hacerlo refiriéndonos directamente a
los campos del formulario:
<%
cSQL="UPDATE Mensajes"
cSQL=cSQL+" SET Mensaje='"+ Request.Form("Mensaje") +"'",Remitente='"
+Request.Form("Remitente")+"'"
cSQL=cSQL+" WHERE Id=" & Request.Form("Id")
dbConn.Execute(cSQL)
%>
O podemos definir unas variables para trabajar con ellas mejor y no tener que poner código tan largo:
<%
cSQL="UPDATE Mensajes"
cSQL=cSQL+" SET Remitente='"+cRemitente+"',Mensaje='"+cMensaje+"'"
cSQL=cSQL+" WHERE Id=" & cId
dbConn.Execute(cSQL)
%>
Después sería útil comprobar el resultado viendo la ficha del registro (leer.asp). Para ello podemos
redigirnos a esta página:
<% Response.Redirect "3_bd_leer.asp?Id=" & cId %>
6
Seminario web - ASP
44..44.. B
BO
OR
RR
RA
AR
RU
UN
NR
RE
EG
GIIS
STTR
RO
O
Ejemplo: BORRAR.ASP  Elimina el registro cuyo Id coincide con el dato indicado en la url.
Igual que hicimos un vínculo para Editar un registro, filtrando por su Id, haremos un vínculo a la página con
las instrucciones de borrar.
DELETE FROM tabla WHERE condición
DbConn.Execute(cSQL)
<%
Dim dbConn,dbRS,cSQL
'--Set dbConn = Server.CreateObject("ADODB.Connection")
dbConn.open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&
Server.MapPath("../data/foro.mdb")
Y en la consulta, daremos las instrucciones para eliminar ese registro:
cSQL = "DELETE FROM Mensajes WHERE Id =" & Request.QueryString("Id")
dbConn.Execute(cSQL)
%>
<%
Response.write ("El mensaje nº <b>" & Request.QueryString("Id") & "</b> ya ha sido
eliminado.")
dbConn.Close
Set dbConn = nothing
%>
7
Seminario web - ASP
55.. O
OTTR
RA
AS
SU
UTTIILLIID
DA
AD
DE
ES
SD
DE
E LLO
OS
S FFIIC
CH
HE
ER
RO
OS
SA
AS
SP
P
IInncclluuddeedd
Imaginemos que tenemos que repetir un bloque de texto o código en muchas páginas. Para evitarlo,
podemos crear ficheros included (.inc), a los que haremos un vínculo en nuestra página .ASP, en el sitio
exacto donde queramos que el contenido de ese fichero se coloque.
También podemos incluir ficheros .asp (esto nos permitiría aprovechar para varias páginas funciones
definidas en una única página).
Ejemplo: en la IntraLink: Departamentos – Operaciones, cada departamento está repetido por centro, y en
cada página encontramos el mismo encabezado y los mismos hipervínculos.
Grabaremos todo ese código repetitivo en un fichero aparte con extensión .inc.
Y en el lugar donde hubiera estado este código en cada página, colocaremos la etiqueta:
<!--#include file="fichero.inc"-->
En realidad no hay ningún código ASP, pero si no cambiamos la extensión del fichero .htm, este vínculo no
se ejecutará.
Y como el ASP se ejecuta en el servidor, el cliente recibirá una página Html aparentemente entera.
66.. A
ALLG
GO
OS
SO
OB
BR
RE
E JJA
AV
VA
AS
SC
CR
RIIP
PTT
- El JavaScript, a diferencia del ASP, se ejecuta en el cliente. Eso quiere decir que se ejecutará cuando el
navegador del cliente interprete el código de la página Html (no hay que cambiar la extensión del fichero).
- Podemos colocar el código en cualquier lugar de la página, entre las etiquetas
<script language="JavaScript"></script>.
- Los comentarios se ponen iniciando la línea con //
- A menudo encontramos el código JS entre los signos de comentario de Html (<!—y -->).
Eso evita que, si el navegador no es capaz de interpretar el JS (por versión...), devuelva el contenido del
código JS como si fuera parte del texto Html.
- Podemos comprobar si funciona desde la propia vista previa del programa editor (no hace falta tener
publicada la página en el servidor web, como ocurre con ASP).
Un ejemplo sencillo de JavaScript: Mensajes emergentes:
En la cabecera escribimos una función:
<script language="JavaScript">
function Frase() {
alert ('Mensaje emergente')
}
</script>
Y en el cuerpo asignamos un evento a una de las etiquetas Html:
<p onclick=Frase() style="cursor:hand">Mensaje emergente</p>
Para ver más ejemplos dentro de la IntraLink:
varios/work/EjCodigo/
8
Descargar