Ir para conteúdo

POWERED BY:

Arquivado

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

G.Soares

[Resolvido] Impedir campos do form de ficarem vazios

Recommended Posts

Galera, tenho um formulário e nele as pessoas conseguem enviar o formulário deixando campos vazios. O que posso fazer pra evitar isso?

Queria assim. Ao invés de aparecer a mensagem "Mensagem enviada com sucesso!" e enviasse, queria que não enviasse e aparecesse "Certifique-se que todos os campos foram preenchidos corretamente e tente novamente."!

 

<form action="index.php?p=contato_enviado" method="post" name="form_contato" id="form_contato">
<p><input name="nome" type="text" class="conteúdo" id="nome" value="Nome" size="25" onfocus="if(!this._haschanged){this.value=''};this._haschanged=true;" onblur="if(this.value=='') this.value = 'Nome';"></p>
<p><input name="email" type="text" class="conteúdo" id="email" value="Email" size="25" onfocus="if(!this._haschanged){this.value=''};this._haschanged=true;" onblur="if(this.value=='') this.value = 'Email';"></p>
<p><input name="ddd" type="text" class="conteúdo" id="ddd" value="DDD" size="6" maxlength="3" onfocus="if(!this._haschanged){this.value=''};this._haschanged=true;" onblur="if(this.value=='') this.value = 'DDD';">
<input name="telefone" type="text" class="conteúdo" id="telefone" value="Telefone" size="15" maxlength="8" onfocus="if(!this._haschanged){this.value=''};this._haschanged=true;" onblur="if(this.value=='') this.value = 'Telefone';"></p>
<p><input name="cidade" type="text" class="conteúdo" id="cidade" value="Cidade" size="30" onfocus="if(!this._haschanged){this.value=''};this._haschanged=true;" onblur="if(this.value=='') this.value = 'Cidade';">
<input name="estado" type="text" class="conteúdo" id="estado" value="UF" size="4" maxlength="2" onfocus="if(!this._haschanged){this.value=''};this._haschanged=true;" onblur="if(this.value=='') this.value = 'UF';"></p>
<p><input name="assunto" type="text" class="conteúdo" id="assunto" value="Assunto" size="30" onfocus="if(!this._haschanged){this.value=''};this._haschanged=true;" onblur="if(this.value=='') this.value = 'Assunto';"></p>
<p><textarea name="mensagem" cols="30" rows="6" class="conteúdo" id="mensagem" onfocus="if(!this._haschanged){this.value=''};this._haschanged=true;" onblur="if(this.value=='') this.value = 'Mensagem';">Mensagem</textarea></p>
<p><input type="submit" name="Submit" value="Enviar"><input type="reset" name="Submit2" value="Limpar"></p>
</form>

<?php 
$mensagem = "Nome: ".$_POST['nome']." \n";
$mensagem .= "Email: ".$_POST['email']." \n";
$mensagem .= "DDD: ".$_POST['ddd']." \n";
$mensagem .= "Telefone: ".$_POST['telefone']." \n";
$mensagem .= "Cidade: ".$_POST['cidade']." \n";
$mensagem .= "UF: ".$_POST['uf']." \n";
$mensagem .= "Assunto: ".$_POST['assunto']." \n";
$mensagem .= "Mensagem:". $_POST['mensagem'];

if  ($mensagem == NULL) //isso não funciona

mail("guilhermesoares@guilhermesoares.net", "Contato - GuilhermeSoares.net", $mensagem); 

echo "<meta http-equiv='refresh' content='2;URL=index.php'>";
?>
Mensagem envisda com sucesso!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Continuei recebendo do mesmo jeito.

 

Veja como ficou:

 

<?php 
$mensagem = "Nome: ".$_POST['nome']." \n";
$mensagem .= "Email: ".$_POST['email']." \n";
$mensagem .= "DDD: ".$_POST['ddd']." \n";
$mensagem .= "Telefone: ".$_POST['telefone']." \n";
$mensagem .= "Cidade: ".$_POST['cidade']." \n";
$mensagem .= "UF: ".$_POST['uf']." \n";
$mensagem .= "Assunto: ".$_POST['assunto']." \n";
$mensagem .= "Mensagem:". $_POST['mensagem'];

if (empty($mensagem)) {
    echo 'Certifique-se de que todos os campos foram preenchidos e tente novamente!';
}

mail("guilhermesoares@guilhermesoares.net", "Contato - GuilhermeSoares.net", $mensagem); 

echo "<meta http-equiv='refresh' content='2;URL=index.php'>";
?>
Mensagem envisda com sucesso!

Compartilhar este post


Link para o post
Compartilhar em outros sites

$mensagem nunca vai ser vazia porque você está colocando valores nela. Você tem que testar cada uma das $_POST['nome']. Um exemplo.

 

<?php 
$erro = '';
$mensagem = '';
// faça a mesma coisa para todas as variáveis.
if(empty($_POST['nome']))
{
    $erro .= '- Nome<br/>';
}
else
{
    $mensagem .= 'Nome: '.$_POST['nome'].' \n';
}

$mensagem .= "Email: ".$_POST['email']." \n";
$mensagem .= "DDD: ".$_POST['ddd']." \n";
$mensagem .= "Telefone: ".$_POST['telefone']." \n";
$mensagem .= "Cidade: ".$_POST['cidade']." \n";
$mensagem .= "UF: ".$_POST['uf']." \n";
$mensagem .= "Assunto: ".$_POST['assunto']." \n";
$mensagem .= "Mensagem:". $_POST['mensagem'];

if (empty($erro)) 
{
    echo 'Os campos abaixo não foram preenchidos<br/>'.$erro;
}
else
{
    mail("guilhermesoares@guilhermesoares.net", "Contato - GuilhermeSoares.net", $mensagem); 
    echo '<meta http-equiv="refresh" content="2;URL=index.php">';
    echo 'Mensagem enviada com sucesso!';
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu recebi do mesmo jeito, com todos os campos vazios. Veja os erros:

 

<?php 

$erro = '';
$mensagem = '';
if(empty($_POST['nome']))
{
    $erro .= '- Nome';
}
else
{
$mensagem = "Nome: ".$_POST['nome']." \n";
}

if(empty($_POST['email']))
{
    $erro .= '- Email';
}
else
{
$mensagem .= "Email: ".$_POST['email']." \n";
}

$mensagem .= "IP: ".$_SERVER['REMOTE_ADDR']." \n";

if(empty($_POST['ddd']))
{
    $erro .= '- DDD';
}
else
{
$mensagem .= "DDD: ".$_POST['ddd']." \n";
}

if(empty($_POST['telefone']))
{
    $erro .= '- Telefone';
}
else
{
$mensagem .= "Telefone: ".$_POST['telefone']." \n";
}

if(empty($_POST['cidade']))
{
    $erro .= '- Cidade';
}
else
{
$mensagem .= "Cidade: ".$_POST['cidade']." \n";
}

if(empty($_POST['uf']))
{
    $erro .= '- UF';
}
else
{
$mensagem .= "UF: ".$_POST['uf']." \n";
}

if(empty($_POST['assunto']))
{
    $erro .= '- Assunto';
}
else
{
$mensagem .= "Assunto: ".$_POST['assunto']." \n";
}

if(empty($_POST['mensagem']))
{
    $erro .= '- Mensagem';
}
else
{
$mensagem .= "Mensagem:". $_POST['mensagem'];
}

if (empty($erro)) 
{
    echo 'Os campos abaixo não foram preenchidos<br/>'.$erro;
}
else
{
mail("guilhermesoares@guilhermesoares.net", "Contato - GuilhermeSoares.net", $mensagem); 
echo "<meta http-equiv='refresh' content='2;URL=index.php'>";
echo "Mensagem enviada com sucesso!";
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro G.Soares, porque tu não faz uma função javaScript que valide os campos?

<script>
function pegaEsse(id){
  if(document.getElementById(id)){
     return document.getElementById(id).value;
  } else {
     return false;
  }
}
function enviaForm () {
var erro = "Os seguintes erros foram encontrados";
   if(!pegaEsse('nome')){
      erro += "campo nome está vazio\n";
  }
   if(!pegaEsse('nome')){
      erro += "campo nome está vazio\n";
  }
   if(!pegaEsse('email')){
      erro += "campo email está vazio\n";
  }
   if(!pegaEsse('ddd')){
      erro += "campo ddd está vazio\n";
  }
/*
[...] segu fazendo para todos os campo
*/

if(erro == "Os seguintes erros foram encontrados"){
   document.form.submit();
} else {
   alert(erro);
}
}



</script>

e no botão de submit tu coloca o evento onclick='enviaForm();' e muda pra type='button'

 

algo do tipo

<input type="button" onclick='enviaForm();' value="Enviar">

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mal meu... coloquei a validação lá embaixo invertido.

 

// aqui coloquei um operador de negação (!)
// isto significa dizer que se $erro NÃO for vazio
if (!empty($erro))
{
    echo 'Os campos abaixo não foram preenchidos<br/>'.$erro;
}
else
{
    mail("guilhermesoares@guilhermesoares.net", "Contato - GuilhermeSoares.net", $mensagem); 
    echo "<meta http-equiv='refresh' content='2;URL=index.php'>";
    echo "Mensagem enviada com sucesso!";
}

Deve funcionar.

 

Caro G.Soares, porque tu não faz uma função javascript que valide os campos?

 

Se quiser fazer a validação em Javascript, faça, mas não deixe de fazer em PHP também, pois o usuário pode estar navegando com o Javascript desabilitado.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como disse o Matias, não dá pra fazer a verificação em JS, até mesmo porque eu navego às vezes com ele desativado. Pois bem, Matias, não entendi como fica. Poderia modificar o código pra mim? *modo iniciante pra dedéu on*

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ali em cima já modifiquei. Apenas adicionei o operador de negação (!) antes do empty. Eu tinha colocado a lógica ao contrário, ou seja, quando não tivesse nenhuma mensagem (ou seja, tudo correto) ele iria exibir o erro.

 

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.