Création
d'entreprise
Posez votre question Signaler

Vérification existance d'email table MySQL [Résolu]

Yannick_Altuna_07 38Messages postés 4 mai 2009Date d'inscription 24 avril 2012Dernière intervention - Dernière réponse le 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
Lire la suite 

Vérification existance d'email table MySQL »

11 réponses
Réponse
+1
moins plus
lol !!
chuis fatigué aujourd'hui!
SELECT email FROM newsletter WHERE email="'.$email.'"'


monstre faute dans la requête...
Yannick_Altuna_07- 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
Yannick_Altuna_07- 23 mars 2010 à 12:34
$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é
Ajouter un commentaire
Réponse
+0
moins plus
peut-être un problème de guillemets:
$verif = $bd->execRequete ('SELECT email INTO newsletter WHERE email="'.$email.'");
Yannick_Altuna_07- 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.
UgglyBoy- 19 mars 2010 à 16:29
re-post ton script php, dans son état actuel, STP
Yannick_Altuna_07- 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 ();

?>
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Réponse
+0
moins plus
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
Ajouter un commentaire
Ce document intitulé « Vérification existance d'email table MySQL » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?