Résolu Problème avec une condition en PHP

Gueckoz SEC

Assistant
Inscription
27 Janvier 2012
Messages
8 117
Réactions
2 948
Points
29 370
Bonsoir à vous,

Je sais que je trouverais surement pas ma réponse directement à l'heure actuelle mais c'est pas grave.

Je suis entrain d'apprendre les bases de PHP et je viens justement les mettre en pratique pour pouvoir m'améliorer par la suite.

Je commence par créer déjà un espace membre mais je me heurte à un soucis.

Qui est ceci :

On peut voir dans le screen que le 1e rectangle numéroté 1, je prépare une requête ainsi qu'une condition pour vérifier que l'adresse email existe déjà.

Ensuite, dans le 2eme rectangle numéroté 2, j'affiche l'erreur si le mail existe.

Hors le soucis c'est que ça me fait une error syntaxe de ce genre : mon problème doit venir de ma condition que j'ai rajouté qui indique que l'email existe déjà.

Mais ai-je l'ai mal placé ou j'ai oublié un truc ? Car pourtant je pense l'avoir bien mis au bon endroit...

J'avait réussi à ne pas avoir l'error syntaxe en le mettant la : mais la condition ne fonctionnait pas malgré le fait d'avoir mis un email déjà valide...

Alors désolé si le code a l'air d'être un peu mal organisé, j'arrangerai tout ça par la suite car je viens d'apprendre les bases de PHP et j'essaye de les mettre en pratique. ^^

Merci d'avance à ceux qui m'aideront à résoudre ce problème qui a l'air tout con d'ailleurs ! :xD:
 

Gueckoz SEC

Assistant
Inscription
27 Janvier 2012
Messages
8 117
Réactions
2 948
Points
29 370
Voici le code :


Code:
    else
                    {
                        $erreur ="Adresse mail déjà utilisé !";
                    }
                  }
                  else
                  {
                      $erreur = "Votre adresse mail n'est pas valide !";
                  }

C'est de la ligne 44 (la ou y'a mon problème) jusqu'à la ligne 52 (la ou y'a eu la fermeture d'une {}. ^^
 

HaXGamiG

Développeurs
Premium
Inscription
12 Mai 2014
Messages
1 470
Réactions
323
Points
14 896
Voici le code :


Code:
    else
                    {
                        $erreur ="Adresse mail déjà utilisé !";
                    }
                  }
                  else
                  {
                      $erreur = "Votre adresse mail n'est pas valide !";
                  }

C'est de la ligne 44 (la ou y'a mon problème) jusqu'à la ligne 52 (la ou y'a eu la fermeture d'une {}. ^^
Tu a pas fermer ton if avant le else ^^

Code:
    }else
                    {
                        $erreur ="Adresse mail déjà utilisé !";
                    }
                  }
                  else
                  {
                      $erreur = "Votre adresse mail n'est pas valide !";
                  }
Essaye comme ça sa devrais fonctionnez ^^
 

HaXGamiG

Développeurs
Premium
Inscription
12 Mai 2014
Messages
1 470
Réactions
323
Points
14 896
Tu penses ?

Car regarde bien :

Du coup ça me provoque une aute erreur mais à la ligne 65 :
Je vois que ça mais je t'avoue que je suis pas 100% sur j'ai du mal a comprendre ton code avec des screens ^^
 

Gueckoz SEC

Assistant
Inscription
27 Janvier 2012
Messages
8 117
Réactions
2 948
Points
29 370
Je vois que ça mais je t'avoue que je suis pas 100% sur j'ai du mal a comprendre ton code avec des screens ^^

J'te comprends, avec tous ces else et les {} on s'y perd vite :xD:

Veux-tu que je t'envoie le fichier source comme ça tu pourras vérifier les différents problèmes ?

A mon avis j'ai peut-être mal géré l’ouverture/fermeture des {}. ^^
 

HaXGamiG

Développeurs
Premium
Inscription
12 Mai 2014
Messages
1 470
Réactions
323
Points
14 896
J'te comprends, avec tous ces else et les {} on s'y perd vite :xD:

Veux-tu que je t'envoie le fichier source comme ça tu pourras vérifier les différents problèmes ?

A mon avis j'ai peut-être mal géré l’ouverture/fermeture des {}. ^^
Envois simplement le php dans un mp et je vérif tout ça et je te renvois le code en essayant de t'expliquer les erreur :)
 

Gueckoz SEC

Assistant
Inscription
27 Janvier 2012
Messages
8 117
Réactions
2 948
Points
29 370
Ligne 38-39 tu fermes deux fois le if($mdp == $mdp2) donc cela va fermer le if ($mailexist)

Ah merci, cependant je me retrouve avec un autre hic, je n'ai plus l'erreur syntaxe mais déjà quand je rentre sur le site de l'inscription, j'ai directement en bas "il y'a des champs qui sont vides..." qui apparaît alors qu'avant non. :/

Ensuite, quand je remplis le formulaire avec le mail qui existe déjà pour vérifier que ma condition fonctionne bien, il me met que les mots de passe ne correspondent pas alors qu'il sont identiques et pas le truc du mail existant. :o

Voila le code que @HaX GamiG RS m'a fait en MP.


Le code est un peu un casse-tête j'avoue mais c'est bizarre que ce problème me le fasse alors que j'ai bien suivi l'ouverture/fermeture de {} sur une vidéo d'un mec. :(
 

Whyouuu

Ancien staff
Inscription
27 Septembre 2012
Messages
16 783
Réactions
7 251
Points
24 155
Ah merci, cependant je me retrouve avec un autre hic, je n'ai plus l'erreur syntaxe mais déjà quand je rentre sur le site de l'inscription, j'ai directement en bas "il y'a des champs qui sont vides..." qui apparaît alors qu'avant non. :/

Ensuite, quand je remplis le formulaire avec le mail qui existe déjà pour vérifier que ma condition fonctionne bien, il me met que les mots de passe ne correspondent pas alors qu'il sont identiques et pas le truc du mail existant. :o

Voila le code que @HaX GamiG RS m'a fait en MP.


Le code est un peu un casse-tête j'avoue mais c'est bizarre que ce problème me le fasse alors que j'ai bien suivi l'ouverture/fermeture de {} sur une vidéo d'un mec. :(
Envoie le code ici ça sera plus facile pour t'aider non ? ^^
 

Gueckoz SEC

Assistant
Inscription
27 Janvier 2012
Messages
8 117
Réactions
2 948
Points
29 370
Envoie le code ici ça sera plus facile pour t'aider non ? ^^

Oui désolé, tiens :

PHP:
<?php
   
$bdd = new pdo('mysql:host=localhost;dbname=espace_membre', 'root','');

if(isset($_POST['forminscription'])){
    $pseudo = htmlspecialchars($_POST['pseudo']);
    $mail = htmlspecialchars($_POST['mail']);
    $mail2 = htmlspecialchars($_POST['mail2']);
    $mdp = sha1($_POST['mdp']);
    $mdp2 = sha1($_POST['mdp2']);
    if(!empty($_POST["pseudo"]) AND !empty($_POST["mail"]) AND !empty($_POST["mail2"]) AND !empty($_POST["mdp"]) AND !empty($_POST["mdp2"])){
        $pseudolength = strlen($pseudo);
        if ($pseudolength <= 12){
            if ($mail == $mail2){
                if(filter_var($mail, FILTER_VALIDATE_EMAIL)){
                    /* Nous allons préparer la requête pour inscrire notre membre dans la Base de Données */
                    $reqmail=$bdd->prepare("SELECT * FROM membres WHERE mail = ?");
                    $reqmail->execute(array($mail));
                    $mailexist = $reqmail->rowCount(); //Nous allons savoir si le mail du membre existe déjà ou pas !
                    if($mailexist == 0){
                        if ($mdp ==$mdp2){
                            /* Si tous les critères sont remplis, nous créeons une session et l'utilisateur est inscrit dans la Base de Données */
                            $insertmbr = $bdd->prepare("INSERT INTO membres(pseudo, mail, motdepasse) VALUES(?, ?, ?)");
                            $insertmbr->execute (array($pseudo, $mail, $mdp));
                            $_SESSION['comptecree'] = "Votre compte a bien été créé. Bienvenue sur le site !";
                            header('location: portail.php');
                        }
                    }else{
                        $erreur = "Vos mot de passes ne se correspondent pas ! Veuillez recommencez.";
                    }
                }else{
                    $erreur ="Adresse mail déjà utilisé !";
                }
            }else{
                $erreur = "Votre adresse mail n'est pas valide !";
            }
        }else{
            $erreur = "Vos mails ne se correspondent pas !";
        }
    }else {
        $erreur = "Votre pseudo dépasse les 12 caractères !";
    }
    }else{
        $erreur = "Il y'a des champs qui sont vides, veuillez tous les compléter ! ";
   
}

?>
 

Kévin 🚀

Administrateur
Administrateur
Inscription
18 Décembre 2012
Messages
4 822
Réactions
5 533
Points
27 882
Oui désolé, tiens :

PHP:
<?php
  
$bdd = new pdo('mysql:host=localhost;dbname=espace_membre', 'root','');

if(isset($_POST['forminscription'])){
    $pseudo = htmlspecialchars($_POST['pseudo']);
    $mail = htmlspecialchars($_POST['mail']);
    $mail2 = htmlspecialchars($_POST['mail2']);
    $mdp = sha1($_POST['mdp']);
    $mdp2 = sha1($_POST['mdp2']);
    if(!empty($_POST["pseudo"]) AND !empty($_POST["mail"]) AND !empty($_POST["mail2"]) AND !empty($_POST["mdp"]) AND !empty($_POST["mdp2"])){
        $pseudolength = strlen($pseudo);
        if ($pseudolength <= 12){
            if ($mail == $mail2){
                if(filter_var($mail, FILTER_VALIDATE_EMAIL)){
                    /* Nous allons préparer la requête pour inscrire notre membre dans la Base de Données */
                    $reqmail=$bdd->prepare("SELECT * FROM membres WHERE mail = ?");
                    $reqmail->execute(array($mail));
                    $mailexist = $reqmail->rowCount(); //Nous allons savoir si le mail du membre existe déjà ou pas !
                    if($mailexist == 0){
                        if ($mdp ==$mdp2){
                            /* Si tous les critères sont remplis, nous créeons une session et l'utilisateur est inscrit dans la Base de Données */
                            $insertmbr = $bdd->prepare("INSERT INTO membres(pseudo, mail, motdepasse) VALUES(?, ?, ?)");
                            $insertmbr->execute (array($pseudo, $mail, $mdp));
                            $_SESSION['comptecree'] = "Votre compte a bien été créé. Bienvenue sur le site !";
                            header('location: portail.php');
                        }
                    }else{
                        $erreur = "Vos mot de passes ne se correspondent pas ! Veuillez recommencez.";
                    }
                }else{
                    $erreur ="Adresse mail déjà utilisé !";
                }
            }else{
                $erreur = "Votre adresse mail n'est pas valide !";
            }
        }else{
            $erreur = "Vos mails ne se correspondent pas !";
        }
    }else {
        $erreur = "Votre pseudo dépasse les 12 caractères !";
    }
    }else{
        $erreur = "Il y'a des champs qui sont vides, veuillez tous les compléter ! ";
  
}

?>
Hey
PHP:
if(isset($_POST['forminscription'])){

    //Variables
    $pseudo = htmlspecialchars($_POST['pseudo']);
    $mail   = htmlspecialchars($_POST['mail']);
    $mail2  = htmlspecialchars($_POST['mail2']);
    $mdp    = sha1($_POST['mdp']);
    $mdp2   = sha1($_POST['mdp2']);

    if(!empty($_POST["pseudo"]) AND !empty($_POST["mail"]) AND !empty($_POST["mail2"]) AND !empty($_POST["mdp"]) AND !empty($_POST["mdp2"])){

        $pseudolength = strlen($pseudo);

        if ($pseudolength <= 12){

            if ($mail == $mail2){

                if(filter_var($mail, FILTER_VALIDATE_EMAIL)){

                    /* Nous allons préparer la requête pour inscrire notre membre dans la Base de Données */
                    $reqmail=$bdd->prepare("SELECT * FROM membres WHERE mail = ?");
                    $reqmail->execute(array($mail));
                    $mailexist = $reqmail->rowCount(); //Nous allons savoir si le mail du membre existe déjà ou pas !
                    if($mailexist == 0){

                        if ($mdp == $mdp2){
                            /* Si tous les critères sont remplis, nous créeons une session et l'utilisateur est inscrit dans la Base de Données */
                            $insertmbr = $bdd->prepare("INSERT INTO membres(pseudo, mail, motdepasse) VALUES(?, ?, ?)");
                            $insertmbr->execute (array($pseudo, $mail, $mdp));
                            $_SESSION['comptecree'] = "Votre compte a bien été créé. Bienvenue sur le site !";
                            header('location: portail.php');
                        }else{
                            $erreur = "Vos mot de passes ne se correspondent pas ! Veuillez recommencez.";
                        }

                    }else{
                        $erreur ="Adresse mail déjà utilisé !";
                    }
                }else{
                    $erreur = "Votre adresse mail n'est pas valide !";
                }
            }else{
                $erreur = "Vos mails ne se correspondent pas !";
            }
        }else{
            $erreur = "Votre pseudo dépasse les 12 caractères !";
        }
    }else{
           $erreur = "Il y'a des champs qui sont vides, veuillez tous les compléter ! ";
    }
}
Tu avais décalé tes else d'un rang donc les messages n'étaient pas dans les bonnes conditions ;)
 

Gueckoz SEC

Assistant
Inscription
27 Janvier 2012
Messages
8 117
Réactions
2 948
Points
29 370
Hey
PHP:
if(isset($_POST['forminscription'])){

    //Variables
    $pseudo = htmlspecialchars($_POST['pseudo']);
    $mail   = htmlspecialchars($_POST['mail']);
    $mail2  = htmlspecialchars($_POST['mail2']);
    $mdp    = sha1($_POST['mdp']);
    $mdp2   = sha1($_POST['mdp2']);

    if(!empty($_POST["pseudo"]) AND !empty($_POST["mail"]) AND !empty($_POST["mail2"]) AND !empty($_POST["mdp"]) AND !empty($_POST["mdp2"])){

        $pseudolength = strlen($pseudo);

        if ($pseudolength <= 12){

            if ($mail == $mail2){

                if(filter_var($mail, FILTER_VALIDATE_EMAIL)){

                    /* Nous allons préparer la requête pour inscrire notre membre dans la Base de Données */
                    $reqmail=$bdd->prepare("SELECT * FROM membres WHERE mail = ?");
                    $reqmail->execute(array($mail));
                    $mailexist = $reqmail->rowCount(); //Nous allons savoir si le mail du membre existe déjà ou pas !
                    if($mailexist == 0){

                        if ($mdp == $mdp2){
                            /* Si tous les critères sont remplis, nous créeons une session et l'utilisateur est inscrit dans la Base de Données */
                            $insertmbr = $bdd->prepare("INSERT INTO membres(pseudo, mail, motdepasse) VALUES(?, ?, ?)");
                            $insertmbr->execute (array($pseudo, $mail, $mdp));
                            $_SESSION['comptecree'] = "Votre compte a bien été créé. Bienvenue sur le site !";
                            header('location: portail.php');
                        }else{
                            $erreur = "Vos mot de passes ne se correspondent pas ! Veuillez recommencez.";
                        }

                    }else{
                        $erreur ="Adresse mail déjà utilisé !";
                    }
                }else{
                    $erreur = "Votre adresse mail n'est pas valide !";
                }
            }else{
                $erreur = "Vos mails ne se correspondent pas !";
            }
        }else{
            $erreur = "Votre pseudo dépasse les 12 caractères !";
        }
    }else{
           $erreur = "Il y'a des champs qui sont vides, veuillez tous les compléter ! ";
    }
}
Tu avais décalé tes else d'un rang donc les messages n'étaient pas dans les bonnes conditions ;)

Merci, ça fonctionne cependant j'ai une autre erreur maintenant (encore oui...)

Ca me fait ça :

Et voila le code à partir de la ligne 22 :

PHP:
 $reqmail=$bdd->prepare("SELECT * FROM membres WHERE mail = ?");
                    $reqmail->execute(array($mail));
                    $mailexist = $reqmail->rowCount(); //Nous allons savoir si le mail du membre existe déjà ou pas !
                    if($mailexist == 0){

:'(
 

Kévin 🚀

Administrateur
Administrateur
Inscription
18 Décembre 2012
Messages
4 822
Réactions
5 533
Points
27 882
Merci, ça fonctionne cependant j'ai une autre erreur maintenant (encore oui...)

Ca me fait ça :

Et voila le code à partir de la ligne 22 :

PHP:
 $reqmail=$bdd->prepare("SELECT * FROM membres WHERE mail = ?");
                    $reqmail->execute(array($mail));
                    $mailexist = $reqmail->rowCount(); //Nous allons savoir si le mail du membre existe déjà ou pas !
                    if($mailexist == 0){

:'(
Tu as pas supprimé la ligne qui se connecte à la bdd ?
 
Cette réponse a aidé l'auteur de cette discussion !
Haut