First of all do a check of mysqli_query
, so use mysqli_error($conn)
:
if ($resultado_msg_contato) {
//Mensagem de successo
} else {
//Mensagem de erro com mysqli_error($conn)
}
You can then send POST to the same address and make use of if
and isset
, leave action=""
empty like this:
<form class="form-horizontal" method="POST" action="">
The whole code should look like this:
<!DOCTYPE html>
<html lang="pt-br">
<head>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>contato</title>
<link href="css/bootstrap.min.css" rel="stylesheet">
</head>
<head>
<body>
<div class="container">
<?php
if (isset($_POST['nome'], $_POST['email'], $_POST['assunto'], $_POST['mensagem'])) {
include_once('conexao.php');
$nome = $_POST['nome'];
$email = $_POST['email'];
$assunto = $_POST['assunto'];
$mensagem = $_POST['mensagem'];
$result_msg_contato = "INSERT INTO mensagens_contatos(nome, email, assunto, mensagem, created) VALUES ('$nome', '$email', '$assunto', '$mensagem', NOW())";
$resultado_msg_contato= mysqli_query($conn, $result_msg_contato);
if ($resultado_msg_contato) {
echo '<div class="alert alert-success">Dados enviado com Sucesso!</div>';
} else {
echo '<div class="alert alert-danger">Erro:', mysqli_error($conn),'</div>';
}
}
?>
<form class="form-horizontal" method="POST" action="">
<div class="form-group">
<label for="inputEmail3" class="col-sm-2 control-label">Nome</label>
<div class="col-sm-10">
<input type="text" name="nome" class="form-control" placeholder="Nome Completo" required>
</div>
<label for="inputEmail3" class="col-sm-2 control-label">Email</label>
<div class="col-sm-10">
<input type="mail" name="email" class="form-control" placeholder="Seu EMail" required>
</div>
<label for="inputEmail3" class="col-sm-2 control-label">Telefone</label>
<div class="col-sm-10">
<input type="text" name="assunto" class="form-control" placeholder="Telefone" required>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<center><button type="submit" value="Enviar" class="btn btn-success" >Enviar</button></center>
</div>
</div>
</form>
</div>
</body>
</html>
Or using Ajax
You can use Ajax ( XmlHttpRequest
) combined with addEventListener("submit", ...)
to send the form and handle the response in the callback:
var oReq = new XMLHttpRequest();
//Defina como true
oReq.open("POST", form.getAttribute("action"), true);
//Função assíncrona que aguarda a resposta
oReq.onreadystatechange = function()
{
//Se 4 é que concluiu
if (oReq.readyState === 4) {
//Checa o status HTTP
if (oReq.status >= 200 && oReq.status < 300) {
if (oReq.responseText === "sucesso") {
alert("Dados enviados com sucesso");
} else {
alert("Erro:" + oReq.responseText);
}
} else {
alert("Erro HTTP:" + oReq.status);
}
}
};
oReq.send(new FormData(form)); //Envia os campos com a API
The salva_mensagem.php
should look like this:
<?php
if (isset($_POST['nome'], $_POST['email'], $_POST['assunto'], $_POST['mensagem'])) {
include_once('conexao.php');
$nome = $_POST['nome'];
$email = $_POST['email'];
$assunto = $_POST['assunto'];
$mensagem = $_POST['mensagem'];
$result_msg_contato = "INSERT INTO mensagens_contatos(nome, email, assunto, mensagem, created) VALUES ('$nome', '$email', '$assunto', '$mensagem', NOW())";
$resultado_msg_contato= mysqli_query($conn, $result_msg_contato);
if ($resultado_msg_contato) {
echo 'sucesso';
} else {
echo 'Erro:', mysqli_error($conn);
}
}
?>
It should look like this:
<!DOCTYPE html>
<html lang="pt-br">
<head>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>contato</title>
<link href="css/bootstrap.min.css" rel="stylesheet">
</head>
<head>
<body>
<div class="container">
<form id="meuform" class="form-horizontal" method="POST" action="salva_mensagem.php">
<div class="form-group">
<label for="inputEmail3" class="col-sm-2 control-label">Nome</label>
<div class="col-sm-10">
<input type="text" name="nome" class="form-control" placeholder="Nome Completo" required>
</div>
<label for="inputEmail3" class="col-sm-2 control-label">Email</label>
<div class="col-sm-10">
<input type="mail" name="email" class="form-control" placeholder="Seu EMail" required>
</div>
<label for="inputEmail3" class="col-sm-2 control-label">Telefone</label>
<div class="col-sm-10">
<input type="text" name="assunto" class="form-control" placeholder="Telefone" required>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<center><button type="submit" value="Enviar" class="btn btn-success" >Enviar</button></center>
</div>
</div>
</form>
</div>
<script type="text/javascript">
function EnviarForm(e) {
//Previne enviar o Form normal
e.preventDefault();
//Pega o form
var form = e.target;
//Previne enviar múltiplas vezes até que o Ajax complete
if (form.enviando) {
return;
}
form.enviando = true;
var oReq = new XMLHttpRequest();
//form.getAttribute("action") é para pegar o action do Form
oReq.open("POST", form.getAttribute("action"), true);
//Função assíncrona que aguarda a resposta
oReq.onreadystatechange = function()
{
if (oReq.readyState === 4) {
//desbloqueia o form
form.enviando = false;
if (oReq.status >= 200 && oReq.status < 300) {
if (oReq.responseText === "sucesso") {
alert("Dados enviados com sucesso");
} else {
alert("Erro:" + oReq.responseText);
}
} else {
alert("Erro HTTP:" + oReq.status);
}
}
};
oReq.send(new FormData(form)); //Envia os campos com a API FormData
}
document.getElementById("meuform").addEventListener("submit", EnviarForm);
</script>
</body>
</html>