Serie de conferencias ASP (15) Uso de formularios HTML
Autor:Eve Cole
Fecha de actualización:2009-05-30 19:58:48
Utilizando el objeto Solicitud ASP, puede crear un script simple pero potente para recopilar y procesar datos de tablas HTML. En este tema, no sólo aprenderá cómo crear un script de procesamiento de tablas básico, sino que también obtendrá algunas técnicas útiles para validar la información de la tabla en el servidor web y el navegador del usuario.
Acerca de las tablas HTML
Las tablas HTML, el método más común de recopilar información web, son disposiciones especiales de etiquetas HTML que proporcionan controles de interfaz de usuario en una página web. Los cuadros de texto, botones y casillas de verificación son controles típicos que permiten a los usuarios interactuar con páginas web y enviar información al servidor web.
El siguiente ejemplo HTML genera un formulario en el que el usuario puede ingresar su nombre, edad y contiene un botón que envía esta información al servidor web. El formulario también contiene un control implícito (no mostrado por el navegador web) que se puede utilizar para pasar información adicional al navegador web.
<FORM METHOD="POST" ACTION="miarchivo.asp">
<TIPO DE ENTRADA="texto" NOMBRE="nombre">
<TIPO DE ENTRADA="texto" NOMBRE="apellido">
<TIPO DE ENTRADA="texto" NOMBRE="edad">
<INPUT TYPE="oculto" NOMBRE="estado de usuario" VALOR= "nuevo">
<TIPO DE ENTRADA="enviar" VALOR="Introducir">
</FORM>
Formularios que manejan entradas ASP Cuando el formulario envía información al servidor web, el navegador web del usuario solicita el archivo .asp especificado con el atributo ACTION de la etiqueta HTML <FORM> (en el ejemplo anterior, el archivo se llamaba Myfile.asp). . Los archivos .asp contienen secuencias de comandos que manipulan valores de tablas, como mostrar una tabla de resultados o consultar información de una base de datos.
Hay tres formas de recopilar valores de tablas HTML utilizando archivos .asp
El archivo .htm estático puede contener una tabla cuyos valores se envían al archivo .asp.
Un archivo .asp puede crear un formulario que envía su información por correo a otro archivo .asp.
El archivo .asp puede crear un formulario que se envía su información por correo a sí mismo, el archivo que contiene el formulario.
Los dos primeros métodos funcionan de la misma manera y cuando el formulario interactúa con el programa de puerta de enlace, que no sea ASP, puede incluir comandos para leer y responder a las selecciones del usuario.
Crear un archivo .asp que contenga una definición de tabla y se envíe información a sí mismo es una forma más compleja pero potente de trabajar con tablas. Este proceso se demuestra en Validación de entradas de formulario.
Obtener entrada del formulario
El objeto Solicitud ASP proporciona dos colecciones que simplifican enormemente la tarea de recuperar información de formulario adjunta a una solicitud URL.
Colección de cadenas de consulta
La colección QueryString obtiene el valor pasado al servidor web como el texto que sigue al signo de interrogación en la URL solicitada. Los valores de la tabla se pueden agregar a la URL solicitada mediante el método HTTP GET o agregando manualmente los valores de la tabla a la URL.
Por ejemplo, si el ejemplo de la tabla anterior utilizó el método GET (ACTION = "GET") y el usuario escribió Jeff, Smith y 30, se enviaría la siguiente solicitud de URL al servidor:
http://scripts/Myfile.asp?firstname=Jeff&lastname=Smith&age=30&userstatus=new
Myfile.asp contiene el siguiente script de procesamiento de tablas:
Hola, <%= Request.QueryString("nombre") %> <%= Request.QueryString("apellido") %>.
Tienes <%= Request.QueryString("age") %> años.
<%
Si Request.QueryString("userstatus") = "nuevo usuario", entonces
Response.Write"¡Esta es su primera visita a este sitio web!"
terminar si
%>
En este caso, el servidor web devolverá el siguiente texto al navegador web del usuario:
Hola, Jeff Smith. Tienes 30 años. ¡Esta es tu primera visita a este sitio web!
La colección QueryString tiene un parámetro opcional que se puede utilizar para acceder a uno de los múltiples valores que aparecen en el cuerpo de la solicitud. También puede utilizar la propiedad Count para contar el número de apariciones de un tipo particular de valor.
Por ejemplo, un formulario que contenga un cuadro de lista de varios elementos podría enviar la siguiente solicitud:
http://list.asp?food=manzanas&food=olivas&food=bread
También puede utilizar el siguiente comando para contar varios valores:
Request.QueryString("comida").Count
Si desea mostrar varios tipos de valores, List.asp debe contener el siguiente script;
<%Total = Request.QueryString("comida").Count%>
<%Para i = 1 a Total%>
<%= Request.QueryString("comida")(i) %> <BR>
<%Siguiente%>
El script anterior mostrará:
manzanas
aceitunas
pan
Colección de formularios Cuando se utiliza el método HTTP GET para pasar valores de formulario largos y complejos al servidor web, se puede perder información. La mayoría de los servidores web tienden a controlar estrictamente la longitud de las cadenas de consulta de URL, de modo que los valores de tabla largos pasados mediante el método GET se truncan. Si necesita enviar grandes cantidades de información desde un formulario a un servidor web, debe utilizar el método HTTP POST. Este método se utiliza para enviar datos de tabla en el cuerpo de la solicitud HTTP y la cantidad de caracteres enviados puede ser ilimitada. También puede utilizar la colección Form del objeto Solicitud ASP para recuperar valores enviados mediante el método POST.
La colección Form almacena valores numéricos de la misma manera que la colección QueryString. Por ejemplo, si un usuario completa una tabla con una larga lista de nombres, puede recuperar esos nombres con el siguiente script:
<% Para i = 1 para Request.Form.Count %>
<% =Solicitud.Form("nombres")(i) %>
<% Siguiente %>
Validar las entradas del formulario Un buen script de procesamiento de formularios debe verificar que la información ingresada en el formulario sea válida antes de procesar los datos. Los scripts de validación pueden verificar que el tipo de información que los usuarios ingresan en un formulario es correcto. Por ejemplo, si su sitio web contiene un formulario que permite a los usuarios calcular información financiera, antes de procesar los resultados, debe verificar que el usuario realmente ingresó información numérica y no texto.
Una forma muy conveniente de validar la entrada del formulario es crear un formulario que se pase información a sí mismo. En este caso, el archivo .asp contiene una tabla de la que se puede obtener la información. Por ejemplo, el siguiente script verifica que el usuario ingresó un valor en el campo de la tabla "edad" pasándose información a sí mismo:
<% Si es numérico(Request.QueryString("Edad")) entonces %>
<p>Hola, tu edad es <%=Request.QueryString("age")%>
<%Más%>
<p>Ingrese una edad numérica.
<%Finalizar si %>
<MÉTODO DE FORMULARIO= "POST" ACCIÓN="verificar.asp" >
Nombre: <TIPO DE ENTRADA="texto" NOMBRE="Nombre" >
Edad: <INPUT TYPE="text" NAME="Edad" >
<TIPO DE ENTRADA="enviar" VALOR="Introducir">
</FORM>
En este ejemplo, el script también se encuentra en el mismo archivo Verify.asp que contiene la tabla. El formulario se pasa información a sí mismo especificando Verify.asp en el atributo ACCIÓN.
También puede crear scripts del lado del cliente para verificar que los usuarios hayan ingresado información válida. Validar la entrada del usuario en un navegador web puede reducir el tráfico de red al servidor web, además de avisar a los usuarios con errores de entrada de formulario más rápidamente. El siguiente script se ejecuta en el navegador web del usuario y verifica la información del usuario antes de enviarla al servidor web.
<IDIOMA DE ESCRITURA="VBScript">
<!--
Sub btnEnter_OnClick
DimTheForm
Establecer TheForm = Documento.MyForm
Si es numérico (TheForm.Age.Value) entonces
El formulario.enviar
Demás
Msgbox "Ingrese una edad numérica".
terminar si
Subtítulo final
//-->
</SCRIPT>
<MÉTODO DE FORMULARIO= "POST" NOMBRE= MiForma ACCIÓN="miarchivo.asp" >
Nombre: <TIPO DE ENTRADA="texto" NOMBRE="Nombre" >
Edad: <INPUT TYPE="text" NAME="Edad" >
<TIPO DE ENTRADA="botón" NOMBRE="btnIntro" VALOR="Intro">
</FORM>