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 :

Système de mentor


Sujet :

PHP & Base de données

  1. #1
    Nouveau Candidat au Club
    Système de mentor
    Bonjour chers tous,
    je suis entrain de faire un système d’affiliation en php et tout se passe pour le moment bien. Cependant je rencontre un souci.
    Avant l'inscription et l'insertion dans une base de données, je veux vérifier si le nouveau utilisateur est mentor ou protégé (parrain / filleul) si on veut.
    Je ne sais pas si je dois utiliser la meme table 'connecté' de ma bdd ou en créer une nouvelle.

    s'il y a un tuto sur le système de parrainage merci de le donner afin que je puisse m'inspirer du principe étant donné la similitude de mon travail.
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    $connecte = Mentor;
    si $connecte est inferieur à 1 alors il est protégé on affiche message
    sinon si $connecte est egal à 1 alors il est mentor et devient membre

    voila un peu la logique mais le mentor ne doit pas avoir plus de 2 protégés.
    J'espère avoir été explicite dans mes propos.
    Merci de votre aide

  2. #2
    Modératrice

    Je suppose que ta table connecté correspond aux informations d'un utilisateur.
    Un mentor peut avoir plusieurs protégés, mais un protégé n'a qu'un seul mentor ? Ajoute une colonne id_mentor dans ta table connecte et fait la pointer avec la colonne id.
    Si la colonne id_mentor est renseigné, l'utilisateur est un protégé.
    Si il existe une autre ligne dans la table qui a l'id de l'utilisateur comme id_mentor, alors c'est un mentor.

    Exemple :
    id	| nom	| id_mentor
    1	| Léo	| 
    2	| Paul	| 1
    3	| Jean	| 2
    4	| Lucie	| 1
    5	| Fiona	| 3
    6	| Anna	| 
    Dans ce cas :
    • Léo est le mentor de Paul et Lucie, et il n'est le protégé de personne.
    • Paul est le mentor de Jean et le protégé de Léo
    • Jean est le mentor de Fiona et le protégé de Paul
    • Lucie est la protégée de Léo
    • Fiona est la protégé de Jean
    • Anna n'a ni mentor ni protégé
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Nouveau Candidat au Club
    Citation Envoyé par Celira Voir le message
    Je suppose que ta table connecté correspond aux informations d'un utilisateur.
    Un mentor peut avoir plusieurs protégés, mais un protégé n'a qu'un seul mentor ? Ajoute une colonne id_mentor dans ta table connecte et fait la pointer avec la colonne id.
    Si la colonne id_mentor est renseigné, l'utilisateur est un protégé.
    Si il existe une autre ligne dans la table qui a l'id de l'utilisateur comme id_mentor, alors c'est un mentor.

    Exemple :
    id	| nom	| id_mentor
    1	| Léo	| 
    2	| Paul	| 1
    3	| Jean	| 2
    4	| Lucie	| 1
    5	| Fiona	| 3
    6	| Anna	| 
    Dans ce cas :
    • Léo est le mentor de Paul et Lucie, et il n'est le protégé de personne.
    • Paul est le mentor de Jean et le protégé de Léo
    • Jean est le mentor de Fiona et le protégé de Paul
    • Lucie est la protégée de Léo
    • Fiona est la protégé de Jean
    • Anna n'a ni mentor ni protégé
    Bonjour Celira,
    je tente le coup et je reviens pour dire si cela marche merci pour ton aide.

  4. #4
    Nouveau Candidat au Club
    Bonjour chers tous,
    merci Celira pour ton aide cela m'a été utile mais je rencontre un problème dans ma condition avant l'enregistrement.
    Je ne sais pas si ma requête est bien faite et aussi si mes conditions sont bonnes.
    Je poste le code pour que vous compreniez mieux mon blocage, et merci d'avance pour le temps que vous me consacrer.
    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
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
     
    // Si le formulaire a été soumis
      if (isset($_POST['register']))
      {
        // Si tous les champs ont été remplis
        if (not_empty(['pseudo', 'email', 'password', 'password_confirm']))
        {
          $errors = [];
          extract($_POST);
     
          if (mb_strlen ($pseudo) < 3)
          {
            $errors[] ='Votre pseudo est trop court';
          }
     
          if (!filter_var($email, FILTER_VALIDATE_EMAIL))
          {
            $errors[] ='Votre adresse mail est invalide.';
          }
     
          if (mb_strlen ($password) < 6)
          {
            $errors[] ='Votre mot de passe est trop court. (Au moins 6 caractères.)';
          }
          else
          {
            if ($password != $password_confirm)
            {
              $errors[] ='Vos mots de passes sont différents';
            }
          }
     
          if (is_already_in_use('pseudo', $pseudo, 'users')) 
          {
            $errors[] ='Ce Pseudo est déjà utilisé. Veuillez en choisir un autre.';
          }
     
     
          // je recupère les infos dans les deux tables pour verifier le Mentor
     
          $q = $db->prepare("SELECT users.name, filleul.pseudo FROM users, filleul
                            WHERE users.name = filleul.users_name ORDER BY users_name DESC
                            LIMIT 0, 2");
          $req_filleul->execute(array($name));
          $filleul_exist = $req_filleul->rowCount();
     
          if ($filleul_exist == 0)
          {
            J'enregistre le traitement dans la bdd et envoi un message de niveau 1 (membre)
          }
          else ($filleul_exist == 1)
          {
            J'enregistre le traitement dans la bdd et envoi un message de niveau 2 (coach)
          }
          else ($filleul_exist == 2)
          {
     
            J'enregistre le traitement dans la bdd et envoi un message de niveau 3 (Mentor)
     
          }elseif ($filleul_exist  > 2) {
     
            J'enregistre le traitement dans la bdd
            Envoi de message, devenez mentor. Votre mentor a atteint sa limite.
     
          } 
     
     
     
          if (is_already_in_use('email', $email, 'users'))
          {
            $errors[] ='Cet email est déjà utilisé. Veuillez en choisir un autre.';
          }
            if (count($errors) == 0)
              {
                // Envoi de mail de validation
                $to = $email;
                $subject = WEBSITE_NAME.' - Activation de votre compte.';
                $password = bcrypt_hash_password($password);
                $token = sha1($pseudo.$email.$password);
     
                ob_start();
                include('template/email/activation.tmpl.php');
                $content = ob_get_clean();
     
                $headers = 'MIME-Version: 1.0' .'\r\n';
                $headers .= 'Content-type: text/html; charset=iso-8859-1' .'\r\n';
     
                mail($to, $subject, $content, $headers);
     
                // Envoie d'un message pour confirmer l'envoi du mail d'Activation
                set_flash("Un mail d'activation vient de vous être envoyé.", 'success');
     
                $q = $db->prepare('INSERT INTO users (name, pseudo, email, password)
                                    VALUES(:name, :pseudo, :email, :password)');
                $q->execute([
                              'name'=> $name,
                              'pseudo'=> $pseudo,
                              'email'=> $email,
                              'password'=> $password
                            ]);
     
                $q = $db->prepare('INSERT INTO filleul (pseudo, users_name)
                                                VALUES(:pseudo, :users_name)');
                $q->execute([
                            'pseudo'=> $pseudo,
                            'users_name'=> $name
                          ]);
            redirect ('index.php');
     
              }
              else {
                  save_input_data();
                }
              }
              else
              {
     
                $errors [] ='Veuillez remplir tous les champs svp.';
                save_input_data();
              }
            }
     
            else
            {
              clear_input_data();
            }


    Excusez pour la longueur du code