ALERT après envoie d'un formulaire ne s'affiche pas
Posté : 10 oct. 2022, 22:17
Bonjour, j'espère que vous allez tous bien ?
Je sollicite votre aide, car là, je bloque complètement depuis 2 jours.
Je rencontre un problème avec l'affichage d'une alerte après l'envoie d'un formulaire d'inscription à la newsletter.
Je ne suis pas un foudre de guerre en PHP, mais je m'y mets de plus en plus, à la base je suis plus front que back...
J'aimerais faire apparaître une alerte pour chaque personne qui s'abonne.
J'ai codé un truc mais le message n'apparaît pas sur la page d'accueil.
L'enregistrement de l'email dans la BDD s'effectue bien, mais le message de confirmation ne s'affiche pas...
J'ai surement oublié quelque chose, mais je n'arrive pas à trouver quoi !
Merci d'avance à ceux qui voudrons bien m'apporter de l'aide.
Et un petit plus si je peux abusé
comment fait-on pour vérifier que l'adresse mail existe déjà dans la base de données pour éviter les doublons ?
Voici la structure de mon code.
includes/config.php
includes/header.php (Pas important, ne contient qu'une barre de navigation)
includes/footer.php
index.php
newsletter.php
newsletter.sql (Pour ceux qui veulent faire les tests en local)
config.php
Je sollicite votre aide, car là, je bloque complètement depuis 2 jours.
Je rencontre un problème avec l'affichage d'une alerte après l'envoie d'un formulaire d'inscription à la newsletter.
Je ne suis pas un foudre de guerre en PHP, mais je m'y mets de plus en plus, à la base je suis plus front que back...
J'aimerais faire apparaître une alerte pour chaque personne qui s'abonne.
J'ai codé un truc mais le message n'apparaît pas sur la page d'accueil.
L'enregistrement de l'email dans la BDD s'effectue bien, mais le message de confirmation ne s'affiche pas...
J'ai surement oublié quelque chose, mais je n'arrive pas à trouver quoi !
Merci d'avance à ceux qui voudrons bien m'apporter de l'aide.
Et un petit plus si je peux abusé
Voici la structure de mon code.
includes/config.php
includes/header.php (Pas important, ne contient qu'une barre de navigation)
includes/footer.php
index.php
newsletter.php
newsletter.sql (Pour ceux qui veulent faire les tests en local)
config.php
<?php
// DB credentials.
define('DB_HOST','localhost');
define('DB_USER','root');
define('DB_PASS','root');
define('DB_NAME','site');
// Establish database connection.
try
{
$dbco = new PDO("mysql:host=".DB_HOST.";dbname=".DB_NAME,DB_USER, DB_PASS,array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"));
$dbco->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (PDOException $e)
{
exit("Error: " . $e->getMessage());
}
?>
footer.php (Formulaire HTML)
<form action="newsletter.php" method="post">
<input type="email" class="form-control" name="email" id="email" placeholder="Votre adresse électronique" value="<?php echo htmlentities($result->emailid);?>" required/>
<button type="submit" class="btn btn-success my-3">S'abonner</button>
newsletter.php
<?php
session_start();
error_reporting(0);
include ('includes/config.php');
$email = $_POST["email"];
if(!empty($email)){
$sth = $dbco->prepare("
INSERT INTO newsletter(email)
VALUES(:email)");
$sth->bindParam(':email',$email);
$sth->execute();
header("Location:index.php");
}
?>
index.php
<?php
session_start();
error_reporting(0);
include('includes/config.php');
if(isset($_POST['submit']))
{
$email=$_POST['email'];
$sql="INSERT INTO newsletter(emailid) VALUES(:email)";
$query = $dbh->prepare($sql);
$query->bindParam(':email',$email,PDO::PARAM_STR);
$query->execute();
$lastInsertId = $dbh->lastInsertId();
if($lastInsertId)
{
$msg="Vous êtes bien inscrit à notre lettre d'information... Merci et à bientôt.";
}
else
{
$error="Quelque chose s'est mal passé. Veuillez réessayer";
}
}
?>
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Mon site</title>
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-iYQeCzEYFbKjA/T2uDLTpkwGzCiq6soy8tYaI1GyVh/UjpbCx/TYkiZhlZB6+fzT" crossorigin="anonymous">
<link rel="stylesheet" href="css/style.css">
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
</head>
<body>
<!-- Appelle du header -->
<header>
<?php require_once "includes/header.php"?>
</header>
<!-- La partie qui affiche les messages -->
<main>
<?php if($error){?>
<div class="container-fluid shadow border-bottom alert alert-danger rounded-0">
<strong>ERREUR : </strong>
<?php echo htmlentities($error); ?>
</div>
<?php }
else if($msg){?>
<div class="container-fluid shadow border-bottom alert alert-success rounded-0">
<strong>BRAVO : </strong>
<?php echo htmlentities($msg); ?>
</div>
<?php }?>
</main>
<!-- Appelle du footer -->
<footer class="container-fluid mt-3 shadow">
<?php require_once "includes/footer.php"?>
</footer>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-u1OknCvxWvY5kfmNBILK2hRnQC3Pr17a+RTT6rIHI7NnikvbZlHgTPOOmMi466C8" crossorigin="anonymous"></script>
</body>
</html>
Table SQL tout fonctionne bien, l'email s'enregistre bien dans la base de données
CREATE TABLE `newsletter` (
`id` int(100) NOT NULL,
`email` varchar(150) NOT NULL DEFAULT '',
`date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
