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

Discussion: AJAX Register

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    novembre 2017
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : novembre 2017
    Messages : 49
    Points : 25
    Points
    25

    Par défaut AJAX Register

    Bonjour à tous.... je ne savais pas trop si je devais poster dans cette section, mes excuses à l'avance....

    Je suis face à un problème pour ma section REGISTER, en gros:

    J'ai 2 étapes en CSS, j'ai l'identifiant en premier, quand je tape au clavier (.keyup) soit il est vide, soit il fait moins de 3 caractères, soit il est déjà dans la BDD et donc il me met un message d'erreur, si tout est bon, il n'y a aucun message d'erreur, et donc à ce moment là je peux cliquer sur le boutton Valider, l'étape une disparait, et l'étape deux apparait...

    Ce qui me pose problème par rapport à mon code, c'est que même si l'identifiant est pris, alors il passe quand même à l'étape deux... y aurait t'il quelque chose dans mon code que j'aurai oublié ?

    Cordialement.

    JQUERY:
    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
     
    $(document).ready(function(){
     
        identifiantRegister_error = true;
     
        $("#identifiantRegister").keyup(function () {
            identifiantRegister_check();
        });
     
     
     
        function identifiantRegister_check() {
            identifiantRegister = $("#identifiantRegister").val();
     
            if(identifiantRegister == "") {
                $("#error_identifiant").addClass("active-error").html("Identifiant obligatoire");
                identifiantRegister_error = false;
                return false;
            } else {
                $("#error_identifiant").removeClass("active-error").html("");
            }
     
            if(identifiantRegister.length < 3) {
                $("#error_identifiant").addClass("active-error").html("Identifiant invalide (4 caractères minimums)");
                identifiantRegister_error = false;
                return false;
            } else {
                $("#error_identifiant").removeClass("active-error").html("");
            }
     
            if(identifiantRegister != "" && identifiantRegister.length >= 3) {
                $.post(
     
                    "users/register/check_identifiant_exist.php",
                    {
                        identifiantRegister : $("#identifiantRegister").val()
                    },
     
                    function(data) {
                        if(data == "Success") {
     
                        } else {
                            $("#error_identifiant").addClass("active-error").html("Identifiant déjà pris");
                            identifiantRegister_error = false;
                            return false;
                        }
                    },
     
                    "text"
     
                );
     
            }
        }
     
        $("#btn_identifiant").click(function() {
            identifiantRegister_error = true;
     
            identifiantRegister_check();
     
            if(identifiantRegister_error == true) {
                $("#register_form #tab1").removeClass("active");
                $(".tabs-list .tab1").removeClass("active");
                $("#register_form #tab2").addClass("active");
                $(".tabs-list .tab2").addClass("active");
                $(".item2").addClass("form-steps__item--completed");
                return true;
            } else {
                return false;
            }
        });
     
        $("#previous_btn_email").click(function() {
            $("#register_form #tab2").removeClass("active");
            $(".tabs-list .tab2").removeClass("active");
            $("#register_form #tab1").addClass("active");
            $(".tabs-list .tab1").addClass("active");
            $("#error_identifiant").text("");
            $(".item2").removeClass("form-steps__item--completed");
        });
     
    });
    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
    $bdd = new PDO("mysql:host=localhost;dbname=login", "root", "");
     
     
    if(isset($_POST['identifiantRegister'])) {
     
    $identifiantRegister = $_POST["identifiantRegister"];
     
    	$req = $bdd->prepare("SELECT * FROM login WHERE username = ?");
    	$req->execute(["$identifiantRegister"]);
    	$test = $req->rowCount();
     
    	if($test > 0) {
    		echo "Failed";
    	} else {
    		echo "Success";
    	}
     
    }
     
     
    ?>

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2012
    Messages
    514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : août 2012
    Messages : 514
    Points : 906
    Points
    906

    Par défaut

    bonjour,

    PDOStatement::rowCount() retourne le nombre de lignes affectées par la dernière requête DELETE, INSERT ou UPDATE exécutée par l'objet PDOStatement correspondant.
    https://www.php.net/manual/fr/pdostatement.rowcount.php
    ton rowCout te renvoie un entier supérieur à 0. Utilise plutôt count:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $req = $bdd->prepare("SELECT count(*) FROM login WHERE username = ?");

  3. #3
    Membre expérimenté Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2012
    Messages
    959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : janvier 2012
    Messages : 959
    Points : 1 550
    Points
    1 550

    Par défaut

    Salut,

    Tu as un problème de Synchronisation avec ce code :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $("#btn_identifiant").click(function() {
            identifiantRegister_error = true;
     
            identifiantRegister_check();/*le problème est ici*/
            /* la suite du code....*/
        });

    Parce que la fonction identifiantRegister_check() lance une requête post (asynchrone), et javascript n'attendra pas la fin de son exécution , donc il passera directement aux instructions suivantes sans prendre en considération le résultat renvoyé par le fichier php.

    La solution est :
    1- Soit mettre le code dans la fonction callback de $.post .
    2- Soit utiliser les promesses.

    (Vu que la solution 2 nécessite une certaine compétence en javascript...), je te montre la solution 1.

    Code javascript : 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
     
    $.post(
              "users/register/check_identifiant_exist.php",
                    {
                        identifiantRegister : $("#identifiantRegister").val()
                    },
     
                    function(data) {
                        if(data == "Success") {
                               //instructions à exécuter en cas de succès, c'est ici que tu dois mettre la suite du code.
                               $("#register_form #tab1").removeClass("active");
                               $(".tabs-list .tab1").removeClass("active");
                               $("#register_form #tab2").addClass("active");
                               $(".tabs-list .tab2").addClass("active");
                               $(".item2").addClass("form-steps__item--completed");
                        } else {
                            //instructions à exécuter en cas d'erreur.
                        }
                    },
     
                    "text"
     
                );

Discussions similaires

  1. Manipulation de la base de registe
    Par yserver dans le forum Windows
    Réponses: 8
    Dernier message: 25/08/2004, 16h36
  2. [Débutant] Utilisation de FOP - Register Fonts with FOP
    Par Johnbob dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 31/01/2004, 00h27
  3. Variables register et auto
    Par Michaël dans le forum C
    Réponses: 17
    Dernier message: 21/08/2003, 11h09
  4. Register XMLC_LoginForm
    Par Sylvain James dans le forum XMLRAD
    Réponses: 2
    Dernier message: 22/04/2003, 19h35

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