Afficher le résultat d'une requête SQL PHP

Machopp -  
 Machopp -

Bonjour,

Je cherche à afficher le résultat d'une requête SQL qui permet de voir le nom des liste de diffusion auxquelles mon user est abonné, sur ma vue qui sert à modifier un user.

Ma requête avec pdo :

            $req = "SELECT nom FROM `mail` WHERE mail_to LIKE "%". :mail ."%"";
            $stmt = $this->getBdd()->prepare($req);
            $stmt->bindValue(":mail", $mail, PDO::PARAM_STR);
            $stmt->execute();
            $ListeDiffusion = $stmt->fetchAll(PDO::FETCH_ASSOC);
            $stmt->closeCursor();

Niveau SGBDR elle fonctionne après adapté en requête pdo je suis pas sûr mais elle devrait fonctionner.

Mon problème c'est que ce n'est pas une info qui n'est pas dans la même base du coup je peux pas faire un getListeDiffusion dans ma classe user.class.php.

Dans mon Controller j'ai ça :

public function modificationUser($id)
    {

        $user = $this->userManager->getUserById($id);
        require "views/user/updateUser.view.php";
    }

Dans mon Manager j'ai juste une fonction qui permet d'envoyer les modification de l'user dans ma base (UPDATE).

En je sais pas comment je dois m'y prendre ? Créer une fonction getListeDiffusion() ? si oui où et comment l'appeler ?

J'ai essayé de faire un fonction dans mon manager :

 public function getListeDiffusion($mail) {
        $req = "SELECT nom FROM `mail` WHERE mail_to LIKE "%". :mail ."%"";
        $stmt = $this->getBdd()->prepare($req);
        $stmt->bindValue(":mail", $mail, PDO::PARAM_STR);
        $stmt->execute();
        $ListeDiffusion = $stmt->fetchAll(PDO::FETCH_ASSOC);
        $stmt->closeCursor();

        return $ListeDiffusion;
    }

Et de l'appeler dans ma vue comme ceci :

<p><strong>Liste de diffusion :</strong> <?= UserManager::getListeDiffusion($mail); ?></p>

Mais bug d'affichage + erreurs :

Liste de diffusion :
Deprecated: Non-static method UserManager::getListeDiffusion() should not be called statically in C:\Applications\wamp64\www\portail\views\user\updateUser.view.php on line 71

Notice: Undefined variable: mail in C:\Applications\wamp64\www\portail\views\user\updateUser.view.php on line 71

Warning: A non-numeric value encountered in C:\Applications\wamp64\www\portail\models\UserManager.class.php on line 269

Warning: A non-numeric value encountered in C:\Applications\wamp64\www\portail\models\UserManager.class.php on line 269

Fatal error: Uncaught DivisionByZeroError: Modulo by zero in C:\Applications\wamp64\www\portail\models\UserManager.class.php:269 Stack trace: #0 C:\Applications\wamp64\www\portail\views\user\updateUser.view.php(71): UserManager::getListeDiffusion(NULL) #1 C:\Applications\wamp64\www\portail\controllers\UserController.controller.php(26): require('C:\\Applications...') #2 C:\Applications\wamp64\www\portail\index.php(137): UserController->modificationUser('111') #3 {main} thrown in C:\Applications\wamp64\www\portail\models\UserManager.class.php on line 269

Si quelqu'un sait comment faire,

Çà doit pas être bien compliqué à solutionner, merci d'avance pour l'aide 

4 réponses

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
     

    Bonjour,

    Déjà, certains messages d'erreurs sont assez explicits pour que tu puisse les résoudre toi même je pense.

    Ensuite, sans avoir le code complet, impossible pour nous de savoir à quoi font références les lignes d'erreurs indiquées dans les messages.

    Et encore, tu parles de deux "bases" .. alors que j'ai plutôt l'impression qu'il s'agit de deux "tables". ( et dans ce cas, ne connais tu pas les jointures  en sql ? )

    bref, Difficile également de savoir comment fonctionnement ton code. Tu utilises un framework ou c'est un "truc" codé entièrement par toi ?

    Bref, commences par nous poster le code COMPLET de tes différents fichiers.


    0
  2. Machopp
     

    Bonjour,

    En fait j'ai vu sur d'autres forum qu'il fallait éviter de mettre trop de code du coup j'ai mis le minimum.

    Et oui je parlais de table mais j'aimerais éviter de créer une clé étrangère ce n'est pas ma bdd.

    J'suis en php from scratch.

    Mon userManager là où je créer mes fonctions qui me permettent d'afficher mes infos, CRUD en bdd etc... (j'ai raccourcis le fichiers car pas besoin de voir toutes mes fonctions qui contient juste un échantillon devrait suffire : 

    <?php
    
    use LDAP\Result;
    
    require_once 'Model.class.php';
    require_once 'User.class.php';
    
    
    class UserManager extends Model
    {
        private $user; //Tableau de vdc
    
        public function ajoutUser($user)
        {
            $this->users[] = $user;
        }
    
        public function getUser()
        {
            return $this->users;
        }
    
        // Fonction qui charge tous les utilisateurs de la bdd. 
        public function chargementUsers()
        {
            $req = $this->getBdd()->prepare(
                'SELECT id, login,password, mail, admin FROM user'
            );
            $req->execute();
            $donnees = $req->fetchAll(PDO::FETCH_ASSOC);
            $req->closeCursor();
    
            if (!empty($donnees)) {
                foreach ($donnees as $donnees_users) {
                    $q = new User(
                        $donnees_users['id'],
                        $donnees_users['login'],
                        $donnees_users['password'],
                        $donnees_users['mail'],
                        $donnees_users['admin']
                    );
    
                    $this->ajoutUser($q);
                }
            } else {
                Toolbox::ajouterMessageAlerte("Echec du chargement des utilisateurs - Code erreur : #UM01", Toolbox::COULEUR_ROUGE);
                header('Location: ' . URL, "X-XSS-Protection: 1; mode=block");
            }
        }
    
        // Fonction pour un utilisateur en fonction de son id
        public function getUserById($id)
        {
            for ($i = 0; $i < count($this->users); $i++) {
                if ($this->users[$i]->getId() === $id) {
                    return $this->users[$i];
                }
            }
        }
    
        // Fonction pour cherche le mot de passe d'un utilisateur en fonction de son login
        private function getPasswordUser($login)
        {
            $req = "SELECT password FROM user WHERE login = :login";
            $stmt = $this->getBdd()->prepare($req);
            $stmt->bindValue(":login", $login, PDO::PARAM_STR);
            $stmt->execute();
            $resultat = $stmt->fetch(PDO::FETCH_ASSOC);
            $stmt->closeCursor();
    
            if ($resultat != false) {
                return $resultat['password'];
            } else {
                //à décommenter lors du passage en prod et commenter la ligne en dessous Toolbox::ajouterMessageAlerte("Echec de la requête", Toolbox::COULEUR_ROUGE);
                Toolbox::ajouterMessageAlerte("Echec de la requête - Code erreur: #UM03", Toolbox::COULEUR_ROUGE);
                header("location: " . URL, "X-XSS-Protection: 1; mode=block");
            }
        }
    
        public function isCombinaisonValide($login, $password)
        {
            $passwordBD = $this->getPasswordUser($login);
                    // Code erreur: #UM04
                    if (password_verify($password, $passwordBD)) {
                        return true;
                    } else {
                        // à décommenter lors du passage en prod et commenter la ligne en dessous Toolbox::ajouterMessageAlerte("Echec lors de la connexion", Toolbox::COULEUR_ROUGE);
                        //Toolbox::ajouterMessageAlerte("Echec de la comparaison - Code erreur: #UM04", Toolbox::COULEUR_ROUGE);
                        return false;
                    }
        
           
        }
    
    
    
        // Fonction qui ajoute un utilisateur à la bdd
        public function ajoutUserBd(
            $login,
            $password,
            $mail,
            $admin,
            $bl,
            $dist,
            $NomPrenom,
            $demandevalidation,
            $pilote,
            $rs
        ) {
    
            $login = htmlspecialchars($login, ENT_QUOTES, 'UTF-8');
            $mail = htmlspecialchars($mail, ENT_QUOTES, 'UTF-8');
            $NomPrenom = htmlspecialchars($NomPrenom, ENT_QUOTES, 'UTF-8');
            $password = htmlspecialchars($password, ENT_QUOTES, 'UTF-8');
       
            $password = password_hash($password, PASSWORD_DEFAULT);
    
            if(verifier_token(300, URL . 'users/create', 'create_user')) 
            {
                $req = "INSERT INTO user(login, password, mail, admin, bl,
                dist, NomPrenom, demandevalidation, pilote, rs) 
                VALUES(:login, :password, :mail, :admin, :NomPrenom)";
                $stmt = $this->getBdd()->prepare($req);
                $stmt->bindValue(":login", $login, PDO::PARAM_STR);
                $stmt->bindValue(":password", $password, PDO::PARAM_STR);
                $stmt->bindValue(":mail", $mail, PDO::PARAM_STR);
                $stmt->bindValue(":admin", $admin, PDO::PARAM_INT);
                $stmt->bindValue(":NomPrenom", $NomPrenom, PDO::PARAM_STR);
                $resultat = $stmt->execute();
                $stmt->closeCursor();
    
                if ($resultat > 0) {
                    $user = new User(
                        $this->getBdd()->lastInsertId(),
                        $login,
                        $password,
                        $mail,
                        $admin,
                        $NomPrenom
                    );
                    $this->ajoutUser($user);
                    Toolbox::ajouterMessageAlerte("Ajout de l'utilisateur réussi", Toolbox::COULEUR_VERTE);
                    header('Location: ' . URL . "users", "X-XSS-Protection: 1; mode=block");
    
                } else {
                    Toolbox::ajouterMessageAlerte("Echec de l'ajout d'un utilisateur - Code erreur: #UM05", Toolbox::COULEUR_ROUGE);
                    header('Location: ' . URL . "users/create", "X-XSS-Protection: 1; mode=block");
                }
            }
            else {
                Toolbox::ajouterMessageAlerte("Le formulaire a expiré veuillez recharger la page et réessayer", Toolbox::COULEUR_ROUGE);
                header("location: " . URL . "users/create", "X-XSS-Protection: 1; mode=block");
            }
        }
    
        public function getListeDiffusion($mail) {
            $req = "SELECT nom FROM `mail` WHERE mail_to LIKE "%". :mail ."%"";
            $stmt = $this->getBdd()->prepare($req);
            $stmt->bindValue(":mail", $mail, PDO::PARAM_STR);
            $stmt->execute();
            $ListeDiffusion = $stmt->fetchAll(PDO::FETCH_ASSOC);
            $stmt->closeCursor();
    
            return $ListeDiffusion;
        }
    
    
        // Fonction de la modification d'un utilisateur
        public function modificationUserBd(
            $id,
            $login,
            $mail,
            $admin,
            $NomPrenom
        ) {
    
            $ListeDiffusion = getListeDiffusion($mail);
    
    
            $login = htmlspecialchars($login, ENT_QUOTES, 'UTF-8');
            $mail = htmlspecialchars($mail, ENT_QUOTES, 'UTF-8');
            $NomPrenom = htmlspecialchars($NomPrenom, ENT_QUOTES, 'UTF-8');
    
            if(verifier_token(300, URL . 'users/update/' . $id, 'update_user')) 
            {
                $req = "UPDATE user
                set login = :login, 
                mail = :mail, 
                admin = :admin, 
                NomPrenom = :NomPrenom
                WHERE id = :id";
                $stmt = $this->getBdd()->prepare($req);
                $stmt->bindValue(":id", $id, PDO::PARAM_INT);
                $stmt->bindValue(":login", $login, PDO::PARAM_STR);
                $stmt->bindValue(":mail", $mail, PDO::PARAM_STR);
                $stmt->bindValue(":admin", $admin, PDO::PARAM_INT);
                $stmt->bindValue(":NomPrenom", $NomPrenom, PDO::PARAM_STR);
    
                $resultat = $stmt->execute();
    
                $stmt->closeCursor();
    
                if ($resultat > 0) {
                    $this->getUserById($id)->setLogin($login);
                    $this->getUserById($id)->setMail($mail);
                    $this->getUserById($id)->setAdmin($admin);
                    $this->getUserById($id)->setNomPrenom($NomPrenom);
    
                    Toolbox::ajouterMessageAlerte("La modification a été effectuée avec succès", Toolbox::COULEUR_VERTE);
                    header('Location: ' . URL . "users", "X-XSS-Protection: 1; mode=block");
                }
            }
            else {
                Toolbox::ajouterMessageAlerte("Le formulaire a expiré veuillez recharger la page et réessayer", Toolbox::COULEUR_ROUGE);
                header("location: " . URL . "users", "X-XSS-Protection: 1; mode=block");
            }
    
        }

    Mon userController pareil un échantillon, c'est ici que j'appelle les fonctions de mon Manager :

    <?php
    require_once "models/UserManager.class.php";
    require_once 'models/Model.class.php'; // Connexion à la BDD
    
    class UserController extends Model
    {
        public $userManager;
    
        public function __construct()
        {
            $this->userManager = new UserManager;
            $this->userManager->chargementUsers();
        }
    
    
        public function afficherUsers()
        {
            $users = $this->userManager->getUser();
            require "views/user/users.view.php";
        }
    
        public function modificationUser($id)
        {
    
            $user = $this->userManager->getUserById($id);
            require "views/user/updateUser.view.php";
        }
    
        public function ajoutUser()
        {
            require "views/user/createUser.view.php";
        }
    
        public function motDePasseOublie()
        {
            require "views/motDePasseOublie.view.php";
        }
    
        public function ajoutuserValidation()
        {
    
            if (isset($_POST['admin'])){
                if ($_POST['admin'] === 'on') 
                    $_POST['admin'] = 1;   
            }
            else{
                $_POST['admin'] = 0;
            }
    
            $password = $_POST['password'];
            if (preg_match('#^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[@€\[$\]!?_-]).{12,}$#', $password)){
                if ($_POST['password'] === $_POST['passwordverif']) {
                    $this->userManager->ajoutUserBd(
                        $_POST['login'],
                        $_POST['password'],
                        $_POST['mail'],
                        $_POST['admin'],
                        $_POST['NomPrenom']                );
                    //header('Location: ' . URL . "users", "X-XSS-Protection: 1; mode=block");
                } else {
                    Toolbox::ajouterMessageAlerte("Les mots de passe ne sont pas les mêmes", Toolbox::COULEUR_ROUGE);
                    header('Location: ' . URL . "users/create", "X-XSS-Protection: 1; mode=block");
                }
            }
            else{
                Toolbox::ajouterMessageAlerte("Le mot de passe doit contenir au moins une majuscule, une minuscule, un chiffre, un caractère spéciale de cette liste (€,[,?,],!,$,@,-,_) et doit comporter au moins 12 caractères", Toolbox::COULEUR_ROUGE);
                header('Location: ' . URL . "users/create", "X-XSS-Protection: 1; mode=block");
            }
            
        }
    
        public function modificationUserValidation()
        {
    
            if ($_POST['admin'] != 'on') {
                $_POST['admin'] = 0;
            } else {
                $_POST['admin'] = 1;
            }
    
            $this->userManager->modificationUserBd(
                $_POST['id'],
                $_POST['login'],
                $_POST['mail'],
                $_POST['admin'],
                $_POST['NomPrenom']
            );
            // Toolbox::ajouterMessageAlerte("La modification a été effectuée avec succès", Toolbox::COULEUR_VERTE);
            // header('Location: ' . URL . "users", "X-XSS-Protection: 1; mode=block");
        }

    Ma class user : 

    <?php 
    
    class User {
        private $id;
        private $login;
        private $password;
        private $mail;
        private $admin;
    
        public function __construct(
            $id,
            $login,
            $password,
            $mail,
            $admin,
            $NomPrenom
    
        ) {
            $this->id = $id;
            $this->login = $login;
            $this->password = $password;
            $this->mail = $mail;
            $this->admin = $admin;
            $this->NomPrenom = $NomPrenom;
        }
    
        public function getId(){return $this->id;}
        public function setId($id){$this->id = $id;}
    
        public function getLogin(){return $this->login;}
        public function setLogin($login){$this->login = $login;}
    
        public function getPassword(){return $this->password;}
        public function setPassword($password){$this->password = $password;}
    
        public function getMail(){return $this->mail;}
        public function setMail($mail){$this->mail = $mail;}
    
        public function getAdmin(){return $this->admin;}
        public function setAdmin($admin){$this->admin = $admin;}
    
        public function getNomPrenom(){return $this->NomPrenom;}
        public function setNomPrenom($NomPrenom){$this->NomPrenom = $NomPrenom;}
    
    }

    Et la vue de update user, l'affichage : 

    <?php
    ob_start();
    $token = generer_token('update_user');
    ?>
    <form method="POST" action="<?= URL ?>users/updateValid">
        <div class="row">
            <div class="form-group col-6">
                <label for="type_alerte">Login</label>
                <input type="text" class="form-control" name="login" id="login" placeholder="" value="<?= $user->getLogin() ?>">
            </div>
            <div class="form-group col-6">
                <label for="dates_heures_alarme">Mail</label>
                <input type="text" class="form-control" name="mail" id="mail" placeholder="" value="<?= $user->getMail() ?>">
            </div>
        </div>
        <div class="row">
            <div class="form-group col-6">
                <label for="type_alerte">Nom et Prénom</label>
                <input type="text" class="form-control" name="NomPrenom" id="NomPrenom" placeholder="" value="<?= $user->getNomPrenom() ?>">
            </div>
            
                <div class="form-check form-check-inline">
                    <input class="form-check-input " type="checkbox" id="defaultCheck1" name="admin" <?php if ($user->getAdmin() == '1') {
                                                                                                            echo 'checked';
                                                                                                        } ?>>
                    <label class="form-check-label" for="defaultCheck1">
                        ADMIN
                    </label>
                </div>
                <div class="form-check form-check-inline">
                    <input class="form-check-input " type="checkbox" id="defaultCheck1" name="demandevalidation" <?php if ($user->getDemandeValidation() == '1') {
                                                                                                            echo 'checked';
                                                                                                        } ?>>
           
            <p><strong>Liste de diffusion :</strong> <?= UserManager::getListeDiffusion($mail); ?></p>
    
            <input type="hidden" name="id" value="<?= $user->getId(); ?>">
            <div class="form-group col-md-6">
                <br>
                <button type="submit" class="btn btn-primary bouton border-0" id="baseN2" data-mdb-ripple-color="dark" data-bs-toggle="modal" data-bs-target="#referencer">Modifier</button>
                <a href="<?= URL ?>users" class="btn btn-primary bouton border-0" id="vdcsolo">Annuler</a>
            </div>
        </div>
        <input type="hidden" name="token" id="token" value="<?php echo $token; ?>"/> 
    </form>
    <?php
    $content = ob_get_clean();
    $titre = "Modification de l'utilisateur " . $user->getLogin();
    require "views/template.php";
    ?>

    Voilà à peu près tout mon code qui concerne cette feature 

    0
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
       

      Et oui je parlais de table mais j'aimerais éviter de créer une clé étrangère ce n'est pas ma bdd.

      Il n'est pas obligatoire de créer une foreign key pour pouvoir faire une jointure dans une requête SQL ...

      Ensuite,  Je ne suis pas certain que ton code soit des plus optimisé ...  je ne sais pas si tu es en cours et que c'est un prof qui t'a demandé de faire comme ça...  mais niveau performances c'est moyen.

      Par exemple, pour récupérer un user via son ID .. tu charges tous tes users en mémoire et tu boucles dessus pour trouver celui qui t'interesse.

      Si tu n'as qu'un poignée de users ..ça passe .. mais si tu en as plusieurs milliers/millions... ça commence à faire beaucoup de tours dans la boucle pour rien ...

      L'idéal est directement de récupérer le user voulu via une simple requête SQL contenant un WHERE sur le champ voulu.

      Requête à laquelle tu peux donc mettre un jointure ( même sans avoir déclaré de FK ) pour récupérer les informations voulues...

      0
  3. Machopp
     

    Je savais pas du tout pour les jointures sans fk, merci.

    Oui je suis en alternance et je reprend le code de quelqu'un , ce n'est pas ma fonction on verra plus tard pour l'optimiser si tu veux bien j'aimerais réussir mon truc.

    J'ai donc modifier ma requête sql et je l'ai mise dans une fonction dans mon userManager :

    public function getListeDiffusion($mail) {
            $mail = $_POST['mail'];
            $req = "SELECT DISTINCT(nom) FROM `mail` JOIN user WHERE mail_to LIKE "%". $mail ."%";";
            $stmt = $this->getBdd()->prepare($req);
            $stmt->bindValue(":mail", $mail, PDO::PARAM_STR);
            $stmt->execute();
            $ListeDiffusion = $stmt->fetchAll(PDO::FETCH_ASSOC);
            $stmt->closeCursor();
    
            return $ListeDiffusion;
        }

    Et j'ai ajouté ça dans mon Controller : 

    public function ListeDiffusionUser($mail){
            $user = $this->userManager->getListeDiffusion();
            require "views/user/updateUser.view.php";
        }

    Et ma vue : 

            <p><strong>Liste de diffusion :</strong> <?= var_dump($user->ListeDiffusionUser($mail)); ?></p>
    

    Ça ne fonctionne donc tjr pas et me retourne cette erreur :

    Liste de diffusion :
    Fatal error: Uncaught Error: Call to undefined method User::ListeDiffusionUser() in C:\Applications\wamp64\www\portail\views\user\updateUser.view.php:71 Stack trace: #0 C:\Applications\wamp64\www\portail\controllers\UserController.controller.php(26): require() #1 C:\Applications\wamp64\www\portail\index.php(137): UserController->modificationUser('81') #2 {main} thrown in C:\Applications\wamp64\www\portail\views\user\updateUser.view.php on line 71

    Je ne comprend pas pourquoi il n'a pas accès à ma méthode ListeDiffusionUser().

    En attendant une réponse je vais regarder pour optimiser le bout de code que tu m'as dit.

    0
    1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 832
       

      Ta variable $user contient quoi ?

      Il me semble qu'elle fait déjà référence à : 

      $user = $this->userManager->getListeDiffusion();

      Fonction qui, normalement attend un paramètre ( $mail ) que tu ne lui transmets pas ??

      Maintenant deux questions :

      Es tu sûr de passer par ta fonction 

      ListeDiffusionUser

       de ton controller ??

      Et pourquoi ne pas avoir modifié ( la jointure) au niveau de ta class USER et ainsi la récupérer directement dans la page lorsque tu fais

         $users = $this->userManager->getUser();
      0
      1. Machopp > jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention  
         

        $user contient un array d'un user, var_dump($user):

        object(User)#7350 (11) { ["id":"User":private]=> string(3) "111" ["login":"User":private]=> string(8) "AAAA2727" ["password":"User":private]=> string(60) "$2y$10$dgzXSMJ7p"...

        Ça représente tous les enregistrement de ma table user pour mon user sélectionné ici l'user avec l'id 111 par exemple.

        J'ai ajouté $mail dans l'appel de ma fonction getListeDiffusion() dans mon Controller :

           public function ListeDiffusionUser($mail){
                $user = $this->userManager->getListeDiffusion($mail);
                require "views/user/updateUser.view.php";
            }

        Mais même erreur plus avec un bug d'affichage (genre sans css) 

        Nan j'suis pas sûr de passer par la fonction 

        ListeDiffusionUser

        J'avais essayé aussi au niveau de ma classe d'ajouter un getListeDiffusion mais ça ne va pas:

        <?php 
        
        class User {
            private $id;
            private $login;
            private $password;
            private $mail;
            private $admin;
            private $NomPrenom;
            private $listeDiffusion;
        
            public function __construct(
                $id,
                $login,
                $password,
                $mail,
                $admin,
                $NomPrenom,
                $listeDiffusion
            ) {
                $this->id = $id;
                $this->login = $login;
                $this->password = $password;
                $this->mail = $mail;
                $this->admin = $admin;
                $this->NomPrenom = $NomPrenom;
                $this->listeDiffusion = $listeDiffusion;
            }
        
            public function getListeDiffusion(){return $this->$listeDiffusion;}
        
            public function getId(){return $this->id;}
            public function setId($id){$this->id = $id;}
        
            public function getLogin(){return $this->login;}
            public function setLogin($login){$this->login = $login;}
        
            public function getPassword(){return $this->password;}
            public function setPassword($password){$this->password = $password;}
        
            public function getMail(){return $this->mail;}
            public function setMail($mail){$this->mail = $mail;}
        
            public function getAdmin(){return $this->admin;}
            public function setAdmin($admin){$this->admin = $admin;}
        
            public function getNomPrenom(){return $this->NomPrenom;}
            public function setNomPrenom($NomPrenom){$this->NomPrenom = $NomPrenom;}
        
        
        }

        Et ça me donne cette erreur : 

        Fatal error: Uncaught ArgumentCountError: Too few arguments to function User::__construct(), 11 passed in C:\Applications\wamp64\www\portail\models\UserManager.class.php on line 47 and exactly 12 expected in C:\Applications\wamp64\www\portail\models\User.class.php:17 Stack trace: #0 C:\Applications\wamp64\www\portail\models\UserManager.class.php(47): User->__construct('5', 'AAAA1111', 'dda8gb7e809685...', 'test.mail@...', '1', '1', '1', 'nom prénom', '1', '1', '0') #1 C:\Applications\wamp64\www\portail\controllers\UserController.controller.php(12): UserManager->chargementUsers() #2 C:\Applications\wamp64\www\portail\index.php(102): UserController->__construct() #3 {main} thrown in C:\Applications\wamp64\www\portail\models\User.class.php on line 17

        Si tu te demande d'où vienne les 1 et les 0 dans l'erreur ça correspond à des rôles qui sont bien instancier comme Admin par exmple dans la class user juste je les enlèves quand je vous envois mon code pour le raccourcir

        0
  4. blux Messages postés 19193 Date d'inscription   Statut Modérateur Dernière intervention   3 455
     

    Salut,

    Je savais pas du tout pour les jointures sans fk, merci.

    C'est généralement un truc qu'on cache aux utilisateurs débutants car ils nous font très rapidement des requêtes qui se transforment en produit cartésien et nous mettent les machines à genoux...


    -1