Ir para conteúdo

POWERED BY:

Arquivado

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

elton73ssa

Capturar dados do form sem enviar

Recommended Posts

Olá,

 

Eu tenho um form que é enviado por email. Até aí tudo bem.

 

Só que quando o visitante muda de página dentro do site os dados digitados no form somem... Eu gostaria de manter esses dados mesmo ele clicando em outro link do site sem enviar o form.

 

Tentei capturar o que é digitado com js mas quando troca-se de link nao consigo capturar a variável.

 

Alguém tem uma idéia de como fazer?

 

Eu programo apenas em PHP... ASP estou engatinhando e JS estou me matando...

Compartilhar este post


Link para o post
Compartilhar em outros sites

pode guardar em uma sessao os dados cadastrados. faz um ajax que vai salvando nessa sessao os dados a cada modificação dos campos do form

Compartilhar este post


Link para o post
Compartilhar em outros sites

pode guardar em uma sessao os dados cadastrados. faz um ajax que vai salvando nessa sessao os dados a cada modificação dos campos do form

 

Os dados não foram cadastrados...eles só foram digitados.

 

É tipo um carrinho. A pessoa vai escolhendo os produtos e no final manda o email com o nome dos produtos.

O problema é que, se após preencher o form ele esquecer de adicionar um produto e clicar num link de outra categoria, ele vai para essa pagina, os produtos ficam, mas os dados do form não...

 

Detalhe... Não sei ajax...

Compartilhar este post


Link para o post
Compartilhar em outros sites

sua saida é usar uma sessao ou banco de dados(aconselho a sessao).

 

de uma olhada no jquery, ele tem ajax e tem um plugin que faz esse "auto save". não tem misterio o uso do ajax, você vai fazer via javascript uma requisição no servidor que vai acessar a página que vai adicionar na sessao os dados que você postou no form

Compartilhar este post


Link para o post
Compartilhar em outros sites

sua saida é usar uma sessao ou banco de dados(aconselho a sessao).

 

de uma olhada no jquery, ele tem ajax e tem um plugin que faz esse "auto save". não tem misterio o uso do ajax, você vai fazer via javascript uma requisição no servidor que vai acessar a página que vai adicionar na sessao os dados que você postou no form

 

 

Putz... Vou tentar digerir isso e procurar um pouco mais no pai dos desesperados (Google) :blink:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pequisei, pesquisei e não achei um exemplo prático...

 

Acho q uma solução seria transformar o link em ajax para o resultado aparecer numa div... assim nao dava refresh na página.

 

Mas nem isso consegui fazer... Os links são gerados dinamicamente com base na consulta do bd:

 

<%
						  SQL = "Select * from tb_categoria order by cd_categoria"
						  set rsOut = conexao.execute(SQL)
						  do until rsOut.eof
						  %>
                          <tr> 
                            <td>
                            <strong><a href="default.asp?cat=<%=rsout("cd_categoria")%>">» 
                              <%=rsOut("categoria")%>
                              </a></strong></td>
                          </tr>
                          <%
						  rsOut.movenext
						  loop
						  %>

Preciso que esse link nao dê refresh na página, para assim os dados digitados previamente no form não sumam... :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

É soh você criar um form na outra página e colocar o digitado anteriormentes em campos escondidos.

Por exemplo:

Na página do formulário você tem o campo Nome.

Na outra página você vai pegar esse campo assim Request.Form("Nome").

Dae isso você coloca num campo escondido.

<input type='hidden' name='nome' value='<%=Request.Form("Nome")%>' />

Compartilhar este post


Link para o post
Compartilhar em outros sites

É soh você criar um form na outra página e colocar o digitado anteriormentes em campos escondidos.

Por exemplo:

Na página do formulário você tem o campo Nome.

Na outra página você vai pegar esse campo assim Request.Form("Nome").

Dae isso você coloca num campo escondido.

<input type='hidden' name='nome' value='<%=Request.Form("Nome")%>' />

 

 

Assim não vai... pq o form cujos dados digitados eu preciso clonar está num local diferente do link que eu clico. E esse link leva para uma mesma página e já carrega uma variável...

 

<a href="default.asp?cat=<%=rsout("cd_categoria")%>">» 
<%=rsOut("categoria")%>
</a>

A solução que mais se aproximou foi a do jquery autosave, mas não enocntrei um exemplo prático de como usar isso... :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara em relação ao auto save do jquery, de uma passada lá na seção javascript aqui do fórum, o pessoal vai poder te da uma forcinha.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu fiz meu proprio auto save, que ficou tipo gmail, enquanto vai digitando ele já vai salvando. esse do plugin faz ao sair do campo...de repente ele tem uma propriedade pra fazer o salvamento durante a digitação

Compartilhar este post


Link para o post
Compartilhar em outros sites

uma simples busca no site do jquery por "autosave" resolve a metade do problema

 

http://plugins.jquery.com/project/autosave

 

demo: http://raymond.raw.no/jquery-autosave/

 

 

Valeu... Eu já tinha visto esse exemplo e nao entendi muito bem... Pesquisando mais encontrei outro exemplo : http://jetlogs.org/2007/11/11/auto-saving-with-jquery/

 

Agora pra montar minha lógica eu tenho uma duvida...

 

Vejam se minha lógica está correta:

 

1 - Ao entrar na página ou clicar num link (que vai para a mesma pagina mas carrega uma variavel) eu executo um SELECT procurando pela variável "sessão"

 

sessao = session.SessionID
session.Timeout = 20

Se não achar eu realizo um INSERT, onde ele grava numa tabela os campos do form e uma variavel "sessao"

 

Logicamente vai inserir dados vazios do form e apenas a sessao terá um conteúdo.

 

Nos campos do form eu já terei um response.write puxando os dados da tabela de acordo com o SELECT.

 

2 - No autosave eu faço o UPDATE dos dados que forem digitados no form. Então toda vez que eu ir pra algum link na mesma página o SELECT vai carregar no form o que já foi digitado de acordo com a sessao atual.

 

Quando eu realmente enviar o form eu mato a sessao e limpo os dados que estiverem cadastrados na tabela de acordo com a sessao atual.

 

Tem algum problema aí?

 

Minha dúvida é: Se varias pessoas abrirem o site ao mesmo tempo cada uma terá uma sessionId diferente?

Compartilhar este post


Link para o post
Compartilhar em outros sites

o session ID é unico pra cada sessao aberta

 

problema está se a pessoa não efetivar o envio do form, você terá dados inutes armazenados na base. terá que fazer uma rotina pra limpar o lixo

Compartilhar este post


Link para o post
Compartilhar em outros sites

o session ID é unico pra cada sessao aberta

 

problema está se a pessoa não efetivar o envio do form, você terá dados inutes armazenados na base. terá que fazer uma rotina pra limpar o lixo

 

 

Valeu.

 

É como eu disse... na hora de enviar o form de fato eu vou apagar os registros dessa tabela.

 

Mas está acontecendo um problema aqui. O certo era não duplicar a sessao dentro da tabela, mas está duplicando. Alguem poderia me dizer onde está o erro?

 

sessao = session.SessionID
session.Timeout = 20

'primeiro eu busco na tabela se tem dados digitados de acordo com a sessao atual
SQLselX = "SELECT * FROM tb_orcamento"
set rsOutselX = conexao.execute(SQLselX)

'retorno a sessao q foi gravada
sessao_grav = rsOutselx("sessao")

' se a sessao que foi gravada for diferente da atual
if sessao_grav <> sessao then

'eu insiro a sessao atual
SQLin = "INSERT INTO tb_orcamento (sessao,nome,email,empresa,endereco,data,telefone,celular,obs) VALUES ('"&sessao&"','','','','','','','','')"

set rsOutin = conexao.execute(SQLin)

'se a sessao que foi gravada for igual a atual eu realizo apenas uma consulta
'isso evita que eu insira mais de uma vez a mesma sessao na tabela.
else

SQLsel = "SELECT * FROM tb_orcamento WHERE sessao="&sessao
set rsOutsel = conexao.execute(SQLsel)

end if

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente assim:

if cLng(sessao_grav) <> cLng(sessao) then

 

Poste o resultado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Tente assim:

if cLng(sessao_grav) <> cLng(sessao) then

 

Poste o resultado.

 

 

Não funcionou, amigo. continua duplicando a sessçao na tabela. :(

 

 

Coloquei um loop pra verificar todos os campos da tabela... agora está incluindo apenas duas vezes... Falta pouco..rs. O certo seria inclui apenas uma...

 

Do While Not rsOutselX.EOF

'retorno a sessao q foi gravada
sessao_grav = rsOutselx("sessao")

rsOutselx.MoveNext
Loop




' se a sessao que foi gravada for diferente da atual
if cLng(sessao_grav) <> cLng(sessao) then

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolvido até aqui. Enquanto a sessão for a que está gravada ele não faz o INSERT.

 

Porém, me deparei com outro problema....

 

No PHP o autosave(jquery) salva exatamente como foi digitado; no ASP não.

 

Se eu digitar: Epifânio De Lascau ele grava EpifânioDeLascau <_<

 

Alguém?

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.