Probleme avec pdo et addr email en php

Résolu/Fermé
tgdn Messages postés 30 Date d'inscription vendredi 9 avril 2010 Statut Membre Dernière intervention 17 septembre 2010 - Modifié par tgdn le 9/04/2010 à 16:35
tgdn Messages postés 30 Date d'inscription vendredi 9 avril 2010 Statut Membre Dernière intervention 17 septembre 2010 - 9 avril 2010 à 23:04
Bonjour à tous :D
Je fais un site, et il y a un espace membres, sauf que pour s'inscrire tout va bien sauf le PDO avec php et mysql.
Je fais une requête préparée pour savoir si l'e-mail existe déjà ou non dans la table puis j'exécute la requête avec un array :

 try       //On essaye de se connecter à la BDD  
  {  
    $bdd = new PDO('mysql:host=localhost;dbname=membres', 'root', '');  
  }  
  catch(Exception $e)       //Si cela ne marche pas, on recupere l'erreur  
  {  
    die('Erreur : '.$e->getMessage());  
  }  

$nombremail = $bdd->prepare('SELECT COUNT(*) FROM membres WHERE email = :email_inscr') or die(print_r($bdd->errorInfo()));   
   
$nombremail->execute(array('email_inscr' => $_POST['email_inscr']));  

if ($nombremail != 0)    //Et c'est ici ou sa plante, je sais pas comment faire, alors j'ai écrit au pif : si n'est pas égal à 0.  
{  
   //Votre adresse e mail est déjà utilisée par un membre...  
}  


Je suis complètement bloqué.
Si vous pouviez m'aider ce serai super sympa de votre part. Merci.
A voir également:

2 réponses

avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
9 avril 2010 à 15:48
$nombremail est un objet (PDOStatement), pas le résultat de la requête.
Pour gérer les erreurs, il ne faut surtout pas utiliser "or die" mais la structure "try catch" !

$nombremail = $bdd->prepare('SELECT COUNT(*) AS nb FROM membres WHERE email = :email_inscr');
$nombremail->execute(array('email_inscr' => $_POST['email_inscr']));
$donnees = $nombremail->fetch(PDO::FETCH_OBJ);
$nb = $donnees->nb;
1
tgdn Messages postés 30 Date d'inscription vendredi 9 avril 2010 Statut Membre Dernière intervention 17 septembre 2010
9 avril 2010 à 16:20
Merci je teste tout de suite :D
0
tgdn Messages postés 30 Date d'inscription vendredi 9 avril 2010 Statut Membre Dernière intervention 17 septembre 2010
Modifié par tgdn le 9/04/2010 à 16:34
Alors, enfait, j'ai écrit :

  $nombremail = $bdd->prepare('SELECT COUNT(*) AS nb FROM membres email = :email_inscr');  
  $nombremail->execute(array('email_inscr' => $_POST['email_inscr'])); 
  $donnes = $nombremail->fetch(PDO::FETCH_OBJ); 
  $nb = $donnes->nb; 
  if ($nombremail != 0) 
  { 
      //Votre meail est deja utilisé par un membre... 
  } 


Je crois que je me suis planté encore :P
Notice: Trying to get property of non-object in C:\wamp\www\inscription\registerok_fr.php  on line 42
Ligne 42:   $nb = $donnes->nb;

Notice: Object of class PDOStatement could not be converted to int in C:\wamp\www\inscription\registerok_fr.php on line 43
Ligne 43:   if ($nombremail != 0)

Qu'est ce que je dois mettre à la place de if($nombremail != 0) ??
Merci.
0
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
9 avril 2010 à 16:33
La variable qui contient le nombre est $nb
Dans la ligne avant le "if", tu peux remplacer "$nb" par "$nombremail"
0
tgdn Messages postés 30 Date d'inscription vendredi 9 avril 2010 Statut Membre Dernière intervention 17 septembre 2010
9 avril 2010 à 16:58
Je te dois tout :D merci beaucoup :) Mais il reste un tout petit truc. J'ai mis :
  $nombremail = $bdd->prepare('SELECT COUNT(*) AS nb FROM membres email = :email_inscr'); 
  $nombremail->execute(array('email_inscr' => $_POST['email_inscr']));
  $donnes = $nombremail->fetch(PDO::FETCH_OBJ);
  $nb = $donnes->nb;
  if ($nb != 0)
  {
    $email_error1 = "Votre email est déjà utilisée par un membre.";   
    $i++;
    $nombremail->closeCursor(); 


J'ai ete inscrit et tout, je suis allé voir dans ma BDD tout y est, mais il me dit
Notice: Trying to get property of non-object in C:\wamp\www\inscription\registerok_fr.php on line 42
Ligne 42: $nb = $donnes->nb;
0
avion-f16 Messages postés 19246 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 4 497
9 avril 2010 à 17:01
$nombremail = $bdd->prepare('SELECT COUNT(*) AS nb FROM membres email = :email_inscr');
Ta requête est mauvaise
0
tgdn Messages postés 30 Date d'inscription vendredi 9 avril 2010 Statut Membre Dernière intervention 17 septembre 2010
9 avril 2010 à 23:04
Merci beaucoup pour ton aide :D trop top
0