Ir ao conteúdo
  • Cadastre-se
carecazn

Condição em php

Recommended Posts

Boa tarde Pessoal, eu tenho um formulário no site e o que eu quero fazer é o seguinte, quero usar o cabeçalho do formulário para resposta do envio da mensagem.

 

if(isset($_POST['acao']) && $_POST['acao'] == 'enviar'){

recupera todas as informações do formulário

if($mail-> Send()) {
Se enviar mostra a div abaixo com uma formatação com fundo verde por exemplo
<div class="panel panel-default">
<div class="panel-body cor_site bold" title="">Formul&aacute;rio de contato
</div>
</div>
}
elseif{
Se enviar mostra a div abaixo com uma formatação com fundo vermelho por exemplo
<div class="panel panel-default">
<div class="panel-body cor_site bold" title="">Formul&aacute;rio de contato
</div>
</div>
} else {
E este é o que eu quero que sempre esteja visivel quando o internauta acessar a página,
com certeza tem alguma coisa errada, pois, esta dando erro.
<div class="panel panel-default">
<div class="panel-body cor_site bold" title="">Formul&aacute;rio de contato
</div>
</div>
}
}

 

Se existir a ação para enviar o contato e se der certo mostra a div com fundo verde,

Se der erro mostra a mesma div com fundo vermelho,

Se não existir nenhuma ação, mostrar a última div, tentei explicar o máximo possível.

adicionado 3 minutos depois

Todas as validações estão prontas e estão funcionando, é essa parte que eu não estou conseguindo fazer.

Editado por carecazn

Compartilhar este post


Link para o post
Compartilhar em outros sites

@carecazn Amigo pra você fazer o que quer é simples mas pelo seu código não daria certo.

 

para usar php tem que usar as tags "<?php ?>" e para mostrar HTML se usa "echo";

 

você armazena o envio em uma variável  e ver se ela foi enviado. mais ou menos assim.

<?php
$envio = mail('$mail', '$assunto', '$mensagem','$headers');
// verifica se Envio
if($envio){
// se tiver enviado mostra div com fundo verde
echo"<div class='fundoVerde'></div>";
}else{
// se não enviar mostra a div com fundo vermelho
echo"<div class='fundoVermelho'></div>";
}

?>

Obs.: no echo você pode colocar o código que quiser em HTML, para alertar o usuário se foi ou não enviado.

Editado por FabianoS

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ele esta com as tags do php, o problema são as condições, ´no caso seria uma div fundo branco, que vai sempre estar visível, ai se enviar mostro a div com fundo verde com a mensagem de enviado com sucesso, se der erro mostro a div com fundo vermelho com o erro que deu.

 

<?php /*apenas dispara o envio da mensagem caso houver/existir $_POST['enviar']*/
if(isset($_POST['acao']) && $_POST['acao'] == 'enviar'){

$destinatarios = 'email';
$nomeDestinatario = 'O que vai aparecer';
$usuario = 'e-mail que será usado para o envio'; 
$senha = 'a senha do e-mail'; 

/*abaixo as veriaveis principais, que devem conter em seu formulario*/ 

$nomeRemetente = $_POST['nome'];
$email = $_POST['email'];
$nome_empresa = $_POST['nome_empresa'];
$assunto = $_POST['assunto'];
$contato = $_POST['phone'];

$mensagem = "<strong>Nome: </strong>".$nomeRemetente;
$mensagem .= "<br>  <strong>Email: </strong>".$_POST['email'];
$mensagem .= "<br>  <strong>Nome da Empresa: </strong>".$_POST['nome_empresa'];
$mensagem .= "<br>  <strong>Contato: </strong>".$_POST['phone'];
$mensagem .= "<br>  <strong>Mensagem: </strong>".$_POST['mensagem'];

$mensagem = wordwrap ($mensagem, 70, "<br>", true);
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: '.$nome.' <'.$email.'>' . "\r\n";
$headers .= 'BCC: e-mail' . "\r\n";
$headers .= 'BCC: e-mail' . "\r\n";
$headers .= 'Cc: e-mail' . "\r\n";
$headers .= 'ReplyTo: e-mail' . "\r\n";
$headers .= 'ReplyTo: e-mail' . "\r\n";

/*********************************** A PARTIR DAQUI NAO ALTERAR ************************************/ 

require_once("phpmailer/PHPMailerAutoload.php");

$To = $destinatarios;
$Subject = $assunto;
$Message = $mensagem;
$Host = 'mail.'.substr(strstr($usuario, '@'), 1);
$Username = $usuario;
$Password = $senha;
$Port = "587";
$mail = new PHPMailer();
$body = $Message;

$mail-> IsSMTP(); // telling the class to use SMTP
$mail-> Host = $Host; // SMTP server 

$mail-> SMTPDebug = 0; // enables SMTP debug information (for testing) 
// 1 = errors and messages 
// 2 = messages only 

$mail-> SMTPAuth = true; // enable SMTP authentication 
$mail-> Port = $Port; // set the SMTP port for the service server 
$mail-> Username = $Username; // account username 
$mail-> Password = $Password; // account password 
$mail-> SetFrom($usuario, $nomeDestinatario); 
$mail-> Subject = $Subject;
$mail-> MsgHTML($body);
$mail-> AddAddress($To, ""); 

if($mail-> Send()) { 
echo '<div class="alert alert-success" role="alert">
<span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span>
<span class="sr-only">Erro:</span>
Recebemos a sua mensagem, logo entraremos em contato!
</div>';
echo '<script language="javascript">window.setTimeout("location.href=\'index.php\'",2000)</script>';
}

else{ 
echo '<div class="alert alert-danger" role="alert">
<span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span>
<span class="sr-only">Erro:</span>
Mensagem não enviada! Entre em contato no e-mail, Obrigado!
</div>';
echo '<script language="javascript">window.setTimeout("location.href=\'index.php\'",2000)</script>';}
}?>

o código completo é esse, porém, as divs que vou mostrar é a que eu enviei no primeiro post que vai ser o cabeçalho do formulário eu vou tirar o alert e vou deixar só o PHP

adicionado 6 minutos depois
10 minutos atrás, carecazn disse:

Ele esta com as tags do php, o problema são as condições, ´no caso seria uma div fundo branco, que vai sempre estar visível, ai se enviar mostro a div com fundo verde com a mensagem de enviado com sucesso, se der erro mostro a div com fundo vermelho com o erro que deu.

 


<?php /*apenas dispara o envio da mensagem caso houver/existir $_POST['enviar']*/
if(isset($_POST['acao']) && $_POST['acao'] == 'enviar'){

$destinatarios = 'email';
$nomeDestinatario = 'Contato via Site';
$usuario = 'e-mail que será usado para o envio'; 
$senha = 'a senha do e-mail'; 

/*abaixo as veriaveis principais, que devem conter em seu formulario*/ 

$nomeRemetente = $_POST['nome'];
$email = $_POST['email'];
$nome_empresa = $_POST['nome_empresa'];
$assunto = $_POST['assunto'];
$contato = $_POST['phone'];

$mensagem = "<strong>Nome: </strong>".$nomeRemetente;
$mensagem .= "<br>  <strong>Email: </strong>".$_POST['email'];
$mensagem .= "<br>  <strong>Nome da Empresa: </strong>".$_POST['nome_empresa'];
$mensagem .= "<br>  <strong>Contato: </strong>".$_POST['phone'];
$mensagem .= "<br>  <strong>Mensagem: </strong>".$_POST['mensagem'];

$mensagem = wordwrap ($mensagem, 70, "<br>", true);
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: '.$nome.' <'.$email.'>' . "\r\n";
$headers .= 'BCC: e-mail' . "\r\n";
$headers .= 'BCC: e-mail' . "\r\n";
$headers .= 'Cc: e-mail' . "\r\n";
$headers .= 'ReplyTo: e-mail' . "\r\n";
$headers .= 'ReplyTo: e-mail' . "\r\n";

/*********************************** A PARTIR DAQUI NAO ALTERAR ************************************/ 

require_once("phpmailer/PHPMailerAutoload.php");

$To = $destinatarios;
$Subject = $assunto;
$Message = $mensagem;
$Host = 'mail.'.substr(strstr($usuario, '@'), 1);
$Username = $usuario;
$Password = $senha;
$Port = "587";
$mail = new PHPMailer();
$body = $Message;

$mail-> IsSMTP(); // telling the class to use SMTP
$mail-> Host = $Host; // SMTP server 

$mail-> SMTPDebug = 0; // enables SMTP debug information (for testing) 
// 1 = errors and messages 
// 2 = messages only 

$mail-> SMTPAuth = true; // enable SMTP authentication 
$mail-> Port = $Port; // set the SMTP port for the service server 
$mail-> Username = $Username; // account username 
$mail-> Password = $Password; // account password 
$mail-> SetFrom($usuario, $nomeDestinatario); 
$mail-> Subject = $Subject;
$mail-> MsgHTML($body);
$mail-> AddAddress($To, ""); 

if($mail-> Send()) { 
echo '<div class="alert alert-success" role="alert">
<span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span>
<span class="sr-only">Erro:</span>
Recebemos a sua mensagem, logo entraremos em contato!
</div>';
echo '<script language="javascript">window.setTimeout("location.href=\'index.php\'",2000)</script>';
}

else{ 
echo '<div class="alert alert-danger" role="alert">
<span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span>
<span class="sr-only">Erro:</span>
Mensagem não enviada! Entre em contato no e-mail, Obrigado!
</div>';
echo '<script language="javascript">window.setTimeout("location.href=\'index.php\'",2000)</script>';}
}?>

o código completo é esse, porém, as divs que vou mostrar é a que eu enviei no primeiro post que vai ser o cabeçalho do formulário eu vou tirar o alert e vou deixar só o PHP

Essa é a parte que quero fazer as 3 condições com esta div.
<div class="panel panel-default">
<div class="panel-body cor_site bold" title="">Formulário de contato
</div>
</div>
Sempre visivel com fundo branco para quando o usuário entrar na página ela estará visivel, ele vai preencher o formulário e clicar em enviar, se der certo aparece a mesma div com fundo verde e os dizerem que vou colocar e se der errado a mesma div com fundo vermelho com outras informações.

Após o envio da mensagem ou se der erro, volta para o formulário com o cabeçalho com o fundo branco.


if($mail-> Send()) { 
echo '<div class="alert alert-success" role="alert">
<span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span>
<span class="sr-only">Erro:</span>
Recebemos a sua mensagem, logo entraremos em contato!
</div>';
echo '<script language="javascript">window.setTimeout("location.href=\'index.php\'",2000)</script>';
}

else{ 
echo '<div class="alert alert-danger" role="alert">
<span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span>
<span class="sr-only">Erro:</span>
Mensagem não enviada! Entre em contato no e-mail, Obrigado!
</div>';
echo '<script language="javascript">window.setTimeout("location.href=\'index.php\'",2000)</script>';}

 

Editado por carecazn

Compartilhar este post


Link para o post
Compartilhar em outros sites

@carecazn Nesse caso, eu recomento usar o jQuery e ajax com a função $.ajax()  assim você pode manipular o CSS sem fazer gambiarras.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu, male má, consegui fazer tudo funcionar só com o PHP, agora estou usando o Bootstrap, mas não tenho nenhuma familiaridade com o jQuery, preciso estudar para entrar nessa linguagem. Eu já vi alguns tutoriais, mas apanho muito, rsrsrsrs, e ai um código que funciona em uma versão e quando muda a versão não funciona mais, rsrsrs.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@carecazn Conseguiu fazer ? seria interessante postar o que fez .

 

Editado por FabianoS

Compartilhar este post


Link para o post
Compartilhar em outros sites
2 minutos atrás, FabianoS disse:

@carecazn Conseguiu fazer ? seria interessante postar o que fez .

 

     Ainda não consegui! Estou pesquisando.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@@carecazn como o @dif falou com o jquery seria mais fácil mas da pra fazer assim.

 

no  css você seta 2 divs com as cores que quer.

 

.fundoVerde{background:##00ff00!important;}
.fundoVerm{background:#FF0000!important;}

depois que o usuário clicar em enviar você manda para validação. 

no send voce volta para a pagina do formulario.

 

if($mail->send()){
// se enviar, redireciona para a pagina do formulario e atribui a variavel email o valor de "enviado".
header("location:paginadoform.php?email=enviado")
}else{
// se não enviar, redireciona para a pagina do formulario e atribui a variavel email o valor de "naoenviado"
header("location:paginadoform.php?email=naoenviado")
}

 

Na pagina do formulario, na div que quer o fundo de outra cor, você adiciona a classe na div. por exemplo.

 

// verifica se ouve envio do email
if(isset($_GET['email'])){
// verifica se enviado se sim atribui a class do fundo verde
	if($_GET['email'] == "enviado"){
		echo "<div class='panel panel-default'>
		<div class='panel-body cor_site bold fundoVerde' title=''>Formul&aacute;rio de contato
		</div>
		</div>";
// verifica se enviado se nao atribui a class do fundo vermelho
	}elseif($_GET['email'] == "naoenviado"){
		echo "<div class='panel panel-default'>
		<div class='panel-body cor_site bold fundoVerm' title=''>Formul&aacute;rio de contato
		</div>
		</div>";
	}
// se o usuario não tiver enviado ainda ai você mostra o div com fundo branco.
}else{
		echo "<div class='panel panel-default'>
		<div class='panel-body cor_site bold fundoVerm' title=''>Formul&aacute;rio de contato
		</div>
		</div>";

}

Obs.: não sei qual div você quer mudar de cor, mas caso seja outra e so adicionar a classe do css.

 

 

 

 

 

Editado por FabianoS

Compartilhar este post


Link para o post
Compartilhar em outros sites
2 minutos atrás, FabianoS disse:

@@carecazn como o @dif falou com o jquery seria mais fácil mas da pra fazer assim.

 

no  css você seta 2 divs com as cores que quer.

 


.fundoVerde{background:##00ff00!important;}
.fundoVerm{background:#FF0000!important;}

depois que o usuário clicar em enviar você manda para validação. 

no send voce volta para a pagina do formulario.

 


if($mail->send()){
// se enviar, redireciona para a pagina do formulario e atribui a variavel email o valor de "enviado".
header("location:paginadoform.php?email=enviado")
}else{
// se não enviar, redireciona para a pagina do formulario e atribui a variavel email o valor de "naoenviado"
header("location:paginadoform.php?email=naoenviado")
}

 

Na pagina do formulario, na div que quer o fundo de outra cor, você adiciona a classe na div. por exemplo.

 


// verifica se ouve envio do email
if(isset($_GET['email'])){
// verifica se enviado se sim atribui a class do fundo verde
	if($_GET['email'] == "enviado"){
		echo "<div class='panel panel-default'>
		<div class='panel-body cor_site bold fundoVerde' title=''>Formul&aacute;rio de contato
		</div>
		</div>";
// verifica se enviado se nao atribui a class do fundo vermelho
	}elseif($_GET['email'] == "naoenviado"){
		echo "<div class='panel panel-default'>
		<div class='panel-body cor_site bold fundoVerm' title=''>Formul&aacute;rio de contato
		</div>
		</div>";
	}
// se o usuario não tiver enviado ainda ai você mostra o div com fundo branco.
}else{
		echo "<div class='panel panel-default'>
		<div class='panel-body cor_site bold fundoVerm' title=''>Formul&aacute;rio de contato
		</div>
		</div>";

}

Obs.: não sei qual div você quer mudar de cor, mas caso seja outra e so adicionar a classe do css.

 

 

 

 

 

Assim não da erro, porém, não mostra a div com fundo branco

if($mail-> Send()){
echo '<div class="panel panel-default">
<div class="panel-body cor_site bold" fundo verde title="Formul&aacute;rio de contato do Consult&oacute;rio de Nutri&ccedil;&atilde;o em Guarulhos e no centro de S&atilde;o Paulo">
Formul&aacute;rio de contato
</div>
</div>';
echo '<script language="javascript">window.setTimeout("location.href=\'index.php\'",2000)</script>';
}

elseif (!$mail-> Send()) {
echo '<div class="panel panel-default">
<div class="panel-body cor_site bold" fundo vermelho title="Formul&aacute;rio de contato do Consult&oacute;rio de Nutri&ccedil;&atilde;o em Guarulhos e no centro de S&atilde;o Paulo">
Formul&aacute;rio de contato
</div>
</div>';
echo '<script language="javascript">window.setTimeout("location.href=\'index.php\'",2000)</script>';}

else {
	echo '<div class="panel panel-default">
<div class="panel-body cor_site bold" padrão fundo branco title="Formul&aacute;rio de contato do Consult&oacute;rio de Nutri&ccedil;&atilde;o em Guarulhos e no centro de S&atilde;o Paulo">
Formul&aacute;rio de contato
</div>
</div>';
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
18 minutos atrás, carecazn disse:

mas não tenho nenhuma familiaridade com o jQuery, preciso estudar para entrar nessa linguagem.

Sem problemas!  é uma linguagem fácil. mais fácil até do que o próprio javascript puro.

 

19 minutos atrás, carecazn disse:

Eu já vi alguns tutoriais, mas apanho muito

Normal!, todo mundo apanha no inicio mas é só entender a essência! Pois sempre vai ser igual.. só muda as palavras chaves ou funções

 

20 minutos atrás, carecazn disse:

e ai um código que funciona em uma versão e quando muda a versão não funciona mais,

As mudanças acontecem porque o jQuery está sempre evoluindo. Então é imprescindível que você entenda a essência e depois basta adaptar para versões recentes.

 

Um caso, quando comecei com o jQuery, na faculdade ainda, ele estava na versão 1.8. Hj está na versão 3.1.0 

E o que mudou? "Quase" nada, quando eu digo quase, é só algumas funções e métodos de retorno...  facilitando ainda mais!

 

Deixo um exemplo de requisição manipulando o CSS

 

$(document).ready(function(){
  $(".btn_enviar").on('click', function(){
     var dados = $("#formulario").serialize(); 
      $.ajax({
            url: "recebeDados.php",
            type: "html",
            data: dados;
      }).done(function(){
             $(".retorno").css({"background":"green"});
      }).fail(function(){
            $(".retorno").css({"background":"red"});
      });
  
  }); 
});

Claro que você pode e vai mudar a parte do done() e fail()....  para o div e class que você quiser..

pode usar J-alerts se quiser enfim..  não é difícil!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu estou vendo um curso no Youtube da Faculdade XTI, javascript, vou acompanhar o curso pra aprender e conseguir trabalhar com a linguagem eu programa por prazer, não ganho dinheiro com a programação, eu fiz o site da igreja e estou fazendo o da minha Esposa que se formou agora em nutrição, então, estamos tentando emplacar para que eu consiga ter mais tempo e me dedicar a programação, ai sim, quero fazer um curso, faculdade mesmo, eu gostei bastante de programar, no site da igreja eu fiz a área administrativa com login e senha, com sessão, recupera o Nome, no outro mais antigo que fiz da minha Esposa, diz bom dia, boa tarde, boa noite e boa madrugada, as frases ficaram personalizadas caso seja Homem ou Mulher.

O problema é quando fica um tempo sem mexer, ai tem que ficar revendo o código para entender o que fiz naquela época, rsrsrsrsrsrs. Mas gosto muito, no da igreja tem nível de acesso também, todos estão usando banco de dados, no da igreja esta integrado com o facebook, porém, paramos de mexer no site também, estou esperando os meus Pastores por causa dos conteúdos, história da Igreja enfim, quando chegar a hora certa voltaremos a trabalhar com ele.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@carecazn A dica que posso te dar para melhorar seu conhecimento é analisar os códigos existentes.. Você pode inspecionar os elementos com o F12, ver como foi feito.. estrutura html, css...  e javascript!

Aí brincar no JSFiddle,  CodePen, W3school, Codeacademy... são ótimos sites para você expandir seu conhecimento!

 

E o principal, vontade e perseverança.  fazer, refazer, re-re-fazer... e por aí vai... pôr a mão na massa! É que nem matemática. Só se aprender se exercitando.

 

Por recomendação,  quando for estudar javascript, vá direto ao jQuery. Vai lhe economizar tempo oferecer integração com centenas de milhares de plugins... que deixam seu site mais atrativo e interativo. 

Sem contar que como você está usando o bootstrap, ele possui integração com jquery para vários efeitos legais...  :thumbsup:

Mas claro, vá no seu tempo! Não ponha o carro na frente dos bois!! 

Você está indo bem!

 

Especificamente no seu caso do tópico aqui, eu recomento MUITO que você abra uma exceção de 1 semaninha por exemplo e aprenda o uso simples da técnica ajax.  isso vai te beneficiar muito, tanto para seu site da igreja, para o site de sua esposa e qualquer outro que você vá desenvolver. 

Até porque, do jeito que você está tentando fazer, é "beeeeeeem" mais demorado e complicado...  possui muitas linhas e muito mais fácil de apresentar erros e perder cabelos por conta destes erros!

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

     Boa noite Pessoal, a falta de conhecimento é um problema, fiz alguns testes e consegui resolver e acredito que foi sem gambiarra @dif, rsrsrsrs

	if(isset($_POST['acao']) && $_POST['acao'] == 'enviar'){
	Recupera todos os campos do formulário
	if($mail-> Send()){//Se enviar o e-mail, apresenta a div sucesso
	echo 'Div com fundo verde sucesso';
	}
	elseif (!$mail-> Send()) {//Se não enviar o e-mail apresenta a div com erro
	echo 'Div com fundo vermelho erro';
	}
	}else{//E essa estará sempre ativa assim que acessar o formulário
	echo 'Div com fundo Branco Padrão';
	}

Eu acredito muito que isso é simples, mas demorei bastante para descobrir, rsrsrsrsrs

Editado por carecazn

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×