Foros del Web » Programando para Internet » ASP Clásico »

Problema con formularios que insertan registro en b datos

Estas en el tema de Problema con formularios que insertan registro en b datos en el foro de ASP Clásico en Foros del Web. Hola a todos. Acabo de ingresar en el foro y aquí os expongo mi problema, a ver si alguien me echa una mano: Tengo 2 ...
  #1 (permalink)  
Antiguo 06/09/2007, 03:55
 
Fecha de Ingreso: septiembre-2007
Mensajes: 4
Antigüedad: 17 años, 8 meses
Puntos: 0
Problema con formularios que insertan registro en b datos

Hola a todos. Acabo de ingresar en el foro y aquí os expongo mi problema, a ver si alguien me echa una mano:

Tengo 2 formularios, cada uno en una pàgina asp.

El objetivo es que, una vez el usuario ha llenado todos los campos, se mande un e-mail con esos datos y a continuación se inserte un registro nuevo en una base de datos.

El Formulario_1 sirve para entrar los datos, tiene una función para validar que no estén vacíos y los manda a la pàgina del Formulario_2 . El còdigo que realiza estas acciones es el siguiente:

<form action="pag_formulario_2.asp?" name="Formulario_1" method="post">

<input type="button" value="Enviar" OnClick="verificaCamps(window.document.Formulario_ 1)"><input type="Reset" value="Esborrar">

<script languaje="JavaScript">
function verificaCamps(form)
{
var1=form.parc.selectedIndex;
var2=form.contacte.value;
var3=form.telefon.value;
var4=form.incidencia.value;

if (var1 ==0 | var2 =='' | var3 ==''| var4 =='')
{
alert("S'han d'omplir tots els camps");
}
else
form.submit();
}
</script>


El Formulario_2 presenta al usuario una pantalla de sólo lectura para que confirme los datos que ha entrado. Si los confirma se manda el e-mail y se llena el registro. El código es el siguiente:

<form action="mailto:<%Response.write(Rec2("Email"))%>?s ubject=Incidència" name="Formulario_2" method="post" enctype="text/plain">

input type="button" value="Enviar" OnClick="enviar_form(window.document.Formulario_2) "> <input type="button" value="Cancelar" onclick="Cancela(this)">

<script languaje="JavaScript">
function enviar_form(Formulario_2)
{
Formulario_2.submit();
javascript:history.go(-2);
window.alert("El formulari s'ha enviat correctament. Gràcies.")
}

function Cancela()
{
javascript:history.go(-1);
}
</script>


El problema es que en el momento en que se envía el Formulario_1 y aparece el Formulario_2 ya se inserta el registro en la base de datos, aunque no se manda el e-mail. Esto es un inconveniente ya que a veces el usuario rectifica, se lía, etc, y queda grabado un registro inútil o duplicado.

El código que inserta el registro es:

<%Str_SQL1 = "INSERT INTO .... (continúa)
Set Rec1=Conex.Execute(Str_SQL1)%>


He probado de poner este comando como OnClick, como OnSubmit del Formulario_2 y de todas las maneras que se me ocurren, pero sigue pasando lo mismo, no entiendo por qué se activa desde el Formulario_1. Supongo que podría ser una solución poner este código dentro de la función del Formulario_2 pero esto no sé como se hace ... ¿Alguien puede ayudarme?
  #2 (permalink)  
Antiguo 06/09/2007, 08:25
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 21 años, 6 meses
Puntos: 27
Re: Problema con formularios que insertan registro en b datos

El codigo que inserta esta en la pagina 2, eso hace que cuando se muestre la pagina se ejecute, y por eso se insertan los datos.

quizas lo correcto seria hacer otra pagina (o usar SelectCase) en donde se envie el correo, y se inserte si el usuario da aceptar a la confirmacion de los datos

suerte
__________________
JuanRa Pérez
San Salvador, El Salvador
  #3 (permalink)  
Antiguo 13/09/2007, 01:30
 
Fecha de Ingreso: septiembre-2007
Mensajes: 4
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: Problema con formularios que insertan registro en b datos

Gracias por el intento pero sigo atascada, soy autodidacta y muy novata en esto.

Sobre lo que dices de hacer otra página, creo que es un poco pesado para el usuario tener que pasar por tres páginas diferentes para enviar un formulario tan sencillo ... Esta tercera página, ¿se podría impedir que se vea, hacerla oculta?

La otra solución que me propones (usar SelectCase) no sé cómo y dónde se pone ... lo siento ¿me lo podrías explicar más?

De todos modos, gracias
  #4 (permalink)  
Antiguo 17/09/2007, 02:53
 
Fecha de Ingreso: septiembre-2007
Mensajes: 4
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: Problema con formularios que insertan registro en b datos

Cita:
Iniciado por JuanRAPerez Ver Mensaje
El codigo que inserta esta en la pagina 2, eso hace que cuando se muestre la pagina se ejecute, y por eso se insertan los datos.

quizas lo correcto seria hacer otra pagina (o usar SelectCase) en donde se envie el correo, y se inserte si el usuario da aceptar a la confirmacion de los datos

suerte
Gracias por el intento pero sigo atascada, soy autodidacta y muy novata en esto.

Sobre lo que dices de hacer otra página, creo que es un poco pesado para el usuario tener que pasar por tres páginas diferentes para enviar un formulario tan sencillo ... Esta tercera página, ¿se podría impedir que se vea, hacerla oculta?

La otra solución que me propones (usar SelectCase) no sé cómo y dónde se pone ... lo siento ¿me lo podrías explicar más?

De todos modos, gracias
  #5 (permalink)  
Antiguo 17/09/2007, 09:26
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 21 años, 6 meses
Puntos: 27
Re: Problema con formularios que insertan registro en b datos

pues solo veria dos paginas asi como tu mism a lo has planteado, la tercera es solo para insertar los valores

pagina1
muestro el formulario
pagina 2
le pido al usuario valide los datos
si los datos son correctos dara clic a "un boton"
ese boton te cargara la pagina tres
pagina 3
insertara los datos y te redirigira hacia la pagina que tu quieras, esta pagina no tiene porque ver lo que hace el usuairo o preguntarle que hacer, solo lo redireccionas y listo

suerte
__________________
JuanRa Pérez
San Salvador, El Salvador
  #6 (permalink)  
Antiguo 17/09/2007, 10:40
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 18 años, 2 meses
Puntos: 88
Re: Problema con formularios que insertan registro en b datos



en la segunda pagina como mandas el procedimiento de enviado y grabado de datos?
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #7 (permalink)  
Antiguo 17/09/2007, 11:07
 
Fecha de Ingreso: abril-2005
Ubicación: chihuahua Mexico
Mensajes: 49
Antigüedad: 20 años
Puntos: 0
Re: Problema con formularios que insertan registro en b datos

utiliza variables de session y en la tercera pagina insertas y mandas el correo y le dices q felicidades sus datos fueron correctos o El formulari s'ha enviat correctament. Gràcies y listo
  #8 (permalink)  
Antiguo 17/09/2007, 11:22
Avatar de JuanRAPerez
Colaborador
 
Fecha de Ingreso: octubre-2003
Mensajes: 2.393
Antigüedad: 21 años, 6 meses
Puntos: 27
Re: Problema con formularios que insertan registro en b datos

como muestras los valroes?
__________________
JuanRa Pérez
San Salvador, El Salvador
  #9 (permalink)  
Antiguo 17/09/2007, 11:47
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 18 años, 2 meses
Puntos: 88
Re: Problema con formularios que insertan registro en b datos

seria mas factible y un poco mas tangible que se mirara la forma de grabacion y envio de la segunda pagina... sera posible que mostrases el codigo, donde recibes tus valores en las sentencias?????
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
  #10 (permalink)  
Antiguo 18/09/2007, 05:24
 
Fecha de Ingreso: septiembre-2007
Mensajes: 4
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: Problema con formularios que insertan registro en b datos

No sé si esta última pregunta es para mí o para los demás pero ahí va

En el Formulario_2 se reciben los datos del Formulario_1 de la forma:

campo1= Request.Form("campo1")
campo2 = Request.Form("campo2")
... etc


El Formulario_2 sólo los muestra para que el usuario confirme. Si confirma se manda el e-mail:

<form action="mailto:<%Response.write(Rec2("Email"))%>?s ubject=Incidència instal.lacions" name="form_2" method="post" enctype="text/plain">

La pega está en el código de insertar registro que no sé donde ponerlo para que sólo se ejecute cuando el usuario confirma el Formulario_2. És el siguiente:

<%Str_SQL1 = "INSERT INTO .... (continúa)
Set Rec1=Conex.Execute(Str_SQL1)%>


No sé como hacer una página 3 que realice las dos acciones (enviar e-mail y insertar registro) sin intervención del usuario.
  #11 (permalink)  
Antiguo 19/09/2007, 23:20
Avatar de Shiryu_Libra
Colaborador
 
Fecha de Ingreso: febrero-2007
Ubicación: Cantando "Screenager" en "Kirafa Kaput"
Mensajes: 3.614
Antigüedad: 18 años, 2 meses
Puntos: 88
Re: Problema con formularios que insertan registro en b datos

entonces quieres decir que una ves que recibe los datos, autorellenas el campo del EMAIL, para que envie automaticamente, y en ese mismo procedimiento mandas la grabacion.... en este ultimo caso, creo que la opcion seria algo asi...

pongo este ejemplo de envio de email, sustituirlo en tu caso, solo anexarle la opcion ERR=0 al final

<% Option Explicit
' Creamos el objeto email
Dim objetoMail
Set objetoMail = Server.CreateObject ( "CDONTS.NewMail" )

' Configuramos el email
objetoMail.From = "[email protected]"
objetoMail.To = "[email protected]"
objetoMail.Subject = "Este es un email de prueba"
objetoMail.Body = "Este email es mandado como prueba para provar el envio de emails desde ASP con CDONTS"


' Enviamos el email
objetoMail.Send

if Err=0 then
call grabar
else
response.write "a ocurrido un error en el envio a tu correo, favor de rectificar"
end if

' Destruimos el objeto email
Set objetoMail = Nothing
%>

esta ultima, lo unico que hace, es cerciorarse de que no tuvieses ningun problema al enviar tu correo, y de esa forma garantizar que los datos primero que nada se haya mandado el correo y despues utilizar el procedimiento de insercion en la tabla

algo similar a lo que Juan(), te queria mencionar con la tercera pagina

dado que no esta el codigo completo no se puede estructurar, pero imagino que ya te habras dado cuenta de la idea

suerte
__________________
"Eres parte del problema, parte de la solucion o parte del paisaje"
Un Saludo desde Desierto de Altar, Sonora, MX.
Shiryu_libra
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:19.