Ir para conteúdo

POWERED BY:

Arquivado

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

Marcio Colferai

Problemas no Envio de Formulário

Recommended Posts

Olá galera, Estou fazendo um site para um amigo, porem nao sou um mega expert em programação. Tenho um script EM ASP de formulário que funciona perfeitamente, porem , surgiu a necessidade de incluir campos de formulário onde por exemplo o cliente possa add mais campos ao formulário atraves de um botão. Depois de 2 dias de procura consegui o script perfeito em javascript, vcs podem acessar atraves desse endereço para entender melhor o que eu digo.. www.strattcargas.com.br/teste.html . até ai blza.

O problema esta em que quando pede-se para criar mais campos, o java script faz isso, porem na hora de enviar os dados para meu e-mail por exemplo nao sei como desenvolver uma rotina que faça o script em ASP ler aquele novo campo e enviar as informações. segue um exemplo do script que uso em ASP para envio de formulário

<%
DIM qtyl, type1, orderdesc, assunto, unitprice, ordertotal, email
DIM Mail 
qtyl = Request.Form("qtyl")
type1 = Request.Form("type1")
orderdesc = request.Form("orderdesc")
assunto = Request.Form("assunto")
unitprice = Request.Form("unitprice")
ordertotal = Request.Form("ordertotal")
email = Request.Form("email")
Set Mail = Server.CreateObject("Persits.MailSender") 
Mail.IsHTML = True 
Mail.Host = " "
Mail.Username = "" 
Mail.Password = "" 
Mail.From = Request.Form("") 
Mail.FromName = Request.Form("")
Mail.AddAddress ""
Mail.AddCC ""
Mail.Subject = "" 
Mail.Body = "<html><body><b><h1>Olá, Novo Contato Efetuado atraves do site</b></h1><br><br><br>"
Mail.Body = Mail.Body & "<b>Tipo:</b>" & qtyl & "<br>"
Mail.Body = Mail.Body & "<b>Qauntidade:</b>" & type1 & "<br>"
Mail.Body = Mail.Body & "<b>Descricao:</b> " & OrderDesc & "<br>"
Mail.Body = Mail.Body & "<b>Preco:</b> " & UnitPrice & "<br>"
Mail.Body = Mail.Body & "<b>Total:</b> " & OrderTotal & "<b>
e por ai vai o código,.

Segue o Código javaScript que cria os novos campos.

<script LANGUAGE="JavaScript"> 


function addRowToTable() 
{ 
var tbl = document.getElementById('ordertbl'); 
var lastRow = tbl.rows.length; 
// if there's no header row in the table, then iteration = lastRow + 1 
var iteration = lastRow; 
var row = tbl.insertRow(lastRow); 

// Number Cell 
var cellLeft = row.insertCell(0); 
var textNode = document.createTextNode(iteration); 
cellLeft.setAttribute('bgColor', '#FFFFFF'); 
cellLeft.setAttribute('align', 'center'); 
cellLeft.appendChild(textNode); 


// Qty Cell
var cellRight1 = row.insertCell(1);
var sel = document.createElement('select');

//cria os options
var opt1 = document.createElement('option');
var opt2 = document.createElement('option');
var opt3 = document.createElement('option');
var opt4 = document.createElement('option');
var opt5 = document.createElement('option');
var opt6 = document.createElement('option');
var opt7 = document.createElement('option');

//muda alguns atributos do select
cellRight1.setAttribute('align', 'center');
cellRight1.setAttribute('bgColor', '#FFFFFF');
sel.setAttribute('name', 'Qty' + iteration);
sel.setAttribute('id', 'Qty' + iteration);

//coloca os values no options
opt1.setAttribute('value', 'not selected');
opt2.setAttribute('value', 'GP');
opt3.setAttribute('value', 'HC');
opt4.setAttribute('value', 'RF');
opt5.setAttribute('value', 'FR');
opt6.setAttribute('value', 'OT');
opt7.setAttribute('value', 'NOR');

//coloca um nodo de texto em cada option
opt1.appendChild(document.createTextNode('not selected'));
opt2.appendChild(document.createTextNode('GP'));
opt3.appendChild(document.createTextNode('HC'));
opt4.appendChild(document.createTextNode('RF'));
opt5.appendChild(document.createTextNode('FR'));
opt6.appendChild(document.createTextNode('OT'));
opt7.appendChild(document.createTextNode('NOR'));

//adiciona os options criados no select
sel.appendChild(opt1);
sel.appendChild(opt2);
sel.appendChild(opt3);
sel.appendChild(opt4);
sel.appendChild(opt5);
sel.appendChild(opt6);
sel.appendChild(opt7);

//adiciona o select recém criado à nova célula
cellRight1.appendChild(sel);

// Type Cell 
var cellRight2 = row.insertCell(2); 
var e2 = document.createElement('input'); 
cellRight2.setAttribute('align', 'center'); 
cellRight2.setAttribute('bgColor', '#FFFFFF'); 
e2.setAttribute('type', 'text'); 
e2.setAttribute('name', 'Type1' + iteration); 
e2.setAttribute('id', 'Type1' + iteration); 
e2.setAttribute('size', '12'); 
cellRight2.appendChild(e2); 

// Description Cell 
var cellRight3 = row.insertCell(3); 
var e3 = document.createElement('textarea'); 
cellRight3.setAttribute('align', 'center'); 
cellRight3.setAttribute('bgColor', '#FFFFFF'); 
e3.setAttribute('name', 'OrderDesc' + iteration); 
e3.setAttribute('id', 'OrderDesc' + iteration); 
e3.setAttribute('cols', '42'); 
e3.setAttribute('wrap','VIRTUAL'); 
cellRight3.appendChild(e3); 

// Price Cell 
var cellRight4 = row.insertCell(4); 
var e4 = document.createElement('input'); 
var text = document.createTextNode(""); 
cellRight4.setAttribute('align', 'center'); 
cellRight4.setAttribute('bgColor', '#FFFFFF'); 
e4.setAttribute('type', 'text'); 
e4.setAttribute('name', 'UnitPrice' + iteration); 
e4.setAttribute('id', 'UnitPrice' + iteration); 
e4.setAttribute('size', '3'); 
cellRight4.appendChild(text); 
cellRight4.appendChild(e4); 


// Total Cell 
var cellRight5 = row.insertCell(5); 
var e5 = document.createElement('input'); 
e5.setAttribute('type', 'text'); 
e5.setAttribute('name', 'OrderTotal' + iteration); 
e5.setAttribute('id', 'OrderTotal' + iteration); 
e5.setAttribute('value', '0.00'); 
e5.setAttribute('size', '7'); 
e5.setAttribute('onchange', 'Add(this.value, this.name, this.id)'); 
cellRight5.setAttribute('align', 'center'); 
cellRight5.setAttribute('bgColor', '#FFFFFF'); 
cellRight5.appendChild(document.createTextNode("")); 
cellRight5.appendChild(e5); 

} 
function removeRowFromTable() 
{ 
var tbl = document.getElementById('ordertbl'); 
var lastRow = tbl.rows.length; 
if (lastRow > 2) tbl.deleteRow(lastRow - 1); 
} 

</script>

é isso ai se alguem puder me ajudar eu agradeceria muiiitooo, pq infelizmente nao vou conseguir desenvolver nada nesse instante , ainda estou estudando a linguagem.

 

Muito obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seja bem-vindo ao Fórum Marcio Colferai.

 

Na situação acima você tem que recuperar os dados do formulário assim:

For Each Item In Request.Form
	variaveisPost = variaveisPost & Item & "=" & Request.Form(item) & "&"
Next
Obs. Você tem que adaptar os exemplos acima a sua necessidade.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seja bem-vindo ao Fórum Marcio Colferai.

 

Na situação acima você tem que recuperar os dados do formulário assim:

For Each Item In Request.Form
	variaveisPost = variaveisPost & Item & "=" & Request.Form(item) & "&"
Next
Obs. Você tem que adaptar os exemplos acima a sua necessidade.

Muito obrigado pelas boas vindas agradeço de coração.

 

Bem assim vou bater uma real, eu juro por Deus que tentei entender aquilo que você falou, fui atraz pesquisar no google alguma ajuda extra referente ao que você falou mais nao consegui, entao se o amigo puder me dar uma explicadinha um pouquinho mais detalhada eu agradeceria muiiiitto,, conseguir fazer esse lance ai é muito importante para mim..

 

Vlw muito obrigado..

Compartilhar este post


Link para o post
Compartilhar em outros sites

na veradade, como você naun sabe o nome dos campos, pois seraum criados pelo javascript, você deve fazer um laço , um loop , ou seja um For each (para cada) item no Request.Form, k o Request.Form, irá recuerar todos os input dados pelo user...

 

For Each Item In Request.Form
	variaveisPost = variaveisPost & Item & "=" & Request.Form(item) & "&"
Next

Compartilhar este post


Link para o post
Compartilhar em outros sites

Usando o código acima na página aonde você envia o e-mail, ele vai ler todos os campos do formulário e armazenar na variável variaveisPost

 

Para você ver o funcionamento, coloque logo após:

Response.Write variaveisPost

 

Altere o & para <br> antes.

 

variaveisPost = variaveisPost & Item & "=" & Request.Form(item) & "<br />"

 

Qualquer dúvida poste aqui.

Compartilhar este post


Link para o post
Compartilhar em outros sites

só complementando a declaracaun For...Each-Next, repete um grupo de declaraçoes para cada elemento de um array ou de uma colecaun (no seu caso), o bloco é inserido sew houver pelo menos um elemento em group, depois do loop iniciado,todas suas declarações sao executadas para o 1º elemento do grupo, enaunto houver dados, as declaracoes do loop continuamsendo executadas para cada elemento,quando nao houver mais elemento ele é ecnerrado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entao só para ver se eu entendi.

 

<% 
DIM qtyl, type1, orderdesc, assunto, unitprice, ordertotal, email
DIM Mail 
qtyl = Request.Form("qtyl")
type1 = Request.Form("type1")
orderdesc = request.Form("orderdesc")
assunto = Request.Form("assunto")
unitprice = Request.Form("unitprice")
ordertotal = Request.Form("ordertotal")
email = Request.Form("email")

Set Mail = Server.CreateObject("Persits.MailSender") 
Mail.IsHTML = True 
Mail.Host = "" 
Mail.Username = "" 
Mail.Password = "" 
Mail.From = Request.Form("") 
Mail.FromName = Request.Form("Teste")
Mail.AddAddress ""
Mail.AddCC ""
Mail.Subject = "CONTATO ATRAVES DO SITE STRATT CARGAS" 

For Each Item In Request.Form
	variaveisPost = variaveisPost & Item & "=" & Request.Form(item) & "<BR />"  (o item eu troco pelo nome do campo do imput do meu form?)
Next

On Error Resume Next 
Mail.Send 
If Err <> 0 Then 
   Response.Write "<H2>Ocorreu um erro: " & Err.Description & "<br> Retorne a Página Anterior e re-inicie seu contato conosco. <br> Obrigado!</h2>" 
End If 

If Err = 0 Then 
 
Response.Redirect "http://www.strattcargas.com.br/obrigado.html" 
End If 
  
Set Mail = Nothing 

%>

CARACA É NESSES MOMENTOS QUE A GENTE VE QUE MUITO A ESTUDAR rss...

Mais muito obrigado pela ajuda dispensada..

 

Mais eu acho que nao seja isso neh.

Abraço a todos..

Compartilhar este post


Link para o post
Compartilhar em outros sites

basicamente sim

 

For Each item In Request.Form 
Response.Write item & ": " & Request.Form(item)
Next

com esse code você recupera todos os request...

depois só implementar do seu jeito

Compartilhar este post


Link para o post
Compartilhar em outros sites

O correto para você entender, seria:

<%
DIM variaveisPost

For Each Item In Request.Form
	variaveisPost = variaveisPost & Item & ": " & Request.Form(item) & "<BR />"
Next

Response.Write variaveisPost
%>

Coloque apenas isso na página de envio e veja o resultado. Depois de entender o que foi feito, aí faça:

<%
DIM qtyl, type1, orderdesc, assunto, unitprice, ordertotal, email, variaveisPost
DIM Mail
qtyl = Request.Form("qtyl")
type1 = Request.Form("type1")
orderdesc = request.Form("orderdesc")
assunto = Request.Form("assunto")
unitprice = Request.Form("unitprice")
ordertotal = Request.Form("ordertotal")
email = Request.Form("email")

For Each Item In Request.Form
	variaveisPost = variaveisPost & Item & "=" & Request.Form(item) & "<BR />"
Next

Set Mail = Server.CreateObject("Persits.MailSender")
Mail.IsHTML = True
Mail.Host = ""
Mail.Username = ""
Mail.Password = ""
Mail.From = Request.Form("")
Mail.FromName = Request.Form("Teste")
Mail.AddAddress ""
Mail.AddCC ""
Mail.Subject = "CONTATO ATRAVES DO SITE STRATT CARGAS"
Mail.Body = variaveisPost

On Error Resume Next
Mail.Send
If Err <> 0 Then
   Response.Write "<H2>Ocorreu um erro: " & Err.Description & "<br> Retorne a Página Anterior e re-inicie seu contato conosco. <br> Obrigado!</h2>"
End If

If Err = 0 Then

Response.Redirect "http://www.strattcargas.com.br/obrigado.html"
End If
  
Set Mail = Nothing
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

qual seria a real necessidade de criar mais campos, pois lembre-se k um user mal intensionado, pode tentar dar um overload na sua page...

Compartilhar este post


Link para o post
Compartilhar em outros sites

qual seria a real necessidade de criar mais campos, pois lembre-se k um user mal intensionado, pode tentar dar um overload na sua page...

Maninho é que assim.. Estou fazendo um form. de cotação, entao o cliente enviará dados referente a sua cotação.. O site é sobre transportadora, e eles trabalhao com mudanças, dentro da mesma cidade e fora da cidade.. e fora os dados normais, de destino nome email e por ai vai . existe a necessidade de o cliente enviar uma descrição dos bens dele, tipo, quantas geladeiras tem.. quantos sofas e por ai vai, as coisas mais brutas.. para que eles tenham uma listagem completa antes de enviar por email o preço para o cliente..

 

Nessa tabela descritiva dos bens , existe uns 40 campos, e eu achei muito inviável fazer um campo para cada coisa,., quero fazer um combox com todos os móveis possiveis dentro de uma casa ou escritorio, ai o cliente seleciona o móvel, coloca a quantidade ao lado em outra imput, e se tiver mais coisa ele pode ir add informações, até nao precisar mais ..

 

E enviar tudo isso pára nos..

 

Esse é a real necessidade..

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode colocar o combo com os varios moveis e tb um combo ,com o numero de itens, tipo de 1 a 10, dificilmente tera um cliente com masi de 10 TV,geladira etc

e caso por exemplo, exista mais itens, você poderia ter um campo tipo de observacao, onde ele entra com o texto, separado por virgula por exemplo, ou outro combo tb, um checkbox..., pois tem k tomar cuidado , no caso de o user errar ou tentar um flood no seu email

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode colocar o combo com os varios moveis e tb um combo ,com o numero de itens, tipo de 1 a 10, dificilmente tera um cliente com masi de 10 TV,geladira etc

e caso por exemplo, exista mais itens, você poderia ter um campo tipo de observacao, onde ele entra com o texto, separado por virgula por exemplo, ou outro combo tb, um checkbox..., pois tem k tomar cuidado , no caso de o user errar ou tentar um flood no seu email

Certo Entendi sua preocupação,, vou ver oque fica mais interessante maninho.. é que assim eu achei massa a questao de o usuário poder add campos de acordo com a necessidade.

 

Vou fazer um teste se eu ver que vai dar problema eu corto a parada e faço de uma maneira mais simples mesmo;

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

maravilha, analise o melhor método para seu cliente, e surgindo duvidas , posta ae...

Compartilhar este post


Link para o post
Compartilhar em outros sites

maravilha, analise o melhor método para seu cliente, e surgindo duvidas , posta ae...

Maninho muito obrigado..

 

Acredito que terei soh mais uma duvidazinha relacionada a questao do

 

For Each Item In Request.Form
	variaveisPost = variaveisPost & Item & "=" & Request.Form(item) & "&"
Next

ai depois eu posto.,.

 

Estou tentando desenvolver uma ideia apenas sobre esse lance...

DAndo certo vou postar aqui o resultado..

 

Vlw. brow..

Compartilhar este post


Link para o post
Compartilhar em outros sites

E ai galera..,Quero dizer que deu muito certo o script muito obrigado mesmo pela ajuda e o melhor de tudo é que aprendi a usar essa ferramenta achei ela muito bacana.

 

Agora surgiu uma outra dúvida.. A ferramenta esta funcionando 100% porem na hora que ela envia os dados para meu e-mail, eu gostaria de verificar a possibilidade de formatar a maneira de ela j0ogar as informações para o e-mail.

 

è que assim ele esta mandando tudo desorganizado. vou mostrar um exemplo.

 

" Olá Novo Contato Efetuado atraves do site

 

 

DADOS DOS MOVEIS:

 

MOVEIS=GELADEIRA

 

MOVEIS3=SOFA

 

QUANTIDADE=1

 

QUANTIDADE2=2

 

QUANTIDADE3=3

 

QUANTIDADE4=4

 

MOVEIS2=TELEVISOR

 

MOVEIS4=MESA

 

"

 

Saca? ele esta jogando sem uma ordem legal,.. eu gostaria que se pudesse que ele fizesse da seguinte maneira..

 

" Olá Novo Contato Efetuado atraves do site

 

 

DADOS DOS MOVEIS:

 

MOVEIS=GELADEIRA

QUANTIDADE=1

 

 

MOVEIS2=TELEVISOR

QUANTIDADE2=2

 

MOVEIS3=SOFA

QUANTIDADE3=3

 

MOVEIS4=MESA

QUANTIDADE4=4

"

Tipo assim que ele ficasse organizado assim como o formulário, o NOme do "bem" e sua respectiva quantidade.

 

Vlw gente muito obrigado novamente..

Compartilhar este post


Link para o post
Compartilhar em outros sites

no seu proprio code tinha a maneira

 

Mail.Body = "<html><body><b><h1>Olá, Novo Contato Efetuado atraves do site</b></h1><br><br><br>"
Mail.Body = Mail.Body & "<b>Tipo:</b>" & qtyl & "<br>"
Mail.Body = Mail.Body & "<b>Qauntidade:</b>" & type1 & "<br>"
Mail.Body = Mail.Body & "<b>Descricao:</b> " & OrderDesc & "<br>"
Mail.Body = Mail.Body & "<b>Preco:</b> " & UnitPrice & "<br>"
Mail.Body = Mail.Body & "<b>Total:</b> " & OrderTotal & "<b>

esta é a formatação html sacou? é desta maneira que tu tem que fazer

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim sim claro maninho, porem você diz para eu utilizar dessa maneira mesmo usando apenas a funçao

 

For Each Item In Request.Form
	variaveisPost = variaveisPost & Item & "=" & Request.Form(item) & "<BR /><br />"
Next

Pq acredito que a coisa mude agora neh, naos estou mais usando aquelas variáveis.

 

esta assim o Cod.

 

<%
DIM variaveisPost
DIM Mail

For Each Item In Request.Form
	variaveisPost = variaveisPost & Item & "=" & Request.Form(item) & "<BR /><br />"
Next

Set Mail = Server.CreateObject("Persits.MailSender") 
Mail.IsHTML = True 
Mail.Host = "" 
Mail.Username = "" 
Mail.Password = "" 
Mail.From = Request.Form("") 
Mail.FromName = Request.Form("Teste")
Mail.AddAddress ""
Mail.AddCC ""
Mail.Subject = "CONTATO ATRAVES DO SITE "

Mail.Body = "<html><body><b><h1>Olá, Novo Contato Efetuado atraves do site</b></h1><br><br><br>"
Mail.Body = Mail.Body & "<b>DADOS DOS MOVEIS:</b><BR /><br /> " &  variaveisPost & ""
Mail.Body = Mail.Body & "</body></html>"

On Error Resume Next
Mail.Send
If Err <> 0 Then
   Response.Write "<H2>Ocorreu um erro: " & Err.Description & "<br> Retorne a Página Anterior e re-inicie seu contato conosco. <br> Obrigado!</h2>"
End If

If Err = 0 Then

Response.Redirect ""
End If
  
Set Mail = Nothing
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ha sim, agora li o tópico inteiro e entendi.

 

Neste caso acho eu que seria possível criando variaveis nominativas a cada elemento e depois as montando da maneira correta, porém será muito trabalhoso e será uma gambiarra, vamos esperar os caras que te ajudaram até aqui para ver se existe uma solução mais prática para este caso.

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.