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 :

Vérifier si un pseudo existe (mysql et php) [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 74
    Par défaut Vérifier si un pseudo existe (mysql et php)
    Bonjour;

    J'ai fait un script pour vérifier au moment de la création d'un pseudo si celui ci existe déjà dans la base de données mysql ou non, à l'exécution je reçois le message suivant
    Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given
    Le script est le suivant:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $pseudo = 'toto';
    $query = mysql_query("SELECT idClient FROM client WHERE pseudo = '$pseudo'");
    if(mysql_num_rows($query) == 1){
       // Pseudo déjà utilisé
       echo 'Ce pseudo est déjà utilisé';
       }else{
       // Pseudo libre
       mysql_query("INSERT INTO client (pseudo) VALUE ('$pseudo')");
    }

    Merci d'avance

  2. #2
    Membre chevronné
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    351
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 351
    Par défaut
    Salut,

    Comme tu peux le voir dans la doc (http://www.php.net//manual/fr/function.mysql-query.php) :
    Pour les requêtes du type SELECT, SHOW, DESCRIBE, EXPLAIN et les autres requêtes retournant un jeu de résultats, mysql_query() retournera une ressource en cas de succès, ou FALSE en cas d'erreur.
    Ton code fonctionnera si ton SELECT retourne un résultat, puisque $query contiendra une ressource. Si le pseudo n'est pas présent dans la base, $query contiendra false et donc ton test sera invalide puisque mysql_num_rows attend une ressource et non un booléen.

    PS : mysql_query est obsolète et sera bientôt supprimée, pourquoi ne pas utiliser les extensions MySQLi ou PDOMySQL comme cela est conseillé dans la doc ?

  3. #3
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 74
    Par défaut
    salut
    En fait j'ai essayé d'utiliser PDO mais je n'arrivais pas à me connecter à la base de données ,désolée mais comment je vais faire alors ? je suis débutante en php et mysql et là il faut que j'avance dans mon stage,si vous avez des suggestions .

    merci

  4. #4
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Si je ne m'abuse, tu as surtout du mal à construire ta requête en passant du PHP au SQL...
    Essaie cela, ça devrait marcher.
    Prends le réflexe suivant :
    ' séparateur de PHP
    " guillemets internes dans du SQL
    PS : tu utilises bien un notepad++ ou un éditeur avec coloration syntaxique ? Sinon, tu vas en baver...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    $pseudo = 'toto';
    //et puisque tu débutes, prends l'habitude d'afficher ton sql après interprétation des variables PHP AVANT de l'envoyer
    //tu l'affiches, tu le copies colles, et tu vas tester dans ton phpmyadmin si ça passe
    $sql='SELECT idClient FROM client WHERE pseudo = "'.$pseudo.'"';
    echo $sql;
    /*$query = mysql_query($sql);
    if(mysql_num_rows($query) >0){
       // Pseudo déjà utilisé
       echo 'Ce pseudo est déjà utilisé';
       }else{
       // Pseudo libre
       $sql2='INSERT INTO client (pseudo) VALUE ("'.$pseudo.'")';
       echo $sql2;
       mysql_query($sql2);
    }
    */
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  5. #5
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 74
    Par défaut
    Salut;
    J'ai essayé le code que tu m'as envoyé ,il m'affiche le même message d'erreur ,en plus il m'affiche les requêtes sql sur ma page .


    j'utilise le notepad++

  6. #6
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Et donc ?
    tu as copié-collé la requête produite dans ton phpmyadmin, et là, il t'a dit exactement ce qui fait que ta requête est fausse ? C'est cela qui m'intéresse.
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  7. #7
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 74
    Par défaut
    je l'ai copié -collé dans mon fichier php et non pas dans phpmyadmin

  8. #8
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 74
    Par défaut
    quand j'ai exécuté la requête dans phpmyadmin ,il m'a affiché cette erreur:
    Erreur
    Requête SQL:

    $pseudo = 'toto';


    MySQL a répondu: Documentation

    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '$pseudo = 'toto'' at line 1

  9. #9
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Par défaut
    Vous avez dû oublier des étapes !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $link = mysqli_connect( 'localhost', 'root', 'votre_password', 'votre_bdd' ) ;
    $pseudo = 'toto';
    $query = "SELECT idClient FROM client WHERE pseudo = '$pseudo' ";
    $resultat =  mysqli_query( $link, $query ) ;
    $row = mysqli_fetch_array($resultat, MYSQLI_ASSOC) ;    
    if ( mysqli_num_rows($resultat) != 0 )
         {
         echo 'Ce pseudo est déjà utilisé' ;
         }
    On se 'link', on écrit une requête '$query', on soumet pour obtenir '$resultat', et on explore...

    Cdlt

  10. #10
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Bon Linouchka, il ne s'agit pas de copier coller TOUT ton code PHP dans ton phpmyadmin, mais seulement ton code SQL produit par le php.
    En clair, un truc dans ce goût...
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT idClient FROM client WHERE pseudo = "toto"
    Quant à la réponse précédente, j'ose espérer que tu as établi une connexion à ta base et que tu ne nous l'a pas montrée, simplement... Mais ça va mieux en le disant, effectivement !

    Tu devrais lire un tuto pour débutant quand même là, (ma signature).
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  11. #11
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Par défaut
    Pour moi il manquait notamment :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $resultat =  mysqli_query( $link, $query ) ;

  12. #12
    Membre Expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Billets dans le blog
    8
    Par défaut
    Bon, Iakou, vu comment elle a l'air de galérer, je propose qu'on lui laisse sa syntaxe mysql et qu'on ne l'embête pas tout de suite avec la syntaxe mysqli.
    Linouchka, tu as bien un truc comme ça avant le script que tu nous montres ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
    $db = mysql_select_db('nom_de_ma_base', $link);
    PDO, une soupe et au lit !
    Partir de la fin est un bon moyen de retrouver son chemin. Bibi - 2020

  13. #13
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Par défaut
    Yes !

    Car nous lui faisons tout le boulot !... (linouchka c'est féminin, non ?...)

  14. #14
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 74
    Par défaut
    Bonsoir;
    Désolée pour le retard j'avais un empêchement.
    alors pour le code queiakou m'a donnée à l’exécution j'ai eu des messages d'erreurs.

    pour se connecter à la base de données j'ai ce code:

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $connect= mysql_connect('localhost','root','') or die ('Erreur');
    mysql_select_db('mandat');

    Je vous remercie beaucoup vous êtes des anges

    pour iakou oui linouchka c'est féminin

  15. #15
    Inactif  
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Janvier 2014
    Messages : 374
    Par défaut
    Bonjour linouchka.

    - Le code que je vous ai donné est un exemple. (Vous devez bien entendu l'adapter)
    - Par ailleurs les instructions mySQL étant obsolètes (attention, je n'ai pas dit erronées) il y a forcément des petites différences de syntaxe...

    mysql_query() échouera et retournera FALSE si l'utilisateur n'a pas les autorisations nécessaires pour accéder à la (aux) table(s) référencée(s) par la requête.
    Il semblerait que votre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query = mysql_query("SELECT idClient FROM client WHERE pseudo = '$pseudo'");
    ait retourné FALSE.

    C'est bien ce que dit votre message : vous avez fourni un booléen (en l'espèce FALSE) à l'instruction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if ( mysql_num_rows($query) == 1 )
    Comme l'avait déjà souligné Thomas dès le début !

  16. #16
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2014
    Messages : 74
    Par défaut
    Bonjour;

    En fait j'ai refait tout mon code en utilisant PDO et c'est bon j'ai réussis à vérifier si le pseudo existe


    Merci pour toutes vos réponses.

  17. #17
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2018
    Messages : 1
    Par défaut
    Citation Envoyé par iakou Voir le message
    Yes ! Svp msqli_num_rows ne donne pas

    Car nous lui faisons tout le boulot !... (linouchka c'est féminin, non ?...)

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/12/2012, 10h56
  2. Réponses: 2
    Dernier message: 30/04/2012, 00h25
  3. vérifier si mail et pseudo existe deja dans bdd
    Par endelium dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 20/01/2012, 11h54
  4. [MySQL] Requête pour vérifier base de donné Mysql en php
    Par srab2pac dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 13/06/2008, 09h48
  5. requête mysql sous php
    Par remi59 dans le forum Débuter
    Réponses: 9
    Dernier message: 03/07/2003, 10h39

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