I want to display success message without redirecting if email is succesfully inserted into database.
My form:
<div class="row">
<div class="col-md-4 col-md-offset-4 col-sm6-6 col-sm-offset-3 ">
<form class="form-inline" role="form" method="post">
<div class="form-group">
<label class="sr-only" for="exampleInputEmail2">Email address</label>
<input name='email' id="email" type="email" class="form-control transparent" placeholder="Email">
</div>
<button type="submit" name='send' value='send' class="btn btn-danger btn-fill">Register</button>
</form>
</div>
</div>
My php insert code looks like this:
if(isset($_POST["send"])){
$email = $_POST['email'];
if (!filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
$query = 'INSERT INTO subscriber(email) SELECT "'.$email.'"
FROM dual
WHERE NOT EXISTS (
SELECT * FROM subscriber
WHERE email="'.$email.'"
)';
$result = mysqli_query($dbc, $query) or die(mysqli_error($dbc));
}
}
I tried to do this, but it doesn't work
<?php
if (!$insert === FALSE) {
$response = __('Success');?>
<script>
jQuery(document).ready(function($) {
var response = '<?php echo $response; ?>';
$(".form-inline").html(response);
$('.form-inline').addClass('response').removeClass('form-inline');
});
</script>
<?php
$msg='';
if(isset($_POST["send"])){
$email = $_POST['email'];
if (!filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
$query = 'INSERT INTO subscriber(email) SELECT "'.$email.'"
FROM dual
WHERE NOT EXISTS (
SELECT * FROM subscriber
WHERE email="'.$email.'"
)';
$result = mysqli_query($dbc, $query) or die(mysqli_error($dbc));
$msg="Email sent successfully";
}
}
?>
<div class="row">
<div class="col-md-4 col-md-offset-4 col-sm6-6 col-sm-offset-3 ">
<div class="label label-success"><?php if($msg!=''){echo $msg;} ?></div>
<form class="form-inline" role="form" method="post">
<div class="form-group">
<label class="sr-only"for="exampleInputEmail2">Email address</label>
<input name='email' id="email" type="email" class="form-control transparent" placeholder="Email">
</div>
<button type="submit" name='send' value='send' class="btn btn-danger btn-fill">Register</button>
</form>
</div>
</div>
Just use simple redirect to success page. Where is the problem exactly? You can do something like
if($inserted_into_db == true) {
header("Location: success.php");
} else {
header("Location: your-form.php");
}
And then handle the error
You can check if your query run successfully then you can just echo a message to display a success message.
Example
$result = mysqli_query($dbc, $query) or die(mysqli_error($dbc));
if($result)
{
echo "Email is succesfully inserted";
}