Vérification existance d'email table MySQL
Résolu
Yannick_Altuna_07
Messages postés
87
Date d'inscription
Statut
Membre
Dernière intervention
-
Yannick_Altuna_07 Messages postés 87 Date d'inscription Statut Membre Dernière intervention -
Yannick_Altuna_07 Messages postés 87 Date d'inscription Statut Membre Dernière intervention -
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
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:
- Vérification existance d'email table MySQL
- Table ascii - Guide
- Table des matières word - Guide
- Comment creer un compte email - Guide
- Verification lien internet - Guide
- Mysql community server - Télécharger - Bases de données
4 réponses
lol !!
chuis fatigué aujourd'hui!
monstre faute dans la requête...
chuis fatigué aujourd'hui!
SELECT email FROM newsletter WHERE email="'.$email.'"'
monstre faute dans la requête...
peut-être un problème de guillemets:
$verif = $bd->execRequete ('SELECT email INTO newsletter WHERE email="'.$email.'");
<?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 ();
?>
// 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 ();
?>
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
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
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
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
...
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é