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 :

[AJAX] verification automatique de la disponibilité d'un pseudo


Sujet :

JavaScript

  1. #1
    Membre du Club Avatar de babou54
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 137
    Points : 57
    Points
    57
    Par défaut [AJAX] verification automatique de la disponibilité d'un pseudo
    Bonjour, je suis en train de creer un formulaire d'inscription qui est relié a une table qui n'accepte pas les doublons sur le pseudo, j'utilise donc ajax pour connaitre la disponibilité du pseudo instantanément:

    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
    41
    42
     
    function writediv(texte)
         {
         document.getElementById('pseudobox').innerHTML = texte;
         }
     
    function verifPseudo(pseudo)
         {
         if(pseudo != '')
                   {
                   if(pseudo.length<2)
                             writediv('<span style="color:#cc0000; font-size:8pt"><b>'+pseudo+' :</b> ce pseudo est trop court</span>');
                   else if(pseudo.length>30)
                             writediv('<span style="color:#cc0000; font-size:8pt"><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; font-size:8pt"><b>'+pseudo+' :</b> ce pseudo est deja pris</span>');
     
              else if(texte == 2)
                   writediv('<span style="color:#1A7917; font-size:8pt"><b>'+pseudo+' :</b> ce pseudo est libre</span>');
     
              else
                   writediv(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);
         }
    l'appel dans le formulaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <td><input name="login22" " type="text" class="Txtlib" maxlength="15" onKeyUp="verifPseudo(login22.value)"/>
    <div id="pseudobox"></div></td>
    Et enfin le script php:

    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
    41
    42
    43
    44
    45
    46
    47
    48
     
    <?php require_once('../../Connections/Connexionlibest.php'); ?>
    <?php
    if (!function_exists("GetSQLValueString")) {
    function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
    {
      $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
     
      $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
     
      switch ($theType) {
        case "text":
          $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
          break;    
        case "long":
        case "int":
          $theValue = ($theValue != "") ? intval($theValue) : "NULL";
          break;
        case "double":
          $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
          break;
        case "date":
          $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
          break;
        case "defined":
          $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
          break;
      }
      return $theValue;
    }
    }
     
    $Vlog_login = "dddd";
    if (isset($_GET['login22'])) {
      $Vlog_login = (get_magic_quotes_gpc()) ? $_GET['login22'] : addslashes($_GET['login22']);
    }
    mysql_select_db($database_Connexionlibest, $Connexionlibest);
    $query_login = sprintf("SELECT * FROM annonceur WHERE annonceur.login=%s", GetSQLValueString($Vlog_login, "text"));
    $login = mysql_query($query_login, $Connexionlibest) or die(mysql_error());
    $row_login = mysql_fetch_assoc($login);
    $totalRows_login = mysql_num_rows($login);
     
    if($totalRows_login !=0) {echo(1);} else {echo(2);}
     
    ?>
    <?php
    mysql_free_result($login);
    ?>
    Voila mon probleme est que apparament le script php ne s'éxécute pas, il renvoit le bon résultat (echo) quand je met mes variables en dur.
    Pouvez vous m'aider svp, merci

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    ça serait pas juste cette double quote en trop qui l'empêche de récupérer login22 ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input name="login22" " type="text" ...
    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  3. #3
    Membre du Club Avatar de babou54
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 137
    Points : 57
    Points
    57
    Par défaut
    merci ,pour l'erreur, mais ca ne suffis pas le controle ne marche toujours pas

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    OK !
    Alors peut être parce que ton PHP te retourne du texte, et que tu fais un test sur du numérique.
    Essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(texte == "1")
    ...
    if(texte == "2")
    Et sinon, vérifie qu'Ajax te renvoie bien toujours une des valeurs attendues : tappe l'url appelée par Ajax directement dans la barre d'adresse de ton nav, et vois ce que tu récupères

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  5. #5
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    ... sans remettre en cause le post précédent (les tests à faire sur des types string), ça marchera mieux en remplaçant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onKeyUp="verifPseudo(login22.value)"
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onKeyUp="verifPseudo(this.value)"


    EDIT : désolé de pas l'avoir vu avant

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  6. #6
    Membre du Club Avatar de babou54
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 137
    Points : 57
    Points
    57
    Par défaut
    marche toujours pô! J'ai déjà fait le controle de l'url et le résultat est bon mais l'affichage est mauvais, j'ai également essayer de faire afficher texte et le résultat était si par exemple dans verifpseudo.php "dddd" vaut 1 tandis que dans la page inscription il me me met qua ca vaut 2.

  7. #7
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par babou54
    marche toujours pô!
    T'as dû loupé mon dernier post
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  8. #8
    Membre du Club Avatar de babou54
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 137
    Points : 57
    Points
    57
    Par défaut
    Nan j'ai pas louper

  9. #9
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par babou54
    Nan j'ai pas louper
    Ah m****

    Bon ben recolle ton code tel qu'il est après ces modifs, qu'on redécortique ...

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  10. #10
    Membre du Club Avatar de babou54
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 137
    Points : 57
    Points
    57
    Par défaut
    ok redecorticons

    alors le php :

    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
     
    <?php require_once('../../Connections/Connexionlibest.php'); ?>
    <?php
    if (!function_exists("GetSQLValueString")) {
    function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
    {
      $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
     
      $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
     
      switch ($theType) {
        case "text":
          $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
          break;    
        case "long":
        case "int":
          $theValue = ($theValue != "") ? intval($theValue) : "NULL";
          break;
        case "double":
          $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
          break;
        case "date":
          $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
          break;
        case "defined":
          $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
          break;
      }
      return $theValue;
    }
    }
     
    $Vlog_login = "aaaa";
    if (isset($_GET['login22'])) {
      $Vlog_login = (get_magic_quotes_gpc()) ? $_GET['login22'] : addslashes($_GET['login22']);
    }
    mysql_select_db($database_Connexionlibest, $Connexionlibest);
    $query_login = sprintf("SELECT * FROM annonceur WHERE annonceur.login=%s", GetSQLValueString($Vlog_login, "text"));
    $login = mysql_query($query_login, $Connexionlibest) or die(mysql_error());
    $row_login = mysql_fetch_assoc($login);
    $totalRows_login = mysql_num_rows($login);
     
    if($totalRows_login !=0) {echo(1);} else {echo(2);}
     
    ?>
    <?php
    mysql_free_result($login);
    ?>
    l'ajax :

    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
    41
    42
    43
     
     
    function writediv(texte)
         {
         document.getElementById('pseudobox').innerHTML = texte;
         }
     
    function verifPseudo(pseudo)
         {
         if(pseudo != '')
                   {
                   if(pseudo.length<4)
                             writediv('<span style="color:#cc0000; font-size:8pt"><b>'+pseudo+' :</b> ce pseudo est trop court</span>');
                   else if(pseudo.length>30)
                             writediv('<span style="color:#cc0000; font-size:8pt"><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; font-size:8pt"><b>'+pseudo+' :</b> ce pseudo est deja pris</span>');
     
              else if(texte == "2")
                   writediv('<span style="color:#1A7917; font-size:8pt"><b>'+pseudo+' :</b> ce pseudo est libre</span>');
     
              else
                   writediv(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);
         }
    et l'appel dans le formulaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <td><input name="login22"  type="text" class="Txtlib" maxlength="15" onKeyUp="verifPseudo(this.value)"/><div id="pseudobox"></div></td>
    Je supsonne fortement la fonction file d'être la trouble fête !

  11. #11
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Si tu es sur que PHP te renvoie la bonne valeur, mais que via Ajax ça marche pas, mets un alert() pour vérifier qu'Ajax appelle bien l'url de la manière attendue ...
    Sinon ... je sèche

    A+
    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  12. #12
    Membre du Club Avatar de babou54
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 137
    Points : 57
    Points
    57
    Par défaut
    j'ai pas compris jle met ou le alert ?

  13. #13
    Membre du Club Avatar de babou54
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 137
    Points : 57
    Points
    57
    Par défaut
    nan c'est bon j'ai compris en faite !
    ba, le truc me renvoi 2 au lieu de 1

  14. #14
    Membre du Club Avatar de babou54
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 137
    Points : 57
    Points
    57
    Par défaut
    Ah oui et j'ai une question
    Pouarquoi on met ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    texte = file('verifpseudo.php?pseudo='+escape(pseudo))
    alors que dans la page php on utilise jamais pseudo.
    et mon navigateur me dit que texte et indefinit a cet endroit la
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     if(texte == 1)
                   writediv('<span style="color:#cc0000; font-size:8pt"><b>'+pseudo+' :</b> ce pseudo est deja pris</span>');
    voila si ca peut t'empecher de secher

  15. #15
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Citation Envoyé par babou54
    alors que dans la page php on utilise jamais pseudo.
    Quand on récupère un script, y a qq adaptations à faire.
    Renomme ton "pseudo" en "login22" dans l'url !

    Pour tout savoir sur l'utilisation du forum

    En postant votre message, n'oubliez pas les Règles du Club.

  16. #16
    Membre du Club Avatar de babou54
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    137
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 137
    Points : 57
    Points
    57
    Par défaut
    ah! vi c'était ca ! merci

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

Discussions similaires

  1. [AJAX] Verification formulaire automatique
    Par foester dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/08/2007, 11h13
  2. [AJAX] récupération automatique des liens
    Par 2kerhs dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 24/01/2007, 16h51
  3. [AJAX] Update automatique de champs tableau
    Par cic_flo dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 23/10/2006, 16h59
  4. [AJAX] saisie automatique en rapport avec des données mysql
    Par redwire dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 01/10/2006, 11h45
  5. Verification automatique du disque au démarage
    Par yoyopi dans le forum Composants
    Réponses: 5
    Dernier message: 17/02/2006, 12h14

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