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 :

AJAX Register


Sujet :

PHP & Base de données

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

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2017
    Messages : 78
    Points : 36
    Points
    36
    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
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    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
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 405
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 405
    Points : 4 841
    Points
    4 841
    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"
     
                );

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

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Novembre 2017
    Messages : 78
    Points : 36
    Points
    36
    Par défaut
    Salut ! désolé pour la réponse tardive, c'était les vacances....

    Merci pour ta réponse, je ne connaissais pas les promesses, je viens de regarder quelques vidéos sur le sujet, intéressant, mais j'ai vraiment du mal à voir comment je peux utiliser les promesses pour ça...

    Des pistes à me donner ?

    Merci d'avance!

  5. #5
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 405
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 405
    Points : 4 841
    Points
    4 841
    Par défaut
    Salut,

    As-tu testé ce que je t'ai proposé dans ma réponse ?

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