Je crée actuellement un site ou je voudrai que les personnes puisse s'inscrire à une newsletter. J'aimerai faire une vérification dans la table avant l'insertion pour qu'il n'y ai pas de doublon.
Voici mon script de traitement du formulaire :
------------------------------------------------------------------------------
<?php
// Récupération des données et stockage dans des variables
$email = ($_POST['email']) ;
// **** ******************************** **** //
// **** Insertion dans la base de donnée **** //
// **** ******************************** **** //
require_once("../ressources/php/Connect.php");
require_once("../ressources/php/MySQL.class.php");
// On instancie l'objet
$bd = new MySQL (NOM, PASSE, BASE, SERVEUR);
$verif = $bd->execRequete ("SELECT email INTO newsletter WHERE email='".$email."'");[1]
if(mysql_nusm_rows ($verif == "0"))
{
echo "L'email : ".$email." est déjà enregistré dans la base.";
}
else
{
$sql = $bd->execRequete ("INSERT INTO newsletter (email, date) VALUES ('".$email."','".date("Y-m-d H:i:s'").")");
echo 'Merci de votre inscription, vous recevrez bientôt nos actualités par mail à cette adresse : '.$email;
}
// on ferme la connexion à la base de données
mysql_close ();
?>
------------------------------------------------------------------------------
J'ai eu beau chercher il me met toujours qu'il y à une erreur dans la requête [1], et j'en vois vraiment pas, voici déjà l'erreur :
------------------------------------------------------------------------------
Fatal error: Uncaught exception 'Exception' with message 'Probl?me dans l'ex?cution de la requ?te : SELECT email INTO newsletter WHERE email='y.altuna@ocelines.fr'. - Undeclared variable: newsletter' in C:\Program Files (x86)\EasyPHP 3.0\www\Medlines\ressources\php\MySQL.class.php:33 Stack trace: #0 C:\Program Files (x86)\EasyPHP 3.0\www\Medlines\contenu\formulaire_newsletter.php(48): MySQL->execRequete('SELECT email IN...') #1 {main} thrown in C:\Program Files (x86)\EasyPHP 3.0\www\Medlines\ressources\php\MySQL.class.php on line 33
------------------------------------------------------------------------------
L'erreur ne vient pas du fichier MySQL.class.php à la ligne 33 :
public function execRequete ($requete)
{
$resultat = @mysql_query ($requete, $this->connexion);
if(!$resultat)
throw new Exception ("Problème dans l'exécution de la requête : $requete. - ". mysql_error($this->connexion));[33]
return $resultat;
}
Voici aussi la table mysql au cas ou :
id int(11) Non aucune auto_increment
email varchar(50) utf8_general_ci
date datetime
Tout ça est encore en local mais je ne crois pas que le souci vienne de la.
Merci d'avance pour votre aide.
Cordialement,
Yannick

...
faut quand même dire que c'est bluffant la programmation. Des heures à chercher quelque chose qui est écris en gros caractère sous nos yeux, ça me rappelle une fois ou un camarade et moi cherchions(pendant plus de 3h) un passe glisser parfaitement sous le clavier de son ordi ...
Je reviens plus tard vous dire quand le script fonctionnera parfaitement la je suis sur autre chose.
Yannick, le travailleur multipolyvalent
Merci beaucoup UgglyBoy, t'es peut être moche ^^ mais je suis reconnaissant
$verif = $bd->execRequete ('SELECT email FROM newsletter WHERE email="'.$email.'"');
$result = mysql_num_rows($verif);
echo $result;
if($result != "0")
{
echo "L'email : ".$email." est déjà enregistré dans la base.";
}
else
{
$sql = $bd->execRequete ("INSERT INTO newsletter (email, date) VALUES ('".$email."','".date("Y-m-d H:i:s'").")");
echo 'Merci de votre inscription, vous recevrez bientôt nos actualités par mail à cette adresse : '.$email;
}
// on ferme la connexion à la base de données
mysql_close ();
TADADAAAA, voila ça fonctionne, j'ai eu du mal, mai j'en ressors grandi, merci encore UgglyBoy. J'ai mis le script pour tout ceux qui auront se problème à l'avenir, soyez bénit.
Yannick, heureux d'avoir trouvé