IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Récupérer le résultat d'un COUNT avec PDO [PDO]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 24
    Points : 12
    Points
    12
    Par défaut Récupérer le résultat d'un COUNT avec PDO
    Bonjour à tous,

    Je souhaite lors de l'inscription d'un membre vérifier si le pseudo est déjà utilisé ou non. Je lance donc la requête suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    /* TEST DE DISPONIBILITE DE L'IDENTIFIANT */
    try{
         $bdd = new PDO('mysql:host=localhost;dbname=share_db', 'root', '');
    }
    catch (Exception $e)
    { 
    	die('Erreur : '. $e->getMessage());
    }
     
    $req = $bdd->prepare('SELECT COUNT(id) as nombre FROM user_account WHERE id=:pseudo;') or die(print_r($bdd->errorInfo())) ;
    $req->execute( array('pseudo'=>$pseudo) );
    Ma question est de savoir comment utiliser le résultat de cette requête ? Je souhaiterais écrire par la suite une condition du genre => "Si 0 alors : pseudo disponible"

    Pour le moment ma table 'user_account' ne contient aucune entrée donc ma requête devrait me renvoyer une ligne de résultat contenant la valeur 0.

    Je parviens à afficher le nombre de lignes de résultat comme ci-dessous( soit 1) mais pas le contenu ( qui devrait être 0).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    $donnees=$req->fetch();
    echo $donnees['nombre'] // "1"
    Quelqu'un pourrait-il m'éclairer ??

    Merci d'avance

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 24
    Points : 12
    Points
    12
    Par défaut
    Ah peut-être avec un fetchColumn() ?? Je ne l'ai jamais utilisé mais je viens de voir ça sur une doc.

    Je vais essayer cela.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 24
    Points : 12
    Points
    12
    Par défaut
    Je suis parvenu à mes fins en écrivant le code suivant après l'exécution de ma requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $donnees = $req->fetchColumn();
     
    if($donnees==0)
    {
      // Pseudo dispo
    }
    je vais continuer les tests et si cela continue de fonctionner je me féliciterai d'avoir résolu ce problème

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 24
    Points : 12
    Points
    12
    Par défaut
    Cela fonctionne parfaitement.

    Félicitations à moi donc

  5. #5
    Membre expérimenté
    Homme Profil pro
    Développeur C++
    Inscrit en
    Avril 2012
    Messages
    771
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 771
    Points : 1 631
    Points
    1 631
    Par défaut
    Bonsoir,

    plus rapidement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if( $donnee = $req->fetch() ){
        echo 'nom déjà pris';
    }else{
        //Suite du traitement car le nom n'est pas dans la table
    }
    une réponse vous a permis d'avancer ?

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 24
    Points : 12
    Points
    12
    Par défaut
    Tu es sûr ?? Dans tous les cas $donnee aura une valeur puisque COUNT renvoie toujours une ligne donc il passera le if à chaque fois non ??

    Si $donnee pouvait être NULL cela aurait fonctionné par contre.

  7. #7
    Membre expérimenté
    Homme Profil pro
    Développeur C++
    Inscrit en
    Avril 2012
    Messages
    771
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 771
    Points : 1 631
    Points
    1 631
    Par défaut
    Non si ta requête ne renvoi aucun résultat le fetch() renvoi false, essai tu verra que ça fonctionne
    une réponse vous a permis d'avancer ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/08/2011, 18h42
  2. [Débutant] Récupérer les résultats d'un SELECT avec l'objet DataReader
    Par zayoub dans le forum VB.NET
    Réponses: 2
    Dernier message: 31/07/2011, 21h07
  3. Récupérer le résultat d'un Count(*)
    Par philou029 dans le forum Langage
    Réponses: 4
    Dernier message: 17/02/2010, 18h52
  4. Récupérer le résultat d'un COUNT
    Par thms92 dans le forum SQLite
    Réponses: 4
    Dernier message: 28/07/2009, 15h45
  5. Réponses: 2
    Dernier message: 08/06/2009, 10h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo