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 :

Pseudo existe déjà ? [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 52
    Par défaut Pseudo existe déjà ?
    Bonjour a tous, j'espere que j'ai choisi la bonne rubrique pour le sujet.
    Voici le code qui me permettrai de ne pas avoir deux fois le meme pseudo sur mon site mais il y a un probleme que e ne trouve pas.Pouvez vous m'aider?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $sql = mysql_query("SELECT COUNT(*) AS nb_pseudo FROM pseudo WHERE pseudo='".$pseudo."'");
                                    if ($sql == 0)
                                    {mysql_select_db("info_perso");
     
    								// On ajoute une entrée avec mysql_query
    								mysql_query("INSERT INTO pseudo VALUES('', '$pseudo', '$password', '$email')");
     
    								mysql_close();
    								}
                                   else
                                       echo 'Erreur : le pseudo existe déjà !';

    Merci a tous

  2. #2
    Membre chevronné
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2006
    Messages
    430
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2006
    Messages : 430
    Par défaut
    Salut,

    hmmm, je crois qu'il y a un petit problème de compréhension par rapport à ce que font les fonctions que tu tentes d'utiliser...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $sql = mysql_query("SELECT COUNT(*) AS nb_pseudo FROM pseudo WHERE pseudo='".$pseudo."'");
    if ($sql == 0)
    {mysql_select_db("info_perso");
    Dans cette petite partie déjà...
    - Pourquoi faire le mysql_select_db après avoir exécuté la requête?
    - $sql = mysql_query(...); cela te retourne une ressource mysql, tu ne peux donc pas la comparer avec "0" comme tu le fais ici.

    Voila une façon de faire, corrigée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $conn = mysql_connect( ... ) or die ("Echec de connexion");
    mysql_select_db('info_perso');
    $sql = "SELECT * FROM pseudo WHERE pseudo = '" . $pseudo .'";
    $res = mysql_query($sql) or die ("Erreur SQL : " . mysql_error());
    if (mysql_num_rows($res)) {
      echo "pseudo existant!";
    }
    else {
      // code pour l'insertion...
    }
    C'est une manière de procéder.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 52
    Par défaut
    J'ai fais ca et ca ne marche pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    mysql_select_db('info_perso');
    $sql = "SELECT * FROM pseudo WHERE pseudo = ' . $pseudo .'";
    $res = mysql_query($sql) or die ("Erreur SQL : " . mysql_error());
    if (mysql_num_rows($res)) {
      echo "pseudo existant!";
    }
    else {
    mysql_query("INSERT INTO pseudo VALUES('', '$pseudo', '$password', '$email')");
    mysql_close();
    }
    Les variables sont bonnes, j'arrive a ecrire dasn la BDD mais je peux mettre deux fois le meme pseudo

  4. #4
    Membre émérite
    Avatar de gerald2545
    Profil pro
    Inscrit en
    Février 2003
    Messages
    744
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 744
    Par défaut
    $sql = "SELECT * FROM pseudo WHERE pseudo = ' . $pseudo .'";
    devient
    $sql = "SELECT * FROM pseudo WHERE pseudo = '$pseudo'";
    ou
    $sql = "SELECT * FROM pseudo WHERE pseudo = '" . $pseudo ."'";

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 52
    Par défaut
    J'ai fais comme ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "SELECT * FROM pseudo WHERE pseudo = '$pseudo'";
    mais maintenant il s'affiche aucune base selectionne alors que je l'ai fais plus haut.

  6. #6
    Membre émérite
    Avatar de gerald2545
    Profil pro
    Inscrit en
    Février 2003
    Messages
    744
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 744
    Par défaut
    donne ton code source et l'erreur exacte renvoyée

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 52
    Par défaut
    Voici le code:
    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
    17
    <?php
       $pseudo=$_POST['pseudo'];
       $password=$_POST['password'];
       $email=$_POST['email'];
     
    mysql_connect("localhost", "root", "");
    if (strlen(trim($_POST['pseudo'])) > 3 && strlen(trim($_POST['pseudo'])) < 35)
    				   mysql_select_db('info_perso');
    					$sql = "SELECT * FROM pseudo WHERE pseudo = '$pseudo'";
    					$res = mysql_query($sql) or die ("Erreur SQL : " . mysql_error());
    					if (mysql_num_rows($res)) {
    					echo "pseudo existant!";
    					}
    					else
    					mysql_query("INSERT INTO pseudo VALUES('', '$pseudo', '$password', '$email')");
                        mysql_close();
    ?>
    L'erreur me dit:
    Aucune table SQL selectionnée

  8. #8
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Par défaut


    Il faut selectionner la table dans laquelle tu va travailler grâce à : mysql_select_db je crois

    http://php.developpez.com/faq/?page=...mysqlconnecter

    @+

    Arnaud
    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

  9. #9
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Mon cher Arnaud, tu me sembles fatigué :/

    Le plus simple et le plus fiable dans ce genre de situation est d'utiliser une clef UNIQUE sur ton nom d'utilisateur dans la structure de la table MySQL. Ainsi, une insertion d'un username déjà présent donnera une erreur de doublon (dont je ne connais pas le code numérique par coeur mais que tu peux récupérer facilement à l'aide de mysql_errno() et qui te sera très très utile).

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 52
    Par défaut
    Je l'ai fait a la 7ème ligne du code

  11. #11
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Par défaut
    Citation Envoyé par Yogui
    Mon cher Arnaud, tu me sembles fatigué :/
    No comment... Je le suis

    Arnaud
    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 52
    Par défaut
    Est ce que ce code pourrai marcher?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
       $pseudo=$_POST['pseudo'];
       $password=$_POST['password'];
       $email=$_POST['email'];
     
    mysql_connect("localhost", "root", "");
    mysql-select-db('info_perso');
    if (strlen(trim($_POST['pseudo'])) > 3 && strlen(trim($_POST['pseudo'])) < 35)
    					$res = "SELECT pseudo FROM pseudo WHERE pseudo='$pseudo'";
    					if $res==0{
    					echo "Tu as reussi, t'es trop fort!";
    					mysql_query("INSERT INTO pseudo VALUES('', '$pseudo', '$password', '$email')");}
    					else{echo "Pseudo deja existant"}
    mysql_close(); ?>
    S'il ne marche pas, dites moi pourquoi?merci

  13. #13
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Non : il t'a déjà été dit que $res ne doit pas être comparé à zéro. En outre, pourquoi ne pas essayer ce que je t'ai proposé ? C'est de loin la méthode la plus fiable.

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 52
    Par défaut
    Parce que je ne la comprend pas tout simplement.
    Si je l'ameliore, est ce que le code marchera?

  15. #15
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Commence par utiliser un bon éditeur de code, car pour le moment il y a de jolies erreurs de syntaxe qui sont très simples à résoudre. Nous avons un débat à ce sujet dans le forum des outils ainsi qu'un comparatif dans l'un des liens que j'ai en signature.

    Ensuite, met ton code en forme car, pour le moment, 5 tabulations me semblent être une très bonne manière de rendre du code inexploitable.

    Ensuite, renseigne-toi sur les bonnes pratiques à mettre en oeuvre suite à l'envoi d'un formulaire : http://g-rossolini.developpez.com/tu...page_2#LII-B-1

    Sinon, essaie d'adopter une méthode uniforme et homogène pour tes chaînes : Apostrophes ou guillemets dans le code PHP : lesquels choisir ?

    Enfin, la réponse que tu attends se trouve probablement dans les exemples de ce tutoriel : Comment débuter avec MySQL et PHP

  16. #16
    Rédacteur
    Avatar de Arnaud F.
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2005
    Messages
    5 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Finance

    Informations forums :
    Inscription : Août 2005
    Messages : 5 183
    Par défaut
    Au passage =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql-select-db('info_perso');
    devient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_select_db('info_perso');
    Sinon écoute ce que te dis Yogui, et reviens nous poser des questions par la suite ( t'en aura plus beaucoup )


    Arnaud
    C'est par l'adresse que vaut le bûcheron, bien plus que par la force. Homère

    Installation de Code::Blocks sous Debian à partir de Nightly Builds

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 52
    Par défaut
    J'ai essayer ca:
    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
    <?php
       $pseudo=$_POST['pseudo'];
       $password=$_POST['password'];
       $email=$_POST['email'];
     
    mysql_connect("localhost", "root", "");
    mysql_select_db('info_perso');
    if (strlen(trim($_POST['pseudo'])) > 3 && strlen(trim($_POST['pseudo'])) < 35)
    					$sql = "SELECT * FROM pseudo WHERE pseudo= '" . $pseudo ."''";
    					$result = mysql_query($sql) or die("Erreur SQL :  " . mysql_error());
    					if (mysql_num_rows($result)){
    					echo "Le pseudo que vous avez taper existe déjà.";}
    					else{mysql_query("INSERT INTO pseudo VALUES('', '$pseudo', '$password', '$email')");
    					echo "Vos information on ete envoyer avec succès.";}
    mysql_close(); ?>
    Il s'affiche alors:
    Erreur SQL : erreur de syntaxe vers "" a la ligne 1
    Dans les "" c'est ce que j'ai tape dans le champ pseudo de la page du formulaire

  18. #18
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Tu n'as pas mis d'accolades à ton premier if() : cela te donnera des problèmes par la suite.
    Sinon, protège tes valeurs de la requête à l'aide de la fonction mysql_real_escape_string() ou, mieux, de la fonction proposée dans la doc de cette fonction. Et affiche mysql_error() dans le or die()...

  19. #19
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 52
    Par défaut
    J'ai change le if(), pour or die je l'ai fais non?
    Sinon pourquoi il y a marquer erreur de syntaxe, je ne comprends pas.

  20. #20
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Non, or die() est à utiliser pour toute communication avec la base de données. Fais-le surtout pour les requêtes afin de connaître le détail de tes erreurs de syntaxe. Bien sûr, il faut lire le message qui t'est proposé. Affiche aussi la requête, cela t'aidera. Vas-y pas à pas et ne viens pas nous voir avant d'avoir essayé plusieurs solutions, je t'en supplie ! Nous pouvons t'aider mais nous n'allons pas tout faire à ta place !

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [MySQL] Vérifier si un pseudo existe (mysql et php)
    Par linouchka dans le forum PHP & Base de données
    Réponses: 16
    Dernier message: 07/12/2018, 19h40
  2. [AJAX] teste si pseudo existe ou non
    Par oceane751 dans le forum AJAX
    Réponses: 1
    Dernier message: 11/04/2012, 23h03
  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. Réponses: 3
    Dernier message: 22/04/2011, 05h59
  5. [MySQL] Vérification si un pseudo existe déjà
    Par david2511 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 15/10/2008, 19h36

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