Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Superwagtel

Formulário com duas actions

Recommended Posts

Sei fazer o formulário inserir dados no DB , sei também fazer o formulário enviar o e-amail.

 

Como faço para que este formulário execute as duas funções?

 

Eu coloquei em sua action o seguinte:

 

<form action="<%=MM_editAction%>", "http://forms.hospedagemdesite.com/cgi-bin/FormMail.pl" method="POST" name="representa" id="representa">

Mas não deu certo, alguém sabe o que faço para corrigir isto?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que isso não é possível, pois você estará fazendo requisição de duas páginas ao mesmo tempo e o navegador abre uma por vez.

 

Imagino que o máximo que você consiga aí é executar as duas utilizando Ajax, já que Ajax é utilizando Javascript. Você faria uma função Javascript que chamaria às outras duas funções Ajax, para enviar os dados do formulário.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu tenho um exemplo de formulário com duas ações, mas como ainda não manjo de ASP, eu não consigo entender como ele faz para inserir os dados no DB e ao mesmo tempo enviar uma mensagem para o e-mail digitado.

 

Eu criei no Dreamweaver MX um formulário que insere dados no DB, preciso fazer com que este formulário também envie uma mensagem tanto para o e-mail digitado "Agradecemos sua participação" e outra mensagem para o e-mail da empresa "Novo cadastro no site" juntamente com o campo "texto" digitado pelo cliente.

 

A programação criada pelo Dreamweaver é:

 

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!--#include file="Connections/Menu.asp" -->
<%
' *** Edit Operations: declare variables

Dim MM_editAction
Dim MM_abortEdit
Dim MM_editQuery
Dim MM_editCmd

Dim MM_editConnection
Dim MM_editTable
Dim MM_editRedirectUrl
Dim MM_editColumn
Dim MM_recordId

Dim MM_fieldsStr
Dim MM_columnsStr
Dim MM_fields
Dim MM_columns
Dim MM_typeArray
Dim MM_formVal
Dim MM_delim
Dim MM_altVal
Dim MM_emptyVal
Dim MM_i

MM_editAction = CStr(Request.ServerVariables("SCRIPT_NAME"))
If (Request.QueryString <> "") Then
  MM_editAction = MM_editAction & "?" & Request.QueryString
End If

' boolean to abort record edit
MM_abortEdit = false

' query string to execute
MM_editQuery = ""
%>
<%
' *** Insert Record: set variables

If (CStr(Request("MM_insert")) = "form") Then

  MM_editConnection = MM_Menu_STRING
  MM_editTable = "Classf_equipamentos"
  MM_editRedirectUrl = "classif_2.asp"
  MM_fieldsStr  = "nome|value|email|value|texto|value"
  MM_columnsStr = "Nome|',none,''|Email|',none,''|Texto|',none,''"

  ' create the MM_fields and MM_columns arrays
  MM_fields = Split(MM_fieldsStr, "|")
  MM_columns = Split(MM_columnsStr, "|")
  
  ' set the form values
  For MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2
	MM_fields(MM_i+1) = CStr(Request.Form(MM_fields(MM_i)))
  Next

  ' append the query string to the redirect URL
  If (MM_editRedirectUrl <> "" And Request.QueryString <> "") Then
	If (InStr(1, MM_editRedirectUrl, "?", vbTextCompare) = 0 And Request.QueryString <> "") Then
	  MM_editRedirectUrl = MM_editRedirectUrl & "?" & Request.QueryString
	Else
	  MM_editRedirectUrl = MM_editRedirectUrl & "&" & Request.QueryString
	End If
  End If

End If
%>
<%
' *** Insert Record: construct a sql insert statement and execute it

Dim MM_tableValues
Dim MM_dbValues

If (CStr(Request("MM_insert")) <> "") Then

  ' create the sql insert statement
  MM_tableValues = ""
  MM_dbValues = ""
  For MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2
	MM_formVal = MM_fields(MM_i+1)
	MM_typeArray = Split(MM_columns(MM_i+1),",")
	MM_delim = MM_typeArray(0)
	If (MM_delim = "none") Then MM_delim = ""
	MM_altVal = MM_typeArray(1)
	If (MM_altVal = "none") Then MM_altVal = ""
	MM_emptyVal = MM_typeArray(2)
	If (MM_emptyVal = "none") Then MM_emptyVal = ""
	If (MM_formVal = "") Then
	  MM_formVal = MM_emptyVal
	Else
	  If (MM_altVal <> "") Then
		MM_formVal = MM_altVal
	  ElseIf (MM_delim = "'") Then  ' escape quotes
		MM_formVal = "'" & Replace(MM_formVal,"'","''") & "'"
	  Else
		MM_formVal = MM_delim + MM_formVal + MM_delim
	  End If
	End If
	If (MM_i <> LBound(MM_fields)) Then
	  MM_tableValues = MM_tableValues & ","
	  MM_dbValues = MM_dbValues & ","
	End If
	MM_tableValues = MM_tableValues & MM_columns(MM_i)
	MM_dbValues = MM_dbValues & MM_formVal
  Next
  MM_editQuery = "insert into " & MM_editTable & " (" & MM_tableValues & ") values (" & MM_dbValues & ")"

  If (Not MM_abortEdit) Then
	' execute the insert
	Set MM_editCmd = Server.CreateObject("ADODB.Command")
	MM_editCmd.ActiveConnection = MM_editConnection
	MM_editCmd.CommandText = MM_editQuery
	MM_editCmd.Execute
	MM_editCmd.ActiveConnection.Close

	If (MM_editRedirectUrl <> "") Then
	  Response.Redirect(MM_editRedirectUrl)
	End If
  End If

End If
%>
<%
Dim Classif_equipamentos
Dim Classif_equipamentos_numRows

Set Classif_equipamentos = Server.CreateObject("ADODB.Recordset")
Classif_equipamentos.ActiveConnection = MM_Menu_STRING
Classif_equipamentos.Source = "SELECT * FROM Classf_equipamentos"
Classif_equipamentos.CursorType = 0
Classif_equipamentos.CursorLocation = 2
Classif_equipamentos.LockType = 1
Classif_equipamentos.Open()

Classif_equipamentos_numRows = 0
%>
<html>
<head>
<title>Classificados</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<div align="center">
  <form action="<%=MM_editAction%>" method="POST" name="form" id="form">
	<table width="350" border="0" align="center" cellpadding="0" cellspacing="7">
	  <tr> 
		<td>Nome<br> <input name="nome" type="text" id="nome" size="50"> </td>
	  </tr>
	  <tr> 
		<td>E-mail<br> <input name="email" type="text" id="email" size="50"> </td>
	  </tr>
	  <tr> 
		<td>Mensagem<br> <textarea name="texto" cols="38" rows="5" id="texto"></textarea> 
		</td>
	  </tr>
	  <tr> 
		<td> <div align="center"> 
			<input type="submit" name="Submit" value="Enviar">
		  </div></td>
	  </tr>
	</table>
	<input type="hidden" name="MM_insert" value="form">
  </form>
</div>
</body>
</html>
<%
Classif_equipamentos.Close()
Set Classif_equipamentos = Nothing
%>

Alguém pode me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo.

Tudo bem?

 

Tive uma idéia pra resolver teu problema.

Você pode fazer via Java Script com DOM mudando o 'ACTION' duas vezes no mesmo Script.

E aí na tag FORM, tem um parâmetro 'target'. Use _blank. Isso significa que o formulário quando submetido abrirá uma página em branco e não mais fará na mesma.

Dessa forma você pode conseguir abrir duas telas distintas submetendo coisas diferentes através do Java Script. Pegou a idéia?

 

No seu formulário:

 

<form name="formulario" target="_blank" method="POST" action="tantofaz.asp">

Tire o botão da tipagem submit e deixe apenascomo 'button', normal. Ou seja, apenas um botão.

Depois, configure no evento onClick do botão o seu código para uma função que você vai criar lá no final da página.

Vai ficar assim seu botão:

 

<input type="button" value="Mandar dois submits" onClick="vamoLa();">

Já na função:

<script>
function vamoLa(){
document.formulario.action = 'MandarEmail.asp';
 document.formulario.submit();

document.formulario.action = 'MandarDados.asp';
document.formulario.submit();
}
</script>

Assim, ele dará dois submits, cada vez para um lugar diferente, e cada submit indo para uma página diferente. O acesso em raiz aos elementos HTML via DOM possibilitou essa manobra. E é importante na sua tag de formulário incluir o target="_blank". Caso contrário ele vai submeter apenas uma vez e vai logo trocar de página, impossibilitando o novo submit. Importante também deixar o type do seu botão como 'button', e não mais como submit. Se não vai dar altos problemas.

 

É fácil.

 

Abraços,

Giancarlo Braga

Compartilhar este post


Link para o post
Compartilhar em outros sites

Giancarlo:

 

Agradeço muito, mas eu fiz o que me passou e o formulário não funcionou

Nem inseriu nem enviou os e-mails, acredito que einda falte alguma coisa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Talvez tb eu tenha deixado algo incorreto, abaixo o código:

 

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!--#include file="Connections/Menu.asp" -->
<%
' *** Edit Operations: declare variables

Dim MM_editAction
Dim MM_abortEdit
Dim MM_editQuery
Dim MM_editCmd

Dim MM_editConnection
Dim MM_editTable
Dim MM_editRedirectUrl
Dim MM_editColumn
Dim MM_recordId

Dim MM_fieldsStr
Dim MM_columnsStr
Dim MM_fields
Dim MM_columns
Dim MM_typeArray
Dim MM_formVal
Dim MM_delim
Dim MM_altVal
Dim MM_emptyVal
Dim MM_i

MM_editAction = CStr(Request.ServerVariables("SCRIPT_NAME"))
If (Request.QueryString <> "") Then
  MM_editAction = MM_editAction & "?" & Request.QueryString
End If

' boolean to abort record edit
MM_abortEdit = false

' query string to execute
MM_editQuery = ""
%>
<%
' *** Insert Record: set variables

If (CStr(Request("MM_insert")) = "formulario") Then

  MM_editConnection = MM_Menu_STRING
  MM_editTable = "Classf_equipamentos"
  MM_editRedirectUrl = "classif_2.asp"
  MM_fieldsStr  = "nome|value|email|value|texto|value"
  MM_columnsStr = "Nome|',none,''|Email|',none,''|Texto|',none,''"

  ' create the MM_fields and MM_columns arrays
  MM_fields = Split(MM_fieldsStr, "|")
  MM_columns = Split(MM_columnsStr, "|")
  
  ' set the form values
  For MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2
	MM_fields(MM_i+1) = CStr(Request.Form(MM_fields(MM_i)))
  Next

  ' append the query string to the redirect URL
  If (MM_editRedirectUrl <> "" And Request.QueryString <> "") Then
	If (InStr(1, MM_editRedirectUrl, "?", vbTextCompare) = 0 And Request.QueryString <> "") Then
	  MM_editRedirectUrl = MM_editRedirectUrl & "?" & Request.QueryString
	Else
	  MM_editRedirectUrl = MM_editRedirectUrl & "&" & Request.QueryString
	End If
  End If

End If
%>
<%
' *** Insert Record: construct a sql insert statement and execute it

Dim MM_tableValues
Dim MM_dbValues

If (CStr(Request("MM_insert")) <> "") Then

  ' create the sql insert statement
  MM_tableValues = ""
  MM_dbValues = ""
  For MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2
	MM_formVal = MM_fields(MM_i+1)
	MM_typeArray = Split(MM_columns(MM_i+1),",")
	MM_delim = MM_typeArray(0)
	If (MM_delim = "none") Then MM_delim = ""
	MM_altVal = MM_typeArray(1)
	If (MM_altVal = "none") Then MM_altVal = ""
	MM_emptyVal = MM_typeArray(2)
	If (MM_emptyVal = "none") Then MM_emptyVal = ""
	If (MM_formVal = "") Then
	  MM_formVal = MM_emptyVal
	Else
	  If (MM_altVal <> "") Then
		MM_formVal = MM_altVal
	  ElseIf (MM_delim = "'") Then  ' escape quotes
		MM_formVal = "'" & Replace(MM_formVal,"'","''") & "'"
	  Else
		MM_formVal = MM_delim + MM_formVal + MM_delim
	  End If
	End If
	If (MM_i <> LBound(MM_fields)) Then
	  MM_tableValues = MM_tableValues & ","
	  MM_dbValues = MM_dbValues & ","
	End If
	MM_tableValues = MM_tableValues & MM_columns(MM_i)
	MM_dbValues = MM_dbValues & MM_formVal
  Next
  MM_editQuery = "insert into " & MM_editTable & " (" & MM_tableValues & ") values (" & MM_dbValues & ")"

  If (Not MM_abortEdit) Then
	' execute the insert
	Set MM_editCmd = Server.CreateObject("ADODB.Command")
	MM_editCmd.ActiveConnection = MM_editConnection
	MM_editCmd.CommandText = MM_editQuery
	MM_editCmd.Execute
	MM_editCmd.ActiveConnection.Close

	If (MM_editRedirectUrl <> "") Then
	  Response.Redirect(MM_editRedirectUrl)
	End If
  End If

End If
%>
<%
Dim Classif_equipamentos
Dim Classif_equipamentos_numRows

Set Classif_equipamentos = Server.CreateObject("ADODB.Recordset")
Classif_equipamentos.ActiveConnection = MM_Menu_STRING
Classif_equipamentos.Source = "SELECT * FROM Classf_equipamentos"
Classif_equipamentos.CursorType = 0
Classif_equipamentos.CursorLocation = 2
Classif_equipamentos.LockType = 1
Classif_equipamentos.Open()

Classif_equipamentos_numRows = 0
%>
<html>
<head>
<title>Classificados</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<script>
function vamoLa(){
document.formulario.action = 'MandarEmail.asp';
document.formulario.submit();

document.formulario.action = 'MandarDados.asp';
document.formulario.submit();
}
</script>

<body>
<div align="center">
  <form action="<%=MM_editAction%>" target="_blank" method="POST" name="formulario">
	<table width="350" border="0" align="center" cellpadding="0" cellspacing="7">
	  <tr> 
		<td>Nome<br> <input name="nome" type="text" id="nome" size="50"> </td>
	  </tr>
	  <tr> 
		<td>E-mail<br> <input name="email" type="text" id="email" size="50"> </td>
	  </tr>
	  <tr> 
		<td>Mensagem<br> <textarea name="texto" cols="38" rows="5" id="texto"></textarea> 
		</td>
	  </tr>
	  <tr> 
		<td> <div align="center"> 
			<input type="button" name="Submit" value="Enviar" onClick="vamola();">
		  </div></td>
	  </tr>
	</table>
	<input type="hidden" name="MM_insert" value="formulario">
  </form>
</div>
</body>
</html>
<%
Classif_equipamentos.Close()
Set Classif_equipamentos = Nothing
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.