Ir para conteúdo

POWERED BY:

Arquivado

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

fabiapo

[Resolvido] Popular campos após submit do form

Recommended Posts

Pessoal,

 

Após submeter o formulário, todos os campos são limpos.

 

Existe alguma forma, em javascript ou php, onde após submeter o formulário eu possa resgatar os dados informados e popular novamente em caso de erro?

 

Obrigada!

Compartilhar este post


Link para o post
Compartilhar em outros sites

<input type="text" name="tal" value="<?php echo $var; ?>" />
sendo $var, a variável que guarda o valor que foi enviado desse campo.

Depende de onde você processa o formulário. Como está o action="" ? pode trabalhar com SESSION, COOKIE..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Outro detalhe: tentei fazer inserindo nos values dos campos $_REQUEST, porém, não consigo limpar os campos, caso seja necessário com o botão reset.

Compartilhar este post


Link para o post
Compartilhar em outros sites

William,

 

O meu form está da seguinte forma:

 

- Eu trabalho com um template onde o action do form aponta para a mesma página e no rodapé da página eu chamo a página PHP de tratamento que captura os dados via $_REQUEST.

 

Se eu trabalhar com SESSION, como faço para limpar quando clicar no botão reset?

 

Não há algum problema com a segurança dos dados?

 

Obrigada!

 

 

<input type="text" name="tal" value="<?php echo $var; ?>" />
sendo $var, a variável que guarda o valor que foi enviado desse campo.

Depende de onde você processa o formulário. Como está o action="" ? pode trabalhar com SESSION, COOKIE..

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Trabalhe, via $_POST, nao $_REQUEST.

Dae se ouver um erro e tals...

você coloca as variaveis que você pegou pelo POST e coloca no campo

 

$nome = $_POST['nome'];
<input type='text name='nome' value='<?=$nome?>'>

Compartilhar este post


Link para o post
Compartilhar em outros sites

como faço para limpar quando clicar no botão reset?

O type="reset" retorna os campos para o valor default deles ne?!

então nesse caso, o teu reset, terá que aplicar um: .value=''

 

 

Não há algum problema com a segurança dos dados?

? onde ?

São dados digitados pelo usuário, não sei bem como funciona 'interceptação' de seção.. mas não vejo nenhuma 'brecha' grave ai.

 

 

Só um detalhe:

$nome = $_POST['nome'];
<input type='text name='nome' value='<?=$nome?>'>
delimite os atributos HTML com aspas duplas. É uma 'boa prática', que pode evitar algumas dores de cabeça.

evite: <?= prefira a tag completa: <?php essa diretiva(short_open_tag) não estará mais configurável nas próximas versões do php.

$nome = $_POST['nome'];
essa atribuição é totalmente desnecessária.

<input type="text" name="nome" value="<?php echo $_POST['nome']; ?>" />
Mas isso só funcionará, se estiver processando o form na mesma página(action=""), que acredito não ser o caso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

e como sei em PHP que o botão reset foi pressionado? Qual o comando para identificar que o botão foi pressionado para que eu possa setar branco?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma função, outro botão.

<input type="button" name="reset" value="Limpar" onclick="resetar_form()"  />

<script type="text/javascript">
function resetar_form()
{
   document....value='';
   document....value='';
   document....value='';
}
</script>
tem como melhorar isso, com laços..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo que entendi seria esta a solução: (bem simples)

Vou colocar o code de como fiz num cadastro:

if($nomecpl == '' || $cpf == ''){
	echo '<script>window.setTimeout("Funcao()", 5000);</script>' ;
	echo '<center>O campo nome e CPF são campos obrigatórios verifique o preenchimento <br />';
	echo 'Esta página se auto-redirecinará em 5 segundos,<br /> se não deseja esperar, ou a página não se redirecionou clique';
	echo ' <a href="javascript:history.back();">Aqui</a></center>';
sendo Funcao():

function Funcao() {history.back(1)}
Tanto no caso da pessoa clicar no 'Aqui' ou esperar e redirecionar funciona corretamente...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ou

 

function limpar()
{
   var input = document.getElementsByTagName('input');
	
    for(var i=0; i<input.length; i++)
	{                     
		switch (input[i].type)
		{
			case 'text':   
				input[i].value  = ''; 
			break;
		}
	}
}
</script>

<input type='button' onclick='limpa()'>

 

Limpa tudo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal,

 

Daí está o problema. Enquanto o valor do $_POST estiver populado e tentarmos limpar os campos, ele limpa mas volta a popular com o valor de $_POST.

 

Já tentei isto uma vez e não funcionou.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ele limpa mas volta a popular com o valor de $_POST.

 

? como você tentou limpar? aplicou alguma das soluções em Javascript aqui apresentadas?

se fizer corretamente, isso não vai acontecer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz com solução JQUERY (javascript):

 

Ao clicar no botão reset, eu faço assim:

 

$("#campo").val('');

 

Mesmo assim, o valor volta para o campo, pois o formulário, em caso de erro, não foi submetido e ainda contém dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sinceramente então, não entendi nada.

O problema não era fazer o valor ficar no campo?

 

Agora você o tem lá (eu acho), e um reset que funciona.

 

E esse trecho:

o formulário, em caso de erro, não foi submetido e ainda contém dados.

?

não era esse o problema?

 

submeter o formulário e perder os dados em caso de erro?

por isso sugerimos preencher o value dos campos.

 

E para o reset, fazer outro botão com Javascript. Não sei como te ajudar, está tudo muito confuso.

O processo não ficou claro. E você até agora não postou nenhum código para testarmos, e ver o problema ocorrendo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acabaram complicando o usuario com mais duvidas, e o botao reset serve para limpar os campos, nao pecisa criar nenhuma função para isso

 

para garantir que os campos sempre fiquem preenchidos você deve pegar todos os campos e salvar em variaveis e setar no value de cada campo

 

mas se for um simples cadastro sem muita importancia você pode usar o proprio javascript para manter os dados

 

history.go(-1)

Compartilhar este post


Link para o post
Compartilhar em outros sites

William, existem dois problemas:

 

- Primeiro: Ao enviar o formulário, se houverem erros no processamento das informações, os dados se perdem e o usuário terá que preencher os dados novamente

- Segundo: Se tentarmos setar no value de cada campo o valor $_POST["valor"] de cada campo, se o usuário decidir apagar tudo e começar novamente, os dados permanecem setados e, se limparmos os campos com $("#campo").val('') os campos são limpos e em seguida populados novamente pois o valor $_POST ainda permanece preenchido com um valor.

 

Não enviei o código pois trata-se de um formulário em HTML com FORM action igual a POST e capturamos os dados em outro arquivo que tem acesso ao banco de dados para processamento das informações submetidas. Achei que este era o padrão de um formulário PHP.

Compartilhar este post


Link para o post
Compartilhar em outros sites

- Segundo: Se tentarmos setar no value de cada campo o valor $_POST["valor"] de cada campo, se o usuário decidir apagar tudo e começar novamente, os dados permanecem setados e, se limparmos os campos com $("#campo").val('') os campos são limpos e em seguida populados novamente pois o valor $_POST ainda permanece preenchido com um valor.

 

Para contornar este problema de o post aparecer preenchido, mesmo se ele clicar em reset, elimine a $_POST após preencher todos os campos.

Veja que a $_POST não será mais necessária neste caso, porque se o usuário enviar novamente, ela vai ser reescrita. Então, utilizando o unset($_POST) deve resolver o seu problema.

 

Carlos Eduardo

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.