Formularios reentrantes en ASP

  • Por
Cómo crear un formulario en una página que se llama a si misma, concetrando todas las acciones en un mismo código, limpio y fácil de mantener.
Uno de los trabajos más habituales en la programación de páginas dinámicas del servidor consiste en tratar formularios, para insertar o actualizar informaciones en una base de datos. En este artículo vamos a ver una manera sencilla de realizar, en ASP, las tareas de inserción de los datos de un formulario en una base de datos, concentrando todas las tareas en una misma página, por medio de formularios reentrantes.

Con el concepto de formulario reentrante, me refiero a una página que contiene un formulario, cuyo submit está dirigido hacia la misma página. De modo que esa página sería encargada de mostrar el formulario, recibir los datos, comprobar su validez y, si todo fue correcto, insertar la información en la base de datos. Él resumen de acciones que debe realizar una página es el siguiente:

Compruebo si se reciben datos del formulario
1) Si no recibo datos del formulario, muestro el formulario vacío
2) En caso contrario, compruebo que los datos sean correctos
   2.1) Si no eran correctos, muestro el formulario con los datos que se han recibido.
   2.2) Si eran correctos, inserto los datos en la base de datos


Como se puede comprobar en el esquema anterior, el mismo formulario se puede mostrar en dos ocasiones: Si no se reciben datos por POST, o bien, si los datos recibidos por POST no son válidos. Para facilitar las tareas de mantenimiento de la página y crear un código más claro, vamos a hacer un único formulario, que incluiremos en cualquier punto que se necesite.

El esquema anterior, codificado en ASP, sería el siguiente. Nótese que se incluye el formulario en dos puntos distintos del código. Luego veremos el código del formulario.

<%
'comprobamos si se recibe del formulario
if request.form="" then
    'si no se recibe algo muestro el formulario
    %><!--#include file="formulario.asp"--><%
else
    'es que estamos recibiendo datos del formulario
    'creo una variable para concretar el error
    errores=""
    'valido todo para obtener lista de errores
    if len(request.form("nombre"))<2 then
       errores = errores & "<li>El nombre no es correcto"
    end if
    if len(request.form("telefono"))<9 then
       errores = errores & "<li>El teléfono no es correcto"
    end if

    'compruebo si hubieron errores
    if (errores<>"") then
       'hubo errores en la recogida de datos
       response.write "Errores en el formulario: <ul style='color:red'>" & errores & "</ul>"
       %><!--#include file="formulario.asp"--><%
    else
       'es que todos los datos eran correctos. inserto en la base de datos
       ssql = "insert into cliente (nombre, telefono) values ('" & request.form("nombre") & "', '" & request.form("telefono") & "')"
       'ahora habría que conectar con la base de datos y ejecutar la sentencia
       'Estos temas se explican en otros artículos
    end if
end if
%>


El código está comentado para que se pueda entender más fácilmente. Como vemos se ha seguido el esquema comentado al principio del artículo. Las validaciones se realizan utilizando la función len() de VBScript, que devuelve el número de caracteres que contiene un string.

Código del formulario

Ahora nos centraremos en el formulario. Se trata de un código HTML simple, en el que se ha incluido una manera de memorizar el valor que pudieran tener los campos en anteriores envíos. Esto es porque, cuando se envía el formulario, si hubo errores en los datos, se debe mostrar el error y el formulario con los valores que tuviera anteriormente.

<FORM METHOD="post" ACTION="index.asp" NAME="form03">
<TABLE BORDER="0" CELLSPACING="2" CELLPADDING="2">
<TR>
    <TD>
    Nombre:
    </TD>
    <TD>
    <INPUT TYPE="text" NAME="nombre" VALUE="<%=request.form("nombre")%>">
    </DIV>
    </TD>
</TR>
<TR>
    <TD>
    Teléfono:
    </TD>
    <TD>
    <INPUT TYPE="text" NAME="telefono" VALUE="<%=request.form("telefono")%>">
    </DIV>
    </TD>
</TR>
<TR>
    <TD COLSPAN="2" align=right>
    <INPUT TYPE="submit" VALUE="Insertar">
    </TD>
</TR>
</TABLE>
</FORM>


Para recuperar esos valores, simplemente se define un value para la etiqueta <input>, en el que se coloca lo que haya en el array request.form("nombre_del_campo_a_recuperar").

Espero que estas indicaciones sean de interés, por lo menos para los usuarios menos experimentados.

Autor

Miguel Angel Alvarez

Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Comenzó en el mundo del desarrollo web en el año 1997, transformando su hobby en su trabajo.

Compartir

Comentarios

emrcruces

18/8/2006
El artículo me ha servido de mucha utilidad en cuanto al concepto, pero hay que tener en cuenta que sólo es operativo si partimos de un formulario en blanco. En mi caso he necesitado hacerlo para un formulario que inicialmente está relleno con datos de una bd, y algunos fijos, entonces no hay que utilizar el Request.form en el INPUT del formulario, sino que hay que tratar los datos en la página inicial e ir llamando al formulario según se necesite.

Kevin Sprouse

06/9/2006
Hola amigos, tengo una duda, lo que pasa esque al hacer la insercion a la base de datos, me sale error, yo creo que es porque en la base de datos un campo lo puse numérico, y por default siempre las cajas de texto de los formularios son tipo string... por favor, si alguien me podria ayudar como transformar la variable string en numerica, la variable es:

vedada = request.querystring("edad")

Porfa, ayuden me, esa solucion es parte del examen final en mi colegio, sin eso no paso de año... Ayuden me por favor

charly mory

09/4/2007
ya insert el codigo pARA FORMULARIO PERO NO FUNCIONA EN MI WEB