Traslado de variables entre formularios

Tengo un problema con la recuperación de variables de un formulario para otras páginas.
Es el siguiente:
Tengo una página (formulario.htm) con un formulario inicial (form1) con el campo nombre, quiero que llame a una página .asp (formulario.asp) que a su vez tenga un formulario para rellenar el campo apellido al hacer el submit, quiero que se llame a la página resultado.asp y que ponga el nombre y el apellido. No tengo problema para pasar el valor del campo nombre a formulario.asp, pero no se como hacerlo pasar a resultado.asp, es decir trasladar el resultado del campo a través de dos páginas. Lo he intentado hacer así:
Formulario.htm
<html>
<head>
<title>Untitled Document</title>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<form name="form1" method="post" action="formulario.asp">
<p>
<input type="text" name="nombre">
</p>
<p>
<input type="submit" name="Submit" value="Submit">
</p>
</form>
</body>
</html>
Formulario.asp
<%@ Language="JavaScript" %>
<% nombre=Request.form("nombre") %>
<html>
<body>
<font face=arial size=4></font>
<form name="form2" method="post" action="resultado.asp">
<p>
<input type="text" name="apellido">
</p>
<p>
<input type="submit" name="Submit" value="Submit">
</p>
</form>
</body>
</html>
Resultado.asp
<%@ Language="JavaScript" %>
<% nombre=Request.form("nombre") %>
<% apellido=Request.form("apellido") %>
<html>
<body>
<% Response.Write(nombre); %>
<% Response.Write(apellido); %>
</body>
</html>

6 Respuestas

Respuesta
1
Lo haremos con variables de sesión, ¿las conoces? Te recomiendo que te introduzcas en ellas, que es muy fácil y eficaz, mira te explico el funcionamiento de forma sencilla.
Internet Explorer es capaz de almacenar variables, imagina que yo declaro una variable de sesión ( osea del Explorer ) le digo:
SESSION("NOMBRE") = "pepe"
Ahora desde cualquier página asp, podre leer la variable session("nombre") y tendrá el valor "pepe", en el momento que se cierre el explorer se pierden las variables, también se pierden cuando caduca la sesión que por defecto son 20 minutos, lo puedes cambiar, por tanto lo que te propongo en que cuando recojas el nombre lo pases a variable de sesión para así poderlo redoger cuando te interese, mira el código seria así.
Lo hago en vbscript que aparte de ser más sencillo que el javascript lo controlo más.
---> Formulario.htm <-----
<html>
<head>
<title>Untitled Document</title>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<form name="form1" method="post" action="formulario.asp">
<p>
<input type="text" name="nombre">
</p>
<p>
<input type="submit" name="Submit" value="Submit">
</p>
</form>
</body>
</html>
-----> Formulario.asp <-----
<%@ Language="Vbscript" %>
<% nombre=Request.form("nombre") %>
<% session("nombre")= nombre %>
<html>
<body>
<font face=arial size=4></font>
<form name="form2" method="post" action="resultado.asp">
<p>
<input type="text" name="apellido">
</p>
<p>
<input type="submit" name="Submit" value="Submit">
</p>
</form>
------> Resultado.asp <----
<%@ Language="VbScript" %>
<% nombre=session("nombre") %>
<% apellido=Request.form("apellido") %>
<html>
<body>
<% Response.Write(nombre); %>
<% Response.Write(apellido); %>
</body>
</html>
Esto así te funcionara si tienes iis 5.0, si es inferior dímelo porque tendríamos que declarar la variable de sesión en un archivo que se llama global. Asa pero pruébalo y me dices si funciona, para cualquier duda ya sabes ;)
Respuesta
1
Si vos pasas un campo de un formulario a otra página, entonces el valor del campo llega a la otra página, entonces si después vas a otra tercera, lo único que te llegara es lo de la 2da página...
En formulario.asp tendrías que poner un campo oculto dentro del formulario, que te dejaría guardar información como si fuera un campo, pero invisible.
Tendrías que poner:
<input type="hidden" name="apellido" value="<% = request("nombre") %>">
Todo esto en la página 2da, de manera que a resultado.asp te llegara el campo invisible, más el campo apellido.
Respuesta
1
Lo mejor es utilizar una variable oculta o hidden. Es como una caja de texto pero el usuario no la ve.
En formulario.asp introduces después de la etiqueta form:
<input type="hidden" name="nombre" value="<%=nombre%>">
Respuesta
1
Antes de responderte me gustaría decirte que hace tiempo me hiciste una pregunta sobre enviar un formulario por Internet sobre asp y yo te di una indicación de por donde podrías ir para buscar información. Tu me diste un regular. Podría haber mostrado más interés. Decirte que yo no estoy aquí a tu servicio y que yo trabajo en una empresa donde no estoy ocho horas si no muchas más, precisamente investigando como hacer las cosas. Te lo digo para que en un futuro si alguien no te da las cosas mascaicas y tengas que investigar no pienses que no te quiere ayudar.
Para hacer lo que dices, hay dos maneras:
Una poner una variable en el fichero de variables global.asa de ASP.
Otra manera, es hacer un cuadro de texto oculto en la página formulario.asp, donde le introduces el nombre que has recogido en la página primera, para que cuando envíes este formulario, envíes el nombre y el apellido, a la tercera página.
Si no entiendes algo me lo dices.
No tengo problema en pasar campos hidden de una página a otra, el problema me viene cuando tengo que pasar una variable a la página de resultados a través de otro formulario con upload de archivo. Te lo resumo:
formulario1:campo "nombre"
formulario2:campo "nombre"
Campo "sube archivo"
formulario3:gracias "nombre" por confiar en nosotros
-No puedo pasar el campo "nombre" al formulario3-
Mira a ver si me puedes ayudar y dime la calificación que quieres que te ponga
Muchas gracias
Pero lo que tienes
Que hacer es en el formulario 2 hacer un campo hidden que se llame nombre y ponerle de valor el campo nombre que has recogido en el formulario1, así cuando hagas un submit al formulario 3 se pasara el campo nombre con valor...
No se explicame donde esta el fallo de mi planteamiento o si no lo entiendes, porque a lo mejor el que no lo entiende soy yo..
Respuesta
1
en formulario.asp, debajo del <input type="text"... tienes que poner esto
<input type="hidden" name="nombre" value='<%=nombre%>'>
La cuestión es que en esta página recoges el nombre con request, pero al no meterlo en el formulario, en un campo hidden en este caso, no se le pasa a resultado en el submit.
Respuesta
1
Más vale tarde que nunca.
Aunque puede que ya tengas la solución, esta forma es más sencilla y potente (Gracias a ASP). Te puede servir de ayuda para muchas otros casos.
Lo puedes realizar todo en una sola página. Aquí tienes el ejemplo (crea un fichero en blanco "admisión.asp" y copia el contenido adjunto)
<< Con un poco de imaginacion puedes llegar a hacer lo que quieras. >>
<html>
<body>
<%
dim ok
dim usr
ok=false
If IsEmpty(Request("usuario")) and IsEmpty(Request("clave")) Then
Msg = "Escriba su codigo de usuario y su clave correspondiente."
ElseIf len(Request("usuario"))= 0 then
Msg = "Escriba codigo de usuario."
ElseIf len(Request("clave"))= 0 then
Msg = "Escriba su clave de acceso."
ElseIf Request("usuario") = "1" and Request("clave")="1" then
ok=true
usr=1
Msg = "Hola, usuario 1"
ElseIf Request("usuario") = "2" and Request("clave")="2" then
ok=true
usr=2
Msg = "Hola, usuario 2"
Else
Msg = "Los datos son erroneos"
End If
%>
<% If len(Request("apellido"))=0 then%>
<form METHOD="POST" ACTION="admision.asp" NAME="admision">
<table>
<tr>
<td align="right">Codigo de Usuario</td>
<td><input TYPE="text" NAME="usuario" value="<%= Request("usuario")%>" size="15"
maxlength="20"></td>
</tr>
<tr>
<td align="right">Clave de acceso</td>
<td><input TYPE="password" name="clave" value="<%= Request("clave")%>" size="10"
maxlength="15"><br>
Texto sensible a mayusculas/minusculas</td>
</tr>
<% if ok=true then %>
<tr>
<td align="right"><b>Introduce tu apellido</b></td>
<td><input TYPE="text" NAME="apellido" value="<%= Request("apellido")%>" size="15"
maxlength="20"></td>
</tr>
<% end if %>
</table>
<p> </p>
<b><%= Msg %></b>
<p> </p>
<div align="center"><center><p><input type="Submit" value="Entrar!"></p>
</center></div>
</form>
<% else %>
Bienvenido Sr. <%=Request("apellido") %>
<p>
Su codigo de usuario es: <%= Request("usuario")%>
</p>
<% End if %>
<p><i>Hecho por víktor, 2003</p></i>
</body>
</html>

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas