j'suis en train d'adapter un de mes scripts de création de compte que j'avais développé lors d'une formation, pour en faire un script d'inscription à une newsletter.
Mon problème est que le formulaire n'enregistre rien en base de données. Les champs sont pourtant ok, la vérification est ok. J'ai donc rentré manuellement une donnée dans ma table, pour vérifier si mon script se connectait bien à la BDD et lorsque je veux m'inscrire avec mon entrée existante il me dit bien que le mail est déjà utilisé !! Donc pas de prob de connexion à la bdd..
J'ai revu plusieurs fois mon code mais je dois passer à coté d'un détail !
Voici le code de mon inscription :
Code : Tout sélectionner
<?php
ini_set('display_errors', 1);
if(!empty($_POST))
{
extract($_POST);
$valid = true;
if(empty($nom))
{
$valid = false;
$erreurnom = 'indiquez votre nom';
}
if(!empty($nom) && strlen($nom)<3)
{
$valid = false;
$erreurnom = '3 caractères minimum';
}
if(empty($email))
{
$valid = false;
$erreuremail = 'Indiquez votre e-mail';
}
if (!empty($email) && filter_var($email,FILTER_VALIDATE_EMAIL)===FALSE)
{
$valid = false;
$erreuremail = 'Adresse e-mail invalide';
}
// Connexion BDD
try{
$bdd = new PDO('mysql:host=XXXXX;dbname=XXXXX' , 'XXXXX', 'XXXXX') or die(print_r($bdd->errorInfo()));
$bdd->exec('SET NAMES utf8');
}
catch(Exeption $e){
die('Erreur:'.$e->getMessage());
}
// Verification si les champs sont utilisés
$req = $bdd->prepare('SELECT id from newsletters WHERE email=:email');
$req->execute(array(':email'=>$email));
if($req->rowCount()>0)
{
$valid = false;
$erreurid = 'E-mail déjà utilisé';
}
$req->closeCursor();
// Si tout est OK
if($valid)
{
$hash = md5(rand(0,1000));
$pass = rand(1000,5000);
// on envoi en BDD
$req = $bdd->prepare('INSERT INTO newsletters (nom,pass,email,hash) VALUES (:nom,:pass,:email,:hash)');
$req->execute(array(
'nom'=>$nom,
'pass'=>sha1($pass),
'email'=>$email,
'hash'=>$hash,
));
$req->closeCursor();
$ok = 'Vous recevrez désormais notre lettre d\'informations !';
unset($nom);
unset($email);
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Administration</title>
<link href="css/admin.css" type="text/css" rel="stylesheet" media="screen">
</head>
<body>
<div id="header"><h2>Administration</h2></div>
<div id="site">
<div id="col-left">
<div id="title" class="left"><h2>Menu Admin</h2></div>
<div id="content" class="left"></div>
</div>
<div id="content">
<div id="title" class="content"><h2>Newsletters</h2></div>
<div id="content" class="content">
<h3>Formulaire d'inscription</h3>
<form action="index.php" method="post">
<label for="nom">Nom :</label><br />
<input type="text" name="nom" value="" /><br />
<? if(isset($erreurnom)) echo $erreurnom; ?><br /><br />
<label for="email">Votre E-mail :</label><br />
<input type="text" name="email" value="" /><br />
<? if(isset($erreuremail)) echo $erreuremail; ?><br /><br />
<input type="submit" class="submit" value="Je m'inscris !" />
</form>
<? if(isset($erreurid)) echo '<div class="erreurid"><p>' .$erreurid. '</p></div>' ;?>
<? if(isset($ok)) echo '<div class="ok"><p>' .$ok. '</p></div>' ;?>
</div>
</div>
</div>
</body>
</html>