Paso de parámetros en asp
Quisiera que me ayudaran en algo.
Se como pasar parámetros de una página que contenga un formulario, a otra página y capturar los datos que contienen los objetos de ese formularios y procesarlos.
Pero como paso parámetros de una página asp a una que contenga un formulario y capturar los datos y ubicarlos en sus respectivos objetos (cajas de texto). Algo así como una opción de "modifica tus datos" donde aparece la página de registro y las cajas de texto con los datos que yo ingrese.
Se como pasar parámetros de una página que contenga un formulario, a otra página y capturar los datos que contienen los objetos de ese formularios y procesarlos.
Pero como paso parámetros de una página asp a una que contenga un formulario y capturar los datos y ubicarlos en sus respectivos objetos (cajas de texto). Algo así como una opción de "modifica tus datos" donde aparece la página de registro y las cajas de texto con los datos que yo ingrese.
2 Respuestas
Respuesta de averias33
1
1
Esas típicas páginas de modificar los datos, generalmente tu les pasas un valor y busca en una tabla extrayendo los datos de la tabla y volcando los datos en sus correspondientes cajas de texto. También podrías pasarle los datos de una página a otra mediante Request (Form o QueryString) y posicionarlos en las cajas de texto, pero eso tiene poco sentido.
¿Bueno pues para volcar los datos sobre las cajas de texto debes utilizar el parámetro? value? De la etiqueta input. ¿El código que te pongo a continuación es un ejemplo de una página llamada? modifica_usuario.asp?. Esta página recibe mediante un Request. ¿QueryString el valor de un campo llamado? ¿Id? En un registro en una tabla que contiene los dtos de un usuario, extrae los datos y los vuelva sobre las cajas de texto para que el usuario pueda modificarlos. La página las puedes llamar mediante un enlace, por ejemplo si quisieras los datos del usuario cuyo campo id es igual a 5, pondrías:
<a href=?modifica_usuario.asp?id=5?>Detalles</a>
El código de la página podrías ser esta, fíjate en las etiquetas <input ...> hay varias, para nombre, apellidos, etc. Y fíjate en los parámetros value, donde vuelva los datos de la tabla:
modifica_usuario.asp
================
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<%
set cone=Server.CreateObject("ADODB.Connection")
cone.open "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=login;PASSWORD=clave;Initial Catalog=base_datos;Data Source=servidor"
dim RS_Source
set rsUser = Server.CreateObject("ADODB.Recordset")
RS_Source = "SELECT * FROM USUARIOS WHERE ID=" & Request.QueryString("id")
rsUser.open RS_Source, cone, adOpenKeyset, adLockOptimistic, adCmdText
%>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form name="form1" action="guardar_datos.asp" method="get">
<table width="500" border="0" align="center" cellpadding="4">
<tr >
<td height="12" colspan="2" valign="middle"><strong><font color="#336699" size="3" face="Verdana, Arial, Helvetica, sans-serif"> Datos
de Usuario Registrado</font></strong></td>
</tr>
<tr >
<td height="12" colspan="2" align="left" valign="middle"><img src="images/puntogris.gif" width="496" height="1"></td>
</tr>
<tr >
<td height="12" colspan="2" align="left" valign="middle"><font color="#000000" size="2" face="Verdana, Arial, Helvetica, sans-serif">Estos
son sus datos de registro que obran en nuestro poder. Si realiza cualquier
modificación, pulse el botón continuar para que sean actualizados.</font></td>
</tr>
<%
dim conta
conta=""
If (rsUser("USR_EMPRESA")<>"no_empresa") Then
conta=" (persona de contacto)"%>
<%End If%>
<tr >
<td width="250" height="10" align="left" valign="middle"><strong><font color="#336699" size="2" face="Verdana, Arial, Helvetica, sans-serif" class="enunciados">Nombre</font></strong><font color="#336699" size="2" face="Verdana, Arial, Helvetica, sans-serif" class="enunciados"> </font></td>
<td width="250" height="10" valign="middle"> <input type="text" name="nombre" value="<%=rsUser("USR_NOM")%>" size="32" class="caja_buscador">
</td>
</tr>
<tr >
<td width="250" height="10" align="left" valign="middle"><strong><font color="#336699" size="2" face="Verdana, Arial, Helvetica, sans-serif" class="enunciados">Apellidos</font></strong><font color="#336699" size="2" face="Verdana, Arial, Helvetica, sans-serif" class="enunciados"> </font></td>
<td width="250" height="10" valign="middle"> <input type="text" name="apellidos" value="<%=rsUser("USR_APE")%>" size="32" class="caja_buscador">
</td>
</tr>
<tr >
<td height="10" align="left" valign="middle"><strong><font color="#336699" size="2" face="Verdana, Arial, Helvetica, sans-serif" class="enunciados">NIF/CIF</font></strong></td>
<td height="10" valign="middle"><input name="dni" type="text" class="caja_buscador" id="dni" value="<%=rsUser("USR_DNI")%>" size="32"></td>
</tr>
<tr >
<td width="250" height="10" align="left" valign="middle"><strong><font color="#336699" size="2" face="Verdana, Arial, Helvetica, sans-serif" class="enunciados">Dirección</font></strong></td>
<td width="250" height="10" valign="middle"> <input type="text" name="direccion" value="<%=rsUser("USR_DIRE")%>" size="32" class="caja_buscador">
</td>
</tr>
<tr >
<td width="250" height="10" align="left" valign="middle"><strong><font color="#336699" size="2" face="Verdana, Arial, Helvetica, sans-serif" class="enunciados">Teléfono</font></strong></td>
<td width="250" height="10" valign="middle"> <input type="text" name="telefono" value="<%=rsUser("USR_TEL")%>" size="32" class="caja_buscador" maxlength="9">
</td>
</tr>
<tr >
<td width="250" height="10" align="left" valign="middle"><strong><font color="#336699" size="2" face="Verdana, Arial, Helvetica, sans-serif" class="enunciados">E-mail</font></strong></td>
<td width="250" height="10" valign="middle"> <input type="text" name="email" value="<%=rsUser("USR_MAIL")%>" size="32" class="caja_buscador"></td>
</tr>
<tr>
<td width="250" height="26" align="center"> <input name="Submit2" type="button" class="boton_buscador" onClick="location.href='cancelar_pedido.asp'" value="Cancelar">
</td>
<td width="250" align="center"> <input name="Submit2" type="submit" class="boton_buscador" value="Continuar"></td>
</tr>
</table>
</form>
</body>
</html>
Este ejemplo es el más simple, pero sirve para lo que preguntas.
¿Bueno pues para volcar los datos sobre las cajas de texto debes utilizar el parámetro? value? De la etiqueta input. ¿El código que te pongo a continuación es un ejemplo de una página llamada? modifica_usuario.asp?. Esta página recibe mediante un Request. ¿QueryString el valor de un campo llamado? ¿Id? En un registro en una tabla que contiene los dtos de un usuario, extrae los datos y los vuelva sobre las cajas de texto para que el usuario pueda modificarlos. La página las puedes llamar mediante un enlace, por ejemplo si quisieras los datos del usuario cuyo campo id es igual a 5, pondrías:
<a href=?modifica_usuario.asp?id=5?>Detalles</a>
El código de la página podrías ser esta, fíjate en las etiquetas <input ...> hay varias, para nombre, apellidos, etc. Y fíjate en los parámetros value, donde vuelva los datos de la tabla:
modifica_usuario.asp
================
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<%
set cone=Server.CreateObject("ADODB.Connection")
cone.open "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=login;PASSWORD=clave;Initial Catalog=base_datos;Data Source=servidor"
dim RS_Source
set rsUser = Server.CreateObject("ADODB.Recordset")
RS_Source = "SELECT * FROM USUARIOS WHERE ID=" & Request.QueryString("id")
rsUser.open RS_Source, cone, adOpenKeyset, adLockOptimistic, adCmdText
%>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form name="form1" action="guardar_datos.asp" method="get">
<table width="500" border="0" align="center" cellpadding="4">
<tr >
<td height="12" colspan="2" valign="middle"><strong><font color="#336699" size="3" face="Verdana, Arial, Helvetica, sans-serif"> Datos
de Usuario Registrado</font></strong></td>
</tr>
<tr >
<td height="12" colspan="2" align="left" valign="middle"><img src="images/puntogris.gif" width="496" height="1"></td>
</tr>
<tr >
<td height="12" colspan="2" align="left" valign="middle"><font color="#000000" size="2" face="Verdana, Arial, Helvetica, sans-serif">Estos
son sus datos de registro que obran en nuestro poder. Si realiza cualquier
modificación, pulse el botón continuar para que sean actualizados.</font></td>
</tr>
<%
dim conta
conta=""
If (rsUser("USR_EMPRESA")<>"no_empresa") Then
conta=" (persona de contacto)"%>
<%End If%>
<tr >
<td width="250" height="10" align="left" valign="middle"><strong><font color="#336699" size="2" face="Verdana, Arial, Helvetica, sans-serif" class="enunciados">Nombre</font></strong><font color="#336699" size="2" face="Verdana, Arial, Helvetica, sans-serif" class="enunciados"> </font></td>
<td width="250" height="10" valign="middle"> <input type="text" name="nombre" value="<%=rsUser("USR_NOM")%>" size="32" class="caja_buscador">
</td>
</tr>
<tr >
<td width="250" height="10" align="left" valign="middle"><strong><font color="#336699" size="2" face="Verdana, Arial, Helvetica, sans-serif" class="enunciados">Apellidos</font></strong><font color="#336699" size="2" face="Verdana, Arial, Helvetica, sans-serif" class="enunciados"> </font></td>
<td width="250" height="10" valign="middle"> <input type="text" name="apellidos" value="<%=rsUser("USR_APE")%>" size="32" class="caja_buscador">
</td>
</tr>
<tr >
<td height="10" align="left" valign="middle"><strong><font color="#336699" size="2" face="Verdana, Arial, Helvetica, sans-serif" class="enunciados">NIF/CIF</font></strong></td>
<td height="10" valign="middle"><input name="dni" type="text" class="caja_buscador" id="dni" value="<%=rsUser("USR_DNI")%>" size="32"></td>
</tr>
<tr >
<td width="250" height="10" align="left" valign="middle"><strong><font color="#336699" size="2" face="Verdana, Arial, Helvetica, sans-serif" class="enunciados">Dirección</font></strong></td>
<td width="250" height="10" valign="middle"> <input type="text" name="direccion" value="<%=rsUser("USR_DIRE")%>" size="32" class="caja_buscador">
</td>
</tr>
<tr >
<td width="250" height="10" align="left" valign="middle"><strong><font color="#336699" size="2" face="Verdana, Arial, Helvetica, sans-serif" class="enunciados">Teléfono</font></strong></td>
<td width="250" height="10" valign="middle"> <input type="text" name="telefono" value="<%=rsUser("USR_TEL")%>" size="32" class="caja_buscador" maxlength="9">
</td>
</tr>
<tr >
<td width="250" height="10" align="left" valign="middle"><strong><font color="#336699" size="2" face="Verdana, Arial, Helvetica, sans-serif" class="enunciados">E-mail</font></strong></td>
<td width="250" height="10" valign="middle"> <input type="text" name="email" value="<%=rsUser("USR_MAIL")%>" size="32" class="caja_buscador"></td>
</tr>
<tr>
<td width="250" height="26" align="center"> <input name="Submit2" type="button" class="boton_buscador" onClick="location.href='cancelar_pedido.asp'" value="Cancelar">
</td>
<td width="250" align="center"> <input name="Submit2" type="submit" class="boton_buscador" value="Continuar"></td>
</tr>
</table>
</form>
</body>
</html>
Este ejemplo es el más simple, pero sirve para lo que preguntas.
Ok experto me ha sido de gran utilidad, solo te molesto con algo más, la página que me enviaste solo sirve para modificar datos ya existentes, ya que al iniciar realiza una consulta que tiene que devolver datos, si quiero ingresar datos nuevos tendría que realizar otra página que no haga esta consulta, para que cuando llegue a los values de los inputs no me de errores de que el recordset esta cerrado o algo así. O me podrías decir cual seria la solución optima, de pronto hacer una sola página que ingrese los datos y a la vez que los modifique cuando ya estén ingresados. Disculpa si te parece una simpleza pero es mi primer proyecto en lo que ASP se trata.
Gracias por la respuesta anterior, y te agradezco de antemano por la respuesta de esta.
Gracias por la respuesta anterior, y te agradezco de antemano por la respuesta de esta.
En el ejemplo anterior que te mande, si le quitas todo el código ASP, es decir todo lo que esta encerrado entre <%...%>, tendría la página para insertar un registro nuevo. ¿Cuándo el usuario rellene los valores de las cajas de texto y le de al botón de submit llamara a una página? guardar_datos_alta.asp?
Esta página lo que hará es comprobar que todas las Request. Form enviadas (uan por cada caja de Texto) no vienen en blanco y las metera en los distintos campos de la tabla:
<%
'anterior= Request.Form("origen")
logi=CStr(Request.Form("usuario"))
pass=CStr(Request.Form("clave"))
set cone=Server.CreateObject("ADODB.Connection")
cone.open MM_con_oki_STRING
dim RS_Source
set RS=Server.CreateObject("ADODB.Recordset")
RS.open "USUARIOS", cone, adOpenKeyset, adLockOptimistic, adCmdTable
RS.Addnew
RS("USR_NOM")=Trim(Request.Form("nombre"))
RS("USR_APE")=Trim(Request.Form("apellidos"))
RS("USR_DNI")=Request.Form("dni")
if(Request.Form("empresa")<>"") Then
RS("USR_EMPRESA")=Request.Form("empresa")
Else
RS("USR_EMPRESA")="no_empresa"
End If
if(Request.Form("fax")<>"") Then
RS("USR_FAX")=Request.Form("fax")
Else
RS("USR_FAX")="no_fax"
End If
RS("USR_DIRE")=Trim(Request.Form("direccion"))
RS("USR_CP")=Trim(Request.Form("codigo_postal"))
RS("USR_LOC")=Trim(Request.Form("localidad"))
RS("USR_PROV")=Trim(Request.Form("provincia"))
RS("USR_TEL")=Trim(Request.Form("telefono"))
RS("USR_MAIL")=Trim(Request.Form("email"))
'RS("USR_LOGIN")=Request.Form("usuario")
RS("USR_CLAVE")=Trim(Request.Form("clave"))
RS("USR_PAIS")="ESPAÑA"
RS.Update
RS.Close
cone.close
Response.Redirect("cambia_datos_ok.asp")
%>
¿Podrias hacer una versión para el caso de modificar que llamara a una pagina?guardar_datos_mod.asp? (En el ejemplo la llame guardar_datos.asp) que lo que haga es comprobar que el usuario existe y si existe grabas los nuevos valores de la Request en sus campos correspondientes y actualizas. Parte del codigo podria ser asi. Estudialo porque si lo copias y pegas no te funcionara, asi aprenderas a manejarlo:
<%
'anterior= Request.Form("origen")
logi=CStr(Request.Form("usuario"))
pass=CStr(Request.Form("clave"))
set cone=Server.CreateObject("ADODB.Connection")
cone.open MM_con_oki_STRING
dim RS_Source
set RS = Server.CreateObject("ADODB.Recordset")
RS_Source = "SELECT * FROM USUARIOS WHERE USR_LOGIN='" & logi & "'"
RS.open RS_Source, cone, adOpenKeyset, adLockOptimistic, adCmdText
'rsUser.Close
'set RS=Server.CreateObject("ADODB.Recordset")
'RS.open "USUARIOS", cone, adOpenKeyset, adLockOptimistic, adCmdTable
'RS.Addnew
RS("USR_NOM")=Trim(Request.Form("nombre"))
RS("USR_APE")=Trim(Request.Form("apellidos"))
RS("USR_DNI")=Request.Form("dni")
if(Request.Form("empresa")<>"") Then
RS("USR_EMPRESA")=Request.Form("empresa")
Else
RS("USR_EMPRESA")="no_empresa"
End If
if(Request.Form("fax")<>"") Then
RS("USR_FAX")=Request.Form("fax")
Else
RS("USR_FAX")="no_fax"
End If
RS("USR_DIRE")=Trim(Request.Form("direccion"))
RS("USR_CP")=Trim(Request.Form("codigo_postal"))
RS("USR_LOC")=Trim(Request.Form("localidad"))
RS("USR_PROV")=Trim(Request.Form("provincia"))
RS("USR_TEL")=Trim(Request.Form("telefono"))
RS("USR_MAIL")=Trim(Request.Form("email"))
'RS("USR_LOGIN")=Request.Form("usuario")
RS("USR_CLAVE")=Trim(Request.Form("clave"))
RS("USR_PAIS")="ESPAÑA"
RS.Update
RS.Close
cone.close
Response.Redirect("cambia_datos_ok.asp")
%>
Fíjate que ambas páginas son muy parecidas, la primera, abre la tabla le añade un registro nuevo con AddNew, rellena los campos y actualiza con Update.
La segundo, primero localiza al usuario con el Select..., después modifica sus campos y actualiza. Aquí mejor te recomiendo que en vez de localizar al usuario mediante su login y password, utilices un campo Hidden en la página del formulario donde vas a modificar los datos y lo envíes como Resquest. form a la pagina y el select lo realices buscando al susario por su id unico. Para ello, debe existir en la tabla un campo autonumérico (único e incremental) para cada registro.
Ests dos páginas tienen más campos en relación con la página que te mande en el primer ejemplo, obvia los campos que veas de más.
Esta página lo que hará es comprobar que todas las Request. Form enviadas (uan por cada caja de Texto) no vienen en blanco y las metera en los distintos campos de la tabla:
<%
'anterior= Request.Form("origen")
logi=CStr(Request.Form("usuario"))
pass=CStr(Request.Form("clave"))
set cone=Server.CreateObject("ADODB.Connection")
cone.open MM_con_oki_STRING
dim RS_Source
set RS=Server.CreateObject("ADODB.Recordset")
RS.open "USUARIOS", cone, adOpenKeyset, adLockOptimistic, adCmdTable
RS.Addnew
RS("USR_NOM")=Trim(Request.Form("nombre"))
RS("USR_APE")=Trim(Request.Form("apellidos"))
RS("USR_DNI")=Request.Form("dni")
if(Request.Form("empresa")<>"") Then
RS("USR_EMPRESA")=Request.Form("empresa")
Else
RS("USR_EMPRESA")="no_empresa"
End If
if(Request.Form("fax")<>"") Then
RS("USR_FAX")=Request.Form("fax")
Else
RS("USR_FAX")="no_fax"
End If
RS("USR_DIRE")=Trim(Request.Form("direccion"))
RS("USR_CP")=Trim(Request.Form("codigo_postal"))
RS("USR_LOC")=Trim(Request.Form("localidad"))
RS("USR_PROV")=Trim(Request.Form("provincia"))
RS("USR_TEL")=Trim(Request.Form("telefono"))
RS("USR_MAIL")=Trim(Request.Form("email"))
'RS("USR_LOGIN")=Request.Form("usuario")
RS("USR_CLAVE")=Trim(Request.Form("clave"))
RS("USR_PAIS")="ESPAÑA"
RS.Update
RS.Close
cone.close
Response.Redirect("cambia_datos_ok.asp")
%>
¿Podrias hacer una versión para el caso de modificar que llamara a una pagina?guardar_datos_mod.asp? (En el ejemplo la llame guardar_datos.asp) que lo que haga es comprobar que el usuario existe y si existe grabas los nuevos valores de la Request en sus campos correspondientes y actualizas. Parte del codigo podria ser asi. Estudialo porque si lo copias y pegas no te funcionara, asi aprenderas a manejarlo:
<%
'anterior= Request.Form("origen")
logi=CStr(Request.Form("usuario"))
pass=CStr(Request.Form("clave"))
set cone=Server.CreateObject("ADODB.Connection")
cone.open MM_con_oki_STRING
dim RS_Source
set RS = Server.CreateObject("ADODB.Recordset")
RS_Source = "SELECT * FROM USUARIOS WHERE USR_LOGIN='" & logi & "'"
RS.open RS_Source, cone, adOpenKeyset, adLockOptimistic, adCmdText
'rsUser.Close
'set RS=Server.CreateObject("ADODB.Recordset")
'RS.open "USUARIOS", cone, adOpenKeyset, adLockOptimistic, adCmdTable
'RS.Addnew
RS("USR_NOM")=Trim(Request.Form("nombre"))
RS("USR_APE")=Trim(Request.Form("apellidos"))
RS("USR_DNI")=Request.Form("dni")
if(Request.Form("empresa")<>"") Then
RS("USR_EMPRESA")=Request.Form("empresa")
Else
RS("USR_EMPRESA")="no_empresa"
End If
if(Request.Form("fax")<>"") Then
RS("USR_FAX")=Request.Form("fax")
Else
RS("USR_FAX")="no_fax"
End If
RS("USR_DIRE")=Trim(Request.Form("direccion"))
RS("USR_CP")=Trim(Request.Form("codigo_postal"))
RS("USR_LOC")=Trim(Request.Form("localidad"))
RS("USR_PROV")=Trim(Request.Form("provincia"))
RS("USR_TEL")=Trim(Request.Form("telefono"))
RS("USR_MAIL")=Trim(Request.Form("email"))
'RS("USR_LOGIN")=Request.Form("usuario")
RS("USR_CLAVE")=Trim(Request.Form("clave"))
RS("USR_PAIS")="ESPAÑA"
RS.Update
RS.Close
cone.close
Response.Redirect("cambia_datos_ok.asp")
%>
Fíjate que ambas páginas son muy parecidas, la primera, abre la tabla le añade un registro nuevo con AddNew, rellena los campos y actualiza con Update.
La segundo, primero localiza al usuario con el Select..., después modifica sus campos y actualiza. Aquí mejor te recomiendo que en vez de localizar al usuario mediante su login y password, utilices un campo Hidden en la página del formulario donde vas a modificar los datos y lo envíes como Resquest. form a la pagina y el select lo realices buscando al susario por su id unico. Para ello, debe existir en la tabla un campo autonumérico (único e incremental) para cada registro.
Ests dos páginas tienen más campos en relación con la página que te mande en el primer ejemplo, obvia los campos que veas de más.
- Compartir respuesta
- Anónimo
ahora mismo
Respuesta de tomasdv
1
1
tomasdv, -Ingeniero Informático Superior (Universidad Antonio de Nebrija)...
Puedes coger el dato del formulario original en la página de destino.
Imaginate que el dato que tienes es el nombre que es "pepe" y lo guardas en la variable de asp nombre.
Para que aparezca en un campo de texto del formulario solo pon algo como:
<input type=text id=nombre value=<% =nombre%>>
¿Te haces idea no?, como sabes recuperar los valores del formulario de origen los metes a capón en los campos del formulario de la página de destino.
Si no me equivoco creo que te has liado con lo más fácil.
Un saludete
Imaginate que el dato que tienes es el nombre que es "pepe" y lo guardas en la variable de asp nombre.
Para que aparezca en un campo de texto del formulario solo pon algo como:
<input type=text id=nombre value=<% =nombre%>>
¿Te haces idea no?, como sabes recuperar los valores del formulario de origen los metes a capón en los campos del formulario de la página de destino.
Si no me equivoco creo que te has liado con lo más fácil.
Un saludete
- Compartir respuesta
- Anónimo
ahora mismo