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

Fermé
Machopp - 6 déc. 2022 à 10:13
 Machopp - 8 déc. 2022 à 09:28

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 

A voir également:

4 réponses

jordane45 Messages postés 38156 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 4 mai 2024 4 655
6 déc. 2022 à 21:44

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

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
jordane45 Messages postés 38156 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 4 mai 2024 4 655
7 déc. 2022 à 10:22

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

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
jordane45 Messages postés 38156 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 4 mai 2024 4 655
7 déc. 2022 à 20:38

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
Machopp > jordane45 Messages postés 38156 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 4 mai 2024
8 déc. 2022 à 09:28

$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
blux Messages postés 26020 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 3 mai 2024 3 289
7 déc. 2022 à 14:39

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