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

jQuery Discussion :

Validation-engine / rêquete sql pour disponibilité pseudo [AJAX]


Sujet :

jQuery

  1. #1
    Candidat au Club
    Homme Profil pro
    étudiant
    Inscrit en
    Novembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Validation-engine / rêquete sql pour disponibilité pseudo
    Bonjour J'ai actuellement un script qui test la disponibilité d'un pseudo indiqué et j'aimerais maintenant pouvoir afficher le message d'erreur du type validation-engine lorsque le pseudo est déja pris.
    Pourriez-vous m'aider.Merci d'avance

    inscription.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
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
     
    <?php
    include 'config.php'; //Mon fichier contenant la connexion a la bdd
    ?>
    <!DOCTYPE html>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Inscription</title>
    <link href="style.css" rel="stylesheet"/>
    	<link rel="stylesheet" href="erreur/css/validationEngine.jquery.css" type="text/css"/>
        <script type="text/javascript" src="oXHR.js"></script>
    	<script src="erreur/js/jquery-1.8.2.min.js" type="text/javascript">
    	</script>
    	<script src="erreur/js/languages/jquery.validationEngine-en.js" type="text/javascript" charset="utf-8">
    	</script>
    	<script src="erreur/js/jquery.validationEngine.js" type="text/javascript" charset="utf-8">
    	</script>
    <script>
    		jQuery(document).ready(function(){
    			// binds form submission and fields to the validation engine
    			jQuery("#inscription").validationEngine();
    		});
    </script>
    <?php
    if (isset($msg))
    {
            echo $msg;      
    }
    ?>
    <div class="pageb">
    <center>
    <form method="post" id="inscription">
    <br>
    <h3 style="color: #a55a46;font-family: Impact">Inscription</h3>
    <br>
    <label for="pseudo">Pseudo</label><br><input type="text" name="pseudo" id="pseudo" class="validate[required, custom[onlyLetterNumber], funcCall[pseudo]]" data-errormessage-value-missing="Ce champs est requis!" data-errormessage-custom-error="Le pseudo ne peut contenir d'espace"/><br/><br/>
    <label for="passe">Mot de passe</label><br><input type="password" name="passe" id="passe" class="validate[required, minSize[6], custom[onlyLetterNumber]]" data-errormessage-value-missing="Ce champs est requis!" data-errormessage-range-underflow="Le mot de passe doit contenir au moins 6 caractères" data-errormessage-custom-error="Le mot de passe ne peut contenir d'espace"/><br/><br/>
    <label for="passe2">Confirmation du mot de passe</label><br><input type="password" name="passe2" id="passe2" class="validate[required, equals[passe]]" data-errormessage-value-missing="Ce champs est requis!" data-errormessage-pattern-mismatch="Les mots de passes ne correspondent pas."/><br/><br/>
    <label for="email">Adresse e-mail</label><br><input type="email" name="email" id="email" class="validate[required,custom[email]]" data-errormessage-value-missing="Ce champs est requis!" data-errormessage-custom-error="L'adresse doit être de la forme : mail@mail.fr(com)" /><br/><br/>
    <label for="telephone">Téléphone (facultatif)</label><br><input type="tel" name="telephone" id="telephone" class="validate[required, custom[phone]]" data-errormessage-value-missing="Ce champs est requis!" data-errormessage-custom-error="Le numéro de télephone doit être en chiffres"/><br/><br>
    <a href="CGU.pdf" target="_blank">
    <input class="btn btn-primary btn-lg" value="C.G.U">
    </a>
    <br>
    <br>
    J'ai lu et m'engage à respecter les C.G.U (conditions générales d'utilisation) <input type="checkbox" name="lu" id="lu" class="validate[required]" data-errormessage-value-missing="Vous devez lire puis acceptez les C.G.U pour vous inscrire!">
    <br>
    <br>
    <button type="submit" id="inscription" value="envoyer" name="inscription" class="btn btn-success">
    <span class="glyphicon glyphicon-ok"></span>
    M'inscrire
    </button>
    <br>
    <br>
    </form>
    </center>
    </div>
    <script>
    function pseudo(field, rules, i, options){
     
        var xhr = getXMLHttpRequest(); // déclare xhr via le fichier joint (oXHR.js)
     
        xhr.onreadystatechange = function() { // si xhr change d'état (transmis / en cours / finis)
                    // vérifie si la demande d'envoi et effectuer (donnée récupérer) / ou aucune réponse
            if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 0)) {
                if(xhr.responseText = "Ce pseudo est indisponible") // récupère les données "text" (peut être via xml) et les envois à readData
    			{
    				alert(xhr.responseText);
    			}
    			else if(xhf.responseText = "Ce pseudo est disponible")
    			{
    			 alert(xhr.responseText);
    			}
    			else
    			{
     
    			}
            }
        };
     
            // encode le texte pour l'envoyer via l'url
        var nick = encodeURIComponent(document.getElementById("pseudo").value);
        var name = encodeURIComponent(document.getElementById("passe").value);
     
            // envoie les données (get) à une page php, avec les arguments
        xhr.open("GET", "verifpseudo.php?Nick=" + nick + "&Name=" + name, true);
        xhr.send(null);
    }
    </script>
    et verifpseudo.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
     
    <?php
    include 'config.php';
    header("Content-Type: text/plain");
    $pseudo = (isset($_GET["pseudo"])) ? $_GET["pseudo"] : NULL;
    if ($nick != NULL) 
    {
            $req = $bdd->query('SELECT * from validation Where pseudo = "'.$pseudo.'"');
            $result = $req->fetch();
            if($result != NULL)
            {
            echo "Ce pseudo est indisponible";
            }
            else
            {
                    echo "Ce pseudo est disponible";        
            }
    } 
    else 
    {
    }
    ?>

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonjour,
    première chose pourquoi, lorsque l'on utilise jQuery, ne pas utiliser $.ajax?

    Concernant la réponse renvoyé il te faudrait faire la différence entre un status OK et un status NOK, tu pourrais retourner un objet jSon contenant un status et un message.

    Quelque chose du style
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if($result != NULL){
      $mess = "Ce pseudo est indisponible";
      $statut = "NOK";
    }
    else{
      $mess = "Ce pseudo est disponible";	
      $statut = "OK";
    }
    echo json_encode(array("statut" => $statut, "message" => $mess));
    il ne te restera plus qu'à gérer cela dans le success.

  3. #3
    Candidat au Club
    Homme Profil pro
    étudiant
    Inscrit en
    Novembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Bonjour merci pour votre réponse, Je débute tout juste en ajax donc j'aimerais avoir si possible plus de précision.

    Comment devrais-je m'y prendre pour récuperer le $mess et le $statut ?
    Encore merci d'avance.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    function pseudo(field, rules, i, options){
    	var pseudo = field.val();
        $.ajax({
           url : 'verifpseudo.php',
           type : 'POST',
           data : 'pseudo=' + pseudo,
           success : function(msg){
    	   		//je ne sais pas comment m'y prendre
           }
        });
    }

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Il te faut préciser le type de données que tu attends en retour dataType: "json" et tu peux utiliser l'objet JSON msg comme bon te sembles.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function pseudo(field, rules, i, options){
        var pseudo = field.val();
        $.ajax({
           url : 'verifpseudo.php',
           type : 'POST',
           data : 'pseudo=' + pseudo,
           dataType: 'json',
           success : function(msg){  // msg est un objet JSON
              if( msg.statut === 'OK'){
                  // ton code si OK
              }
           }
        });
    }
    /!\ Important : dans tous les cas lors de l'inscription la vérification du pseudo est à refaire avant toutes opérations dans la base.

  5. #5
    Candidat au Club
    Homme Profil pro
    étudiant
    Inscrit en
    Novembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci encore mais le code ne marche toujours pas, j'ai fait quelques test et je pense que le problème vient de "msg.statut".Peut-être que l'erreur vient du php.
    J'ai essayé d'afficher msg.statut en alert mais il n'ouvre même pas la boîte de dialogue.
    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
     
    <?php
    include 'config.php';
    header("Content-Type: text/plain");
    $pseudo = (isset($_GET["pseudo"])) ? $_GET["pseudo"] : NULL;
    if ($pseudo != NULL) 
    {
            $req = $bdd->query('SELECT * from validation Where pseudo = "'.$pseudo.'"');
            $result = $req->fetch();
            if($result != NULL){
              $mess = "Ce pseudo est indisponible";
              $statut = "NOK";
            }
            else{
              $mess = "Ce pseudo est disponible";   
              $statut = "OK";
            }
            echo json_encode(array("statut" => $statut, "message" => $mess));
            
            } 
    else 
    {
    }
    ?>
    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
     
    function pseudo(field, rules, i, options){
        var pseudo = field.val();
        $.ajax({
           url : 'verifpseudo.php',
           type : 'POST',
           data : 'pseudo=' + pseudo,
           dataType: 'json',
           success : function(msg){  // msg est un objet JSON
    	  	alert(msg.statut);
              if( msg.statut === 'OK'){
              }
           }
        });
    }

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Observe bien ces deux lignes
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $pseudo = (isset($_GET["pseudo"])) ? $_GET["pseudo"] : NULL;
    ettu devrais trouver ce qui ne va pas

  7. #7
    Candidat au Club
    Homme Profil pro
    étudiant
    Inscrit en
    Novembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Oups
    Dernière chose: je n'arrive toujours pas à afficher le message dans l'info bulle d'erreur fournie par validation engine.
    Devrais-je faire car dans la documentation ils indiquent
    Validates a field using a third party function call. If a validation error occurs, the function must return an error message that will automatically show in the error prompt.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function checkHELLO(field, rules, i, options){
      if (field.val() != "HELLO") {
         // this allows the use of i18 for the error msgs
         return options.allrules.validate2fields.alertText;
      }
    }
    Merci

  8. #8
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    d'après la documentation il te faut effectivement faire un return -> String et String sera affichée.

    Par contre tu peux également gérer toi même l'affichage fonction du retour obtenu.

  9. #9
    Candidat au Club
    Homme Profil pro
    étudiant
    Inscrit en
    Novembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    J'ai essayé de retour un message personnaliser et même celui de la demo mais rien ne s'affiche comme si la fonction avait une erreur

  10. #10
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Il nous en faudrait plus car ...mais rien ne s'affiche.. est peu explicite, ...comme si la fonction avait une erreur... que dit ta console d’erreur ?

    Maîtriser l'indispensable extension Firebug pour Firefox.

  11. #11
    Candidat au Club
    Homme Profil pro
    étudiant
    Inscrit en
    Novembre 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci j'ai trouver la solution . J'ai créer une variable message au tout début de la fonction puis selon la réponse de la page php je lui affecte un message différent.
    Ensuite je ferme la fonction ajax et je return le message.
    Merci beaucoup

  12. #12
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Un peu comme écrit
    Citation Envoyé par NoSmoking
    d'après la documentation il te faut effectivement faire un return -> String et String sera affichée.

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

Discussions similaires

  1. valider du sql pour mysql
    Par arm3366 dans le forum Requêtes
    Réponses: 5
    Dernier message: 09/01/2012, 15h41
  2. CODE RETOUR GENERE PAR PL/SQL POUR SHELL UNIX
    Par mimi_été dans le forum PL/SQL
    Réponses: 6
    Dernier message: 18/11/2004, 08h32
  3. mot clef sql pour nom de champ
    Par bobinou007 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 12/10/2004, 13h21
  4. [ODBC] erreur SQL pour les unions qui renvoient vide
    Par fabriceMerc dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 25/11/2003, 11h06
  5. configurer sql pour envoyer des mails
    Par arwen dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 29/07/2003, 15h28

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