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

JavaScript Discussion :

verification de disponibilité de pseudo dans une table mysql


Sujet :

JavaScript

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Août 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Autre

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Août 2011
    Messages : 50
    Points : 52
    Points
    52
    Par défaut verification de disponibilité de pseudo dans une table mysql
    Bonjour
    je débute en javascript
    je viens d'essayer un bout de code que j'ai déniché sur un site, qui vérifie si un pseudo est disponible
    alors, il comporte deux fonction, une pour lire le fichier qui contient la requete vers ma base de donner, et une autre qui teste les valeurs retourné par la 1ere fonction et exécute le traitement nécéssaires.
    le bout de code est très lisible, le passage de paramètres entre mon formulaire, le fichier .php et la fonction qui lit le fichier s'effectue sans problème.
    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
     
    <?
     
     
    // CONNECION SQL
    mysql_connect("localhost", "XXXXX", "XXXXX");
    mysql_select_db("XXXXX");
     
    // VERIFICATION
    $result = mysql_query("SELECT PSEUDO FROM membre WHERE PSEUDO='".$_GET["pseudo"]."'");
    if(mysql_num_rows($result)>=1)
            echo "1";
    else
            echo "2";
    ?>
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    function writediv(texte)
         {
         document.getElementById('pseudobox').innerHTML = texte;
         }
    function file(fichier)
         {
         if(window.XMLHttpRequest) // FIREFOX
              xhr_object = new XMLHttpRequest();
         else if(window.ActiveXObject) // IE
              xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
         else
              return(false);
         xhr_object.open("GET", fichier, false);
         xhr_object.send(null);
         if(xhr_object.readyState == 4) return(xhr_object.responseText);
         else return(false);
         }
     
    function verifPseudo(pseudo)
         {
         if(pseudo != '')
                   {
                   if(pseudo.length<2)
                             writediv('<span style="color:#cc0000"><b>'+pseudo+' :</b> ce pseudo est trop court</span>');
                   else if(pseudo.length>30)
                             writediv('<span style="color:#cc0000"><b>'+pseudo+' :</b> ce pseudo est trop long</span>');
                   else if(texte = file('verifpseudo.php?pseudo='+escape(pseudo)))
                             {
     
              if(texte == 1)
                   writediv('<span style="color:#cc0000"><b>'+pseudo+' :</b> ce pseudo est deja pris</span>');
              else if(texte == 2)
                   writediv('<span style="color:#1A7917"><b>'+pseudo+' :</b> ce pseudo est libre</span>');
              else
                   writediv(texte);
                             }
                   }
     
         }
    dans la dernière fonction VerifPseudo, lorsque la longueur du pseudo est appropriée, mais au lieu que la variable texte se contente de prendre la valeur 1 ou 2 (comme il est indiqué dans le fonction .php ) elle prend tout le reste , voila ce que j'ai eu dans mon navigateur :
    =1) echo "1"; else echo "2"; ?>
    c'est le 2eme else qui s'est exécuté...

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 030
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 030
    Points : 44 375
    Points
    44 375
    Par défaut
    Bonjour,
    pas un spécialiste du PHP, mais il semblerait que tu ais un problème de syntaxe
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    // CONNECION SQL
    mysql_connect("localhost", "XXXXX", "XXXXX");
    mysql_select_db("XXXXX");
    // VERIFICATION
    $result = mysql_query("SELECT PSEUDO FROM membre WHERE PSEUDO='".$_GET["pseudo"]."'");
    if( mysql_num_rows($result)){
      echo "1";
    }
    else {
      echo "2";
    }
    ?>
    le fait d'injecter directement $_GET dans ta requête reste une opération suicidaire...

  3. #3
    Membre du Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Août 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Autre

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Août 2011
    Messages : 50
    Points : 52
    Points
    52
    Par défaut
    Citation Envoyé par NoSmoking Voir le message
    Bonjour,
    pas un spécialiste du PHP, mais il semblerait que tu ais un problème de syntaxe
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    // CONNECION SQL
    mysql_connect("localhost", "XXXXX", "XXXXX");
    mysql_select_db("XXXXX");
    // VERIFICATION
    $result = mysql_query("SELECT PSEUDO FROM membre WHERE PSEUDO='".$_GET["pseudo"]."'");
    if( mysql_num_rows($result)){
      echo "1";
    }
    else {
      echo "2";
    }
    ?>
    le fait d'injecter directement $_GET dans ta requête reste une opération suicidaire...
    bon, disons que l'ensemble de teste sur le pseudo saisi est effectué ailleurs...
    la variable pseudo est récupéré sans problème, mais uniquement dans le cas ou sa taille est <1 ou dépasse 30, je peux même l'afficher dans le navigateur

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 672
    Points
    66 672
    Billets dans le blog
    1
    Par défaut
    Le problème ne se situe pas coté javascript vu que c'est le responseText qui n'est pas correct.
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Citation Envoyé par DeD b Voir le message
    bon, disons que l'ensemble de teste sur le pseudo saisi est effectué ailleurs...
    la variable pseudo est récupéré sans problème, mais uniquement dans le cas ou sa taille est <1 ou dépasse 30, je peux même l'afficher dans le navigateur
    Ton code Javascript dit: si la longueur du pseudo est strictement inférieur à 2 je fais ça, si la longueur du pseudo est strictement supérieur à 30 je fais ça, sinon je fais mon appel ajax synchrone

    Cherche pas plus loin.

    ERE
    Quand une tête pense seule, elle devient folle.

  6. #6
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonsoir,
    1- Tu n'as pas besoin de tester le readyState parce que tu travailles en mode synchrone.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    xhr_object.send(null);
         return(xhr_object.responseText);
    2- Le responseText est un String mais pas un int.
    A+.

  7. #7
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    Citation Envoyé par DeD b Voir le message
    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
     
    <?
     
     
    // CONNECION SQL
    mysql_connect("localhost", "XXXXX", "XXXXX");
    mysql_select_db("XXXXX");
     
    // VERIFICATION
    $result = mysql_query("SELECT PSEUDO FROM membre WHERE PSEUDO='".$_GET["pseudo"]."'");
    if(mysql_num_rows($result)>=1)
            echo "1";
    else
            echo "2";
    ?>
    […] voila ce que j'ai eu dans mon navigateur :
    =1) echo "1"; else echo "2"; ?>
    Le problème vient de la façon dont tu écris tes balises PHP : <? ... ?>. C'est la syntaxe « raccourcie ». À mon avis, ton serveur ne la supporte pas, ce qui expliquerait pourquoi il repasse en mode texte quand il rencontre un chevron fermant (>) dans la comparaison if (mysql_num_rows($result)>=1). Regarde le code HTML généré pour être sûr.

    Je te conseille, à titre personnel, d'écrire systématiquement les balises PHP « longues » : <?php ... ?>.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/05/2009, 09h38
  2. Insérer le contenue d'un memo dans une table mysql
    Par kijudr dans le forum Bases de données
    Réponses: 1
    Dernier message: 05/12/2005, 08h39
  3. Problème d'insertion dans une table MYSQL
    Par greg69 dans le forum Requêtes
    Réponses: 4
    Dernier message: 24/10/2005, 11h34
  4. Nombre d'enregistrement dans une table MySQL
    Par tom06440 dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 21/10/2005, 19h07
  5. Comment importer un document CSV dans une table MySql ?
    Par magic8392 dans le forum Requêtes
    Réponses: 6
    Dernier message: 04/02/2005, 11h03

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