Vérification existance d'email table MySQL

Résolu/Fermé
Yannick_Altuna_07 Messages postés 87 Date d'inscription lundi 4 mai 2009 Statut Membre Dernière intervention 12 septembre 2016 - Modifié par Yannick_Altuna_07 le 19/03/2010 à 15:57
Yannick_Altuna_07 Messages postés 87 Date d'inscription lundi 4 mai 2009 Statut Membre Dernière intervention 12 septembre 2016 - 9 juin 2010 à 17:09
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
A voir également:

4 réponses

UgglyBoy Messages postés 422 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 30 mai 2015 64
19 mars 2010 à 18:30
lol !!
chuis fatigué aujourd'hui!
SELECT email FROM newsletter WHERE email="'.$email.'"'


monstre faute dans la requête...
1
Yannick_Altuna_07 Messages postés 87 Date d'inscription lundi 4 mai 2009 Statut Membre Dernière intervention 12 septembre 2016 9
23 mars 2010 à 11:25
...

...

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
0
Yannick_Altuna_07 Messages postés 87 Date d'inscription lundi 4 mai 2009 Statut Membre Dernière intervention 12 septembre 2016 9
Modifié par Yannick_Altuna_07 le 23/03/2010 à 12:40
$bd = new MySQL (NOM, PASSE, BASE, SERVEUR);

$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é
0
UgglyBoy Messages postés 422 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 30 mai 2015 64
19 mars 2010 à 16:08
peut-être un problème de guillemets:
$verif = $bd->execRequete ('SELECT email INTO newsletter WHERE email="'.$email.'");
0
Yannick_Altuna_07 Messages postés 87 Date d'inscription lundi 4 mai 2009 Statut Membre Dernière intervention 12 septembre 2016 9
19 mars 2010 à 16:17
Non ça ne viens pas de la, regarde dans l'erreur :

... SELECT email INTO newsletter WHERE email='y.altuna@ocelines.fr'. - Undeclared variable: newsletter' in ...

il à bien récupérer ma variable, ce que je ne comprend pas c'est pourquoi ce "Undeclared variable: newsletter"???
0
UgglyBoy Messages postés 422 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 30 mai 2015 64
19 mars 2010 à 16:20
copie/colle ce que j'ai écrit. les guillemets ne sont pas à la même place!
0
Yannick_Altuna_07 Messages postés 87 Date d'inscription lundi 4 mai 2009 Statut Membre Dernière intervention 12 septembre 2016 9
19 mars 2010 à 16:27
c'est ce que j'ai fais, il n'a pas afficher la page parce qu'il manquait un guillemet, je l'ai rajouté et toujours la même erreur.

Sais tu ce que veux dire ceci :

"Stack trace: #0"

c'est dans le message d'erreur et ça m'intrigue.
0
UgglyBoy Messages postés 422 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 30 mai 2015 64
19 mars 2010 à 16:29
re-post ton script php, dans son état actuel, STP
0
Yannick_Altuna_07 Messages postés 87 Date d'inscription lundi 4 mai 2009 Statut Membre Dernière intervention 12 septembre 2016 9
19 mars 2010 à 17:13
<?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.'"');

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 ();

?>
0
Yannick_Altuna_07 Messages postés 87 Date d'inscription lundi 4 mai 2009 Statut Membre Dernière intervention 12 septembre 2016 9
26 mars 2010 à 15:44
Rebonjour tout le monde,

Mon problème est presque réglé.
Ca fonctionne en local mais une fois en ligne il indique une erreur au niveau de la requête 'SELECT', je n'y comprend rien, j'ai même appelé OVH, après demi heure de recherche même le technicien ne voyais aucune erreur.
J'ai vérifier, même les table sont identiques.
Aucun soucis de connexion car j'ai d'autre script qui fonctionne très bien.
J'ai aussi remplacé la variable $email avec une adresse en dure et le même message s'affiche :

Warning: mysql_error(): 12 is not a valid MySQL-Link resource in /homez.333/communau/www/ocelines/ressources/php/MySQL.class.php on line 33

Fatal error: Uncaught exception 'Exception' with message 'Probl?me dans l'ex?cution de la requ?te : SELECT email FROM newsletter WHERE email="y.altuna@ocelines.fr". - ' in /homez.333/communau/www/ocelines/ressources/php/MySQL.class.php:33 Stack trace: #0 /homez.333/communau/www/ocelines/contenu/enregistrement_suivis_de_dossiers.php(148): MySQL->execRequete('SELECT email FR...') #1 {main} thrown in /homez.333/communau
/www/ocelines/ressources/php/MySQL.class.php on line 33

si quelqu'un sais ce qui se passe, en local ça fonctionne toujours bien
0
Yannick_Altuna_07 Messages postés 87 Date d'inscription lundi 4 mai 2009 Statut Membre Dernière intervention 12 septembre 2016 9
9 juin 2010 à 17:09
TADAAA, voici un méga up d'un vieux post, j'ai trouvé la solution. Mon hébergeur ovh n'accepte pas les connexions simultanées multiple à la base sans l'option "sql privé".

Sur le coup il faisait planté pas mal de mes scripts sans aucune raison apparente.
Je post le même message sur tout les sujets différents que j'avais posté à l'époque et qui ont le même probléme.

Yannick, qui a eu raison de ne pas abandonner
0